https://redmine.ruby-lang.org/
https://redmine.ruby-lang.org/favicon.ico?1711330511
2009-11-04T09:06:29Z
Ruby Issue Tracking System
Ruby master - Feature #2328: malloc_limit の肥大化を防ぎたい
https://redmine.ruby-lang.org/issues/2328?journal_id=6661
2009-11-04T09:06:29Z
matz (Yukihiro Matsumoto)
matz@ruby.or.jp
<ul></ul><p>=begin<br>
まつもと ゆきひろです</p>
<p>In message "Re: <a href="https://blade.ruby-lang.org/ruby-dev/39632">[ruby-dev:39632]</a> [Feature <a class="issue tracker-2 status-6 priority-4 priority-default closed" title="Feature: malloc_limit の肥大化を防ぎたい (Rejected)" href="https://redmine.ruby-lang.org/issues/2328">#2328</a>] malloc_limit の肥大化を防ぎたい"<br>
on Wed, 4 Nov 2009 08:28:12 +0900, _ wanabe <a href="mailto:redmine@ruby-lang.org" class="email">redmine@ruby-lang.org</a> writes:</p>
<p>|何らかの原因で malloc_limit が肥大化してしまうと、GC のタイミングが遅れて<br>
|Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: fiber tests kill windows (Closed)" href="https://redmine.ruby-lang.org/issues/1325">#1325</a> のように異常なほどのスワップや NoMemoryError を引き起こしかねません。<br>
|改善案としてパッチを二つ書きました。よろしければご検討ください。<br>
|また、このパッチが問題になるケースがあれば教えていただけるとありがたいです。</p>
<p>私は思いつきません。ベンチマーク(こんなケースでこんなに改善<br>
とか、こんなケースでは悪くならないとか)があると採用しやすい<br>
と思います。</p>
<p>=end</p>
Ruby master - Feature #2328: malloc_limit の肥大化を防ぎたい
https://redmine.ruby-lang.org/issues/2328?journal_id=6668
2009-11-04T21:01:40Z
wanabe (_ wanabe)
s.wanabe@gmail.com
<ul><li><strong>File</strong> <a href="/attachments/664">test.rb</a> <a class="icon-only icon-download" title="Download" href="/attachments/download/664/test.rb">test.rb</a> added</li><li><strong>File</strong> <a href="/attachments/665">log.txt</a> <a class="icon-only icon-download" title="Download" href="/attachments/download/665/log.txt">log.txt</a> added</li></ul><p>=begin</p>
<blockquote>
<p>私は思いつきません。ベンチマーク(こんなケースでこんなに改善<br>
とか、こんなケースでは悪くならないとか)があると採用しやすい<br>
と思います。</p>
</blockquote>
<p>ありがとうございます。改善される例とその実行結果を添付しました。<br>
悪くならないケースはそれらしいものが思いつきませんでした。すみません。</p>
<p>malloc/realloc の後に、1MB の文字列を 2000 個生成しています。<br>
リネームの都合上 miniruby ですが、恐らく ruby でもあまり変わらないと思います。<br>
-v は、いずれも ruby 1.9.2dev (2009-11-02 trunk 25630) [i386-mingw32] です。</p>
<p>まとめると、以下のような結果になりました。<br>
メモリの潤沢な環境では、数値をいじらないと差が出ないかもしれません。</p>
<p>通常の miniruby, 大量 realloc 後: 277 秒(GC: 12 回)<br>
パッチ 1 適用時, 大量 realloc 後: 10 秒(GC: 286 回)<br>
パッチ 2 適用時, 大量 realloc 後: 285 秒(GC: 13 回)<br>
両パッチ 適用時, 大量 realloc 後: 10 秒(GC: 286 回)</p>
<p>通常の miniruby, 大量 malloc 後: 141 秒(GC: 30 回)<br>
パッチ 1 適用時, 大量 malloc 後: 155 秒(GC: 30 回)<br>
パッチ 2 適用時, 大量 malloc 後: 27 秒(GC: 66 回)<br>
両パッチ 適用時, 大量 malloc 後: 29 秒(GC: 66 回)</p>
<p>なお手元では、両パッチ適用後 make test-all が 3722 秒 から2435 秒になりました。<br>
(ブロックしてしまうので test_io.rb の test_dup_many はスキップしていますが)<br>
=end</p>
Ruby master - Feature #2328: malloc_limit の肥大化を防ぎたい
https://redmine.ruby-lang.org/issues/2328?journal_id=6680
2009-11-05T01:05:31Z
matz (Yukihiro Matsumoto)
matz@ruby.or.jp
<ul></ul><p>=begin<br>
まつもと ゆきひろです</p>
<p>In message "Re: <a href="https://blade.ruby-lang.org/ruby-dev/39636">[ruby-dev:39636]</a> [Feature <a class="issue tracker-2 status-6 priority-4 priority-default closed" title="Feature: malloc_limit の肥大化を防ぎたい (Rejected)" href="https://redmine.ruby-lang.org/issues/2328">#2328</a>] malloc_limit の肥大化を防ぎたい"<br>
on Wed, 4 Nov 2009 21:01:41 +0900, _ wanabe <a href="mailto:redmine@ruby-lang.org" class="email">redmine@ruby-lang.org</a> writes:</p>
<p>|> 私は思いつきません。ベンチマーク(こんなケースでこんなに改善<br>
|> とか、こんなケースでは悪くならないとか)があると採用しやすい<br>
|> と思います。<br>
|<br>
|ありがとうございます。改善される例とその実行結果を添付しました。<br>
|悪くならないケースはそれらしいものが思いつきませんでした。すみません。</p>
<p><略></p>
<p>ありがとうございます。とても説得力のあるベンチマークだと思い<br>
ました。人工的なテストだけでなく、test-allも性能が改善してい<br>
る点が好印象です。</p>
<p>コミットしていただけませんか?</p>
<p>=end</p>
Ruby master - Feature #2328: malloc_limit の肥大化を防ぎたい
https://redmine.ruby-lang.org/issues/2328?journal_id=6682
2009-11-05T02:00:34Z
wanabe (_ wanabe)
s.wanabe@gmail.com
<ul></ul><p>=begin<br>
すみません、そのあと遠藤さんに追試をしていただいたのですが(ありがとうございます)<br>
人工的なテストの結果は再現せず、また make test-all ではむしろ 434 秒 -> 469 秒と<br>
悪化してしまったそうです。<br>
3 回ずつのテストで誤差は±3秒ほどだったそうなので信頼できる値だと思います。</p>
<p>なので、環境依存で結果が大きく変わるものであることは間違いないようです。<br>
かえって遅くなる場合があるというのは大問題だと思いますので<br>
大変申しわけないのですが Reject 扱いにしていただけないでしょうか。<br>
=end</p>
Ruby master - Feature #2328: malloc_limit の肥大化を防ぎたい
https://redmine.ruby-lang.org/issues/2328?journal_id=6683
2009-11-05T02:17:38Z
wanabe (_ wanabe)
s.wanabe@gmail.com
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Rejected</i></li></ul><p>=begin</p>
<p>=end</p>