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/