Issue #7095 has been updated by authorNari (Narihiro Nakamura).


???????????®ã?¬ã????¥ã?¼ã??????????¨ã?????????????¾ã??ï¼?

kosaki (Motohiro KOSAKI) wrote:
> 2012/10/1 SASADA Koichi <ko1 / atdot.net>:
>  > (2012/10/02 0:21), authorNari (Narihiro Nakamura) wrote:
(snip)
>  > ???????ªã?£ã?¦ã????ªã??ï¼???¨ã??????????¨ã?§ï???????¡ã?ªã????????????????¤ã????ªã????®ã?§ã??????????????
>  > ????????ªã???????¨æ???????¾ã??ï¼????´ã????????ï¼??????????????????¾ã???????¢ç?®ã?«èª­?????§ã?ªã???????©ï??ï¼?
>  >
>  >
>  > ?????¾ã????¬è³ª????????ªã???????§ã?????ï¼?
>  > - page ??¨ã?????è¨??????¯é?©å????§ã???????????ï¼?
>  
>  ??ªã????? page size ??? 4k??¨æ±º????????£ã?¦é??ç®?????????¦ã?????????????ªã?»ã?»ã??
>  malloc???使ã?£ã?¦ã???????®ã?§ã????¼ã?¸ã?µã?¤ã?ºã?????å°???????¦ã????ªå½±??¿ã???????¾ã????§ã???????«ã?ªã????????
>  

>  > - +#ifndef __LP64__ ??¯æ?¬å????«ã???????????????????????????????????ï¼????? -2 ??£ã?¦ä??ï¼?
>  
>  Linux + glibc???å®???????malloc header???size_t*2??ªã?®ã?§ã???????§å??????¨ã?????決ã???????¡ã?³ã?¼ã????«è???????¦ã????¾ã????»ã?»ã??

????????????æ°???«ã????????¾ã???????¦ã??
?????®è¾º??¯ã???????¾ã????¹æ????ªã??????????ªã?®ã?§ã????­ã????¼ã?«æ±º????????¡ã??????????¨æ???????¾ã?????

page??¯ç???????????????®ã??chunk??¨ã?????segment???????????§ã???????­ã??

>  > - GC ??®åº¦??«æ??? mallocï¼??????????????????£ã??ï¼????????1?????¼ã?¸ã?¯æ???????? alloc ??????
>  > ??????????????®ã????ªï??
>  
>  äº?度ã??free?????ªã????¦ç?¥ã?¨ã?????????????¡ã?ªã?®ã????ªã?¼ã?¨ã??????????¾ã???????????????????mark??®ã?¨ã????«ã?¹ã?¿ã????¯ã????????以ä????????使ã???ªã????£ã?????ï¼??????¼ã?¸ã?????è§£æ?¾ã???????¨ã????«ã????¦å???????«é?·ã?????調æ?´ã????????????????«ã???????¨ã??
>  

ä»???¯æ±º????????¡ã??4??¤ã?????free?????ªã????¦ç?¥ã?«ã?ªã?£ã?¦ã????¾ã?????
å°???????®ã?????????????????使ç?¨ã?????stack??®é?·ã????«å???????¦å?¸®??????????????«ä¿®æ­£ã??????????¨æ???????¾ã?????
ï¼?????????ªã?«æ???????§ã?¯ã?ªã????¨æ???????¾ã????®ã?§ï??
----------------------------------------
Bug #7095: Non-recursive marking
https://bugs.ruby-lang.org/issues/7095#change-29933

Author: authorNari (Narihiro Nakamura)
Status: Open
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-09-25 trunk 37032) [x86_64-linux]


nari??§ã?????

GC??®ã????¼ã?­ã?³ã?°ã?§é?¢æ?°ã?®å??帰å?¼ã?³å?ºã?????使ã???ªã???????¼ã?¸ã?§ã?³ã????¸ã????¦ã?¿ã?¾ã????????

å·®å??: https://github.com/authorNari/ruby/compare/non_recursion_marking
?????????: https://github.com/authorNari/ruby/compare/non_recursion_marking.patch

= ??¶ã?®å?????
??¨ã?®ã????¼ã?¯ã?¯ã????ºæ?¬ç????«ã?¯ã?ªã????¸ã?§ã?¯ã?????å­???ªã????¸ã?§ã?¯ã?????å­«ã?ªã????¸ã?§ã?¯ã??
??¨ã??gc_mark()??????帰ç????«å?¼ã?³å?ºã????¨ã?????å®?è£???«ã?ªã?£ã?¦ã????¾ã?????
???????????ªã????¸ã?§ã?¯ã?????????????±ã????°ã?©ã??????????£ã?¦ã???????´å????«ã?¯ã????·ã?³ã?¹ã?¿ã?????
???溢ã????¦ã????¾ã????®ã?§ã??GC??????????????¹ã?¿ã????¯ã??溢ã?????????????¨å?¤æ?­ã???????¨ã?????以ä??
??¯ã????·ã?³ã?¹ã?¿ã????¯ã??使ã???ªã????¹æ????§ã????¼ã?¯ã??è¡?????????¨ã????¾ã?????

??¨ã?®ã????¼ã?¯ã?«ã?¯æ¬¡???2??¤ã?®å?????????????¨è???????¦ã????¾ã?????

1. ?????§ã?®æ·±?????ªã????¸ã?§ã?¯ã?????å¤???????????¨ã????¼ã?­ã?³ã?°ã?????????ªã??
2. ??¹ã?¿ã????¯ã?ªã?¼ã????¼ã????­ã?¼ã??æ¤???¥ã???????¢æ?°ã?®ç²¾åº¦ã????ªã??

1.??«ã?¤ã????¦ã?§ã?????????????§ã?¤ã?«ã?»ã?¼ã????§ã??????????·ã?³ã?¹ã?¿ã????¯ã??使ã???ªã???????¼ã?¯ã??
??¹æ??????????ªã?®å?´å??????????¼ã???????¨èµ°??»ã????ªã?®ã?§ã????¯ã?¼ã?¹ã????±ã?¼ã?¹ã??çµ?æ§?????????§ã?????
?????????????????§ã?®æ·±????????¼ã?¿ç¾¤?????????æ®????ç¶?????????????GC???????????¾ã????¾ã?ªã?®ã?§ã?????
??¯ã???????¾ã??å¬????????ªã????§ã?????

2.??«ã?¤ã????¦ã?§ã????????以ä????®å?±å????§ã?????????????????
https://bugs.ruby-lang.org/issues/3781
??¨ã?®ã????·ã?³ã?¹ã?¿ã????¯ã?®ã?ªã?¼ã????¼ã????­ã?¼ã????§ã????¯ã?¯ã???????ªã??精度??§ã???????ªã????
??¦ã????¾ã??????????®ã???????¹ã?¿ã????¯é???????????常ã?«å?????????´å??ï¼??????¨ã?????
FIBER_USE_NATIVE ????????¹ã?ªã?±ã?¼ã?¹ï????§ã?¯ã???????ªã??????¼ã?­ã?³ã?°ã?§ã?®ã????§ã????¯ã??æ¼?
?????¦ã????¾ã??????????¾ã??SEGV????????????????§ã?????
# ä¸?è¨???®ã????±ã???????§ã?¯é??å¼µã?£ã?¦ç?´ã????¦ã?¿ã????®ã?§ã?????????????§ã????ªã??SEGV??£ã?¦ã?????
# ?????¨ã???????²ã?????çµ?è«???«ã?ªã????¾ã????????

= ??¹å??æ¡?
??ªå????§ã?¹ã?¿ã????¯æ????????ä½????????????????使ã?£ã?¦é?????帰ç????«ã????¼ã?­ã?³ã?°ã???????¨ã????????
???ä»??????®æ??æ¡???§ã???????¢æ?°ã?«ã????????帰å?¼ã?³å?ºã?????使ã???ªã????®ã?§ä??è¨???®å????¯ã?ªã??
??ªã????¾ã?????

= ???度æ?¹å??
mark benchmark OPTS="-r 5" ???èµ°ã???????¦ã?¿ã????¨ã????????????????ªã????«æ?©ã???ªã?£ã?¦ã??
???????????§ã?????

https://gist.github.com/3806667
(target 0???修正???, target 1?????????帰ç???????¼ã?­ã?³ã?°ï??
"average total difference is -7.793935319666676"

??¾ã??????????§é?¢ä????®æ·±?????ªã????¸ã?§ã?¯ã????????????«ä??????????³ã???????¼ã?¯ã?§æ???°æ?ªã????¦ã??
??????ï¼????????????¾ã????§ã?????ï¼???????帰ç???????¼ã?­ã?³ã?°ã?®ã?»ã???????©ã???ªã????¾ã????????
https://gist.github.com/3812118

depth???240??®å?´å??
origin ç·?GC??????(sec): 1.96
non-recursive ç·?GC??????(sec): 1.87

depth???500??®å?´å??
origin ç·?GC??????(sec): 14.73
non-recursive ç·?GC??????(sec): 5.49



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