[ruby-dev:39632] [Feature #2328] malloc_limit の肥大化を防ぎたい

View: New views
2 Messages — Rating Filter:   Alert me  

[ruby-dev:39632] [Feature #2328] malloc_limit の肥大化を防ぎたい

by Bryan McLellan-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Feature #2328: malloc_limit の肥大化を防ぎたい
http://redmine.ruby-lang.org/issues/show/2328

起票者: _ wanabe
ステータス: Open, 優先度: Normal
カテゴリ: core, Target version: 1.9.x

何らかの原因で malloc_limit が肥大化してしまうと、GC のタイミングが遅れて
Bug #1325 のように異常なほどのスワップや NoMemoryError を引き起こしかねません。
改善案としてパッチを二つ書きました。よろしければご検討ください。
また、このパッチが問題になるケースがあれば教えていただけるとありがたいです。

1. vm_xrealloc() での malloc_increase のチェックおよび増加量の抑制

vm_xrealloc() では、malloc_increase は上限チェック無しで増加しており、
これは上記の問題につながります。
単純に vm_xmalloc() と同様の上限チェックを行うと GC が起こりすぎるので、
malloc_increase の増加量を、それまでの増加量の平均値(よりやや小さい値)だけ
抑制することで、メモリ使用量の近似値を取り、GC 回数を減らしました。

2. GC ごとの malloc_limit の直接的な減少

1. の対策をとっても、例えば malloc_increase が上限に近いときに大きなサイズの
malloc がされることが続いた場合、malloc_limit は減少することなく増加し続けます。
膨大なメモリを使う場合やプロセスの寿命が長い場合は特に蓄積量が大きいと思われます。
この対策として、GC のたびに malloc_limit を何割かずつ減らすのはどうでしょうか。
パッチでは 1/16 ほどの値を減らしています。


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


[ruby-dev:39633] Re: [Feature #2328] malloc_limit の肥大化を防ぎたい

by Yukihiro Matsumoto :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

まつもと ゆきひろです

In message "Re: [ruby-dev:39632] [Feature #2328] malloc_limit の肥大化を防ぎたい"
    on Wed, 4 Nov 2009 08:28:12 +0900, _ wanabe <redmine@...> writes:

|何らかの原因で malloc_limit が肥大化してしまうと、GC のタイミングが遅れて
|Bug #1325 のように異常なほどのスワップや NoMemoryError を引き起こしかねません。
|改善案としてパッチを二つ書きました。よろしければご検討ください。
|また、このパッチが問題になるケースがあれば教えていただけるとありがたいです。

私は思いつきません。ベンチマーク(こんなケースでこんなに改善
とか、こんなケースでは悪くならないとか)があると採用しやすい
と思います。