[#24105] [Bug #1711] Marshal Failing to Round-Trip Certain Recurisve Data Structures — Run Paint Run Run <redmine@...>

Bug #1711: Marshal Failing to Round-Trip Certain Recurisve Data Structures

9 messages 2009/07/01

[#24116] [Bug #1715] Numeric#arg for NaN is Inconsistent Across Versions — Run Paint Run Run <redmine@...>

Bug #1715: Numeric#arg for NaN is Inconsistent Across Versions

10 messages 2009/07/02

[#24240] [Bug #1755] IO#reopen Doesn't Fully Associate with Given Stream on 1.9; Ignores pos on 1.8 — Run Paint Run Run <redmine@...>

Bug #1755: IO#reopen Doesn't Fully Associate with Given Stream on 1.9; Ignores pos on 1.8

8 messages 2009/07/09

[#24321] [Bug #1773] Gem path doesn't honor user gem? — Lin Jen-Shin <redmine@...>

Bug #1773: Gem path doesn't honor user gem?

12 messages 2009/07/14

[#24390] [Feature #1784] More encoding (Big5 series) support? — Lin Jen-Shin <redmine@...>

Feature #1784: More encoding (Big5 series) support?

12 messages 2009/07/16

[#24467] Re: [ruby-cvs:31226] Ruby:r24008 (ruby_1_8_6): Removed private on to_date and to_datetime. — Urabe Shyouhei <shyouhei@...>

Hello.

10 messages 2009/07/21

[#24472] [Feature #1800] rubygems can replace system executable files — Kazuhiro NISHIYAMA <redmine@...>

Feature #1800: rubygems can replace system executable files

13 messages 2009/07/21

[#24530] [Feature #1811] Default BasicSocket.do_not_reverse_lookup to true — Roger Pack <redmine@...>

Feature #1811: Default BasicSocket.do_not_reverse_lookup to true

9 messages 2009/07/23

[#24624] [Bug #1844] Immediates Should Not Respond to :dup — Run Paint Run Run <redmine@...>

Bug #1844: Immediates Should Not Respond to :dup

15 messages 2009/07/30

[ruby-core:24229] threaded gc for the sweep phase?

From: Roger Pack <rogerdpack@...>
Date: 2009-07-09 05:13:23 UTC
List: ruby-core #24229
Typically for me the GC spends about 50% of its time in mark phase,
50% in sweep phase.  Around there somewhere.

Question.  Would it be possible to do the sweep phase in a separate thread?

something like:

mark phase as currently is.
sweep phase creates a "second" freelist in other thread. during the
sweep phase calls to rb_newobj mark outgoing objects appropriately so
they aren't collected by the sweep thread.  Some how or other race
conditions could be avoided.

Thus
1) no contention between two freelists
2) typically the GC is called without exhausting the freelist, thus
the main thread could continue running.

Note: use of ObjectSpace.each_object and weakrefs would need to be
synchronized to always allow any GC sweep thread to finish first.

On a multiple core machine could save time for the main thread.  On a
single core machine it would enable the main thread to not be
interrupted as long by the GC [though it would run slower during the
swep phase, at least it would run]

Thoughts?
=r

In This Thread

Prev Next