Actions
Backport #10559
closedUnexpected copy on write when running GC in 2.1.3
Status:
Closed
Assignee:
-
Description
Memory is duplicated when forking and calling GC in 2.1.3.
We have written a small program that reproduces the issue (see attached file).
- The program instantiates an object and then forks into two processes.
- The GC is called in the child process.
- The memory allocation (as given by /proc/pid/smaps) changes from shared to private, thereby indicating a doubling of memory consumption.
Here is the output of the program (size is in mb):
ruby version 2.1.3
time pid message shared private
4.011s 4723 Parent pre GC 68 0
4.013s 4737 Child pre GC 68 0
8.019s 4723 Parent post GC 5 62
8.093s 4737 Child post GC 5 66
We have tested the program on Ubuntu 14.04 with ruby 2.1.3 and 2.1.5.
We have also tried to fork 10 children and see a 10 doubling of the memory consumption, the issue only occurs after running the GC.
Files
Actions
Like0
Like0Like0