Issue #5839 has been reported by Narihiro Nakamura.

----------------------------------------
Feature #5839: Proposal: Bitmap Marking GC
https://bugs.ruby-lang.org/issues/5839

Author: Narihiro Nakamura
Status: Open
Priority: Normal
Assignee: Yukihiro Matsumoto
Category: core
Target version: 2.0.0


????????¾ã????¦ã???????§ã?¨ã?????????????¾ã?????nari??§ã?????

???????????????????????¼ã?­ã?³ã??GC???Ruby2.0????????«ä???????¾ã????????

??½ã?¼ã?¹ã?³ã?¼ã??: https://github.com/authorNari/ruby/tree/bitmap_marking
?????????: https://github.com/authorNari/patch_bag/blob/master/ruby/gc_bitmap_using_alignment_r33786.patch

以ä????®ç?°å?????r33786 ??«å¯¾?????????????????? make check ??????????????¨ã??
make TESTS="--gc-stress" test-all ?????¡ä????«å???????¦ã???????¨ã??確è???????¦ã?¾ã?????

$ ruby -v
ruby 2.0.0dev (2011-11-18 trunk 33786) [x86_64-linux]

= ??§è?½è??ä¾?

== make benchmark
make benchmark OPTS="-r 5" ??®ç???????¯ä»¥ä¸???§ã?????
https://gist.github.com/1542547
??¨ä???????«å??è¡?????????¯è?¥å¹²???????ªã??????????§ã?????

?????¼ã?¯ã??RVALUE??®ã????©ã?°ã??ç«???¦ã?????????????£ã????®ã???????????????????????ä¸???®ã??
??©ã?°ã??ç«???¦ã??????????«ã?ªã????®ã?§é??????ªã????®ã?¯ã?????????????ªã???????ªã?¨â?¦ã??

== skkzipcode
???????????????????????¼ã?­ã?³ã?°ã?§ã?¯ã????¼ã?¯ã??RVALUE??«å¯¾?????¦æ?¸ã??è¾¼ã?¿ã????ªã???ªã????®ã?§ã??
Linux??§è????°ã?®å???????­ã?»ã?¹ã??å®?è¡?????????´å????«ã????¡é?????CoW?????ºç???????????ç·??¡ã?¢ã??
使ç?¨é????å°???ªã???ªã????¨ã???????©ç?¹ã??????????¾ã?????

skkzipcode??¨ã???????µã?³ã????«ã????­ã?°ã?©ã????§ä??è¨???®ç?¹ã??確è???????¾ã????????
skkzipcode??¯ã??親ã????­ã?»ã?¹ã?§ã????????????¡ã?¢ã?ªã??使ã?£ã?¦ã????¼ã?¿ã??ä¿?????????¦ã???????¦ã??
????????????å­??????­ã?»ã?¹ã?§è¦ª?????­ã?»ã?¹ã?¨å?±æ?????????????¼ã?¿ã????©ç?¨ã????¾ã?????
https://github.com/authorNari/skkzipcode
ï¼?/proc/PID/smaps???使ã?£ã?¦è??測ã????¦ã????¾ã??ï¼?

origin - ???????????????????????¼ã?­ã?³ã?°ã?ªã??
PROCESS_CNT : 5 
SHARED_TOTAL: 59124     kb
PRIV_TOTAL  : 224892    kb

bmap - ???????????????????????¼ã?­ã?³ã?°ã?????
PROCESS_CNT : 5 
SHARED_TOTAL: 170744    kb
PRIV_TOTAL  : 138336    kb

PROCESS_CNT??¯å???????­ã?»ã?¹ã?®æ?°ã??SHARED_TOTAL??¯å???????­ã?»ã?¹ã?§å?©ç?¨ã????¦ã???????±æ??
??¡ã?¢ã?ªé????PRIV_TOTAL??¯ç???????¡ã?¢ã?ªé???§ã?????bmap??®æ?¹ã????±æ????¡ã?¢ã?ªã??沢山使ã??
??¦ã??????????¨ã?????????????ç§??????¡ã?¢ã?ªä½¿??¨é????å°???ªã???ªã?£ã?¦ã????¾ã?????

= ��
å®?è£???«ã?¤ã????¦ç°¡?????«ã?¾ã?¨ã????¾ã?????

- ???????????????????¡Öç´¢é??????????®ã?????????????¼ã??1?????­ã????¯ã?®ã?¢ã????¬ã?¹ã??16KB??§ã?¢ã?©ã??
  ??³ã?¡ã?³ã???????¦ã?????
-- Linux??§ã??posix_memalign(),memalign()?????©ç??
-- Windows??§ã??_aligned_malloc()?????©ç??
- ??¡é????ªæ?¸ã??è¾¼ã?¿ã????²ã?????????????ªã????¹ã??freelist???ç¹??????????ªã??????????«ã?????
-- GC??®æ????«ã????§ã??freelist??«ç????ªã???????¦ã???????ªã????¸ã?§ã?¯ã????????度ç?????´ã????ªã??
- freelist??¯ã?¹ã?­ã?????????????¤ã???????«ã?ªã?£ã??
-- ä¸?è¦???ªã?¹ã?­ã????????è§£æ?¾ã???????¨ã????«ã?°ã?­ã?¼ã????«ã??freelist??«ã?ªã????¸ã?§ã?¯ã?????ç¹?
   ????????¦ã???????½æ?§ã????§ã?¦ã??????????
- struct heaps_slot????????¼ã???????­ã????¯ã?«å?????è¾¼ã?????

Linux???fork()???使ã???ªã??????????ªã????­ã?°ã?©ã????«å¯¾?????¦ã?¯ã??????????????????????¼ã?­ã?³ã??
??®æ?©æ?µã?¯ã???????¾ã?????????????????CRuby??§ä¸¦????????­ã?°ã?©ã????³ã?°ã??????????¨ã???????¨ã????«ã??
fork()???使ã?£ã?¦ä?????????????©ã?¤ã????©ã?ªã???????£ã?????å¤??????®ã?§ï??ä¾???????passenger??¨ã????¦ï??
?????????????????®ã?«å¯¾?????¦ã?¯ç??æ§???¹ã???¯ã????§ã?????

GC??®å??è¡??????????????????»ã?©é??????ªã????¾ã???????®ã?§ã??fork()???使ã???ªã???????­ã?°ã?©ã?????
???????????»ã?©å????«ã?ªã????ªã????¨æ????£ã?¦ã????¾ã?????



-- 
http://redmine.ruby-lang.org