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