-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bump the revision of mmtk-core and ruby repos #109
Conversation
Updated mmtk-core to fix a race that caused GC workers to sometimes observe copied objects not having VO bits. See: mmtk/mmtk-core#1214 The ruby repo is merged with the official master branch. Fixes: mmtk#106
|
When running locally, I observed that the heap size grew too slowly when using puts "Creating the hash..."
hash = {}
puts "Preparing the hash..."
("aaaa".."matz").each_with_index do |s, i|
hash[s] = i
end
puts "Doing the eval..."
begin
eval "class C; @@h = #{hash.inspect}; end"
end
puts "Done. Goodbye!" Here is a log when using MarkSweep, using the default dynamic heap size setting that ranges from 2M to 80% total physical memory (which is hardly reachable).
The heap size increases slowly while preparing the hash, and stays almost the same while evaluating. The problems is, the heap size doesn't increase fast enough. After each GC, it only increases the heap size by a small amount, while the heap consists of mostly live objects. Therefore, the next GC will happen very soon. As a result, it triggers GC way too often, and each GC costs, especially for slow GC algorithms like MarkSweep. The command line arguments If we change to a fixed heap size (such as 100M), that test case will finish very quickly. The following is what happens when using a fixed 80M heap size.
I chose to use dynamic heap size exactly because it triggers GC very often, which can be used to stress the GC. But for |
Run bootstraptest/test_eval.rb with a fixed heap size.
34f2b61
to
08a7e8d
Compare
Updated mmtk-core to fix a race that caused GC workers to sometimes observe copied objects not having VO bits. See:
mmtk/mmtk-core#1214
The ruby repo is merged with the official master branch.
Fixes: #106