[#42564] [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Makoto Kishimoto <redmine@...>

Feature #4043: =E3=82=B0=E3=83=AD=E3=83=BC=E3=83=90=E3=83=AB=E9=96=A2=E6=95=

15 messages 2010/11/11
[#42774] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Yukihiro Matsumoto <matz@...> 2010/12/16

まつもと ゆきひろです

[#42834] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp> 2010/12/21

きしもとです

[#42835] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Yukihiro Matsumoto <matz@...> 2010/12/21

まつもと ゆきひろです

[#42838] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp> 2010/12/21

きしもとです

[#42845] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Yukihiro Matsumoto <matz@...> 2010/12/21

まつもと ゆきひろです

[#42577] Rubyのバグレポートのガイドライン — "Shota Fukumori (sora_h)" <sorah@...>

sora_hです。

11 messages 2010/11/15
[#42588] Re: Rubyのバグレポートのガイドライン — Yugui <yugui@...> 2010/11/18

2010/11/15 Shota Fukumori (sora_h) <sorah@tubusu.net>:

[#42638] Enumerable#categorize — Tanaka Akira <akr@...>

enumerable から hash を生成するメソッドとして

25 messages 2010/11/27
[#42643] Re: Enumerable#categorize — Yukihiro Matsumoto <matz@...> 2010/11/27

まつもと ゆきひろです

[ruby-dev:42509] memory usage of test-all

From: SASADA Koichi <ko1@...>
Date: 2010-11-01 17:44:11 UTC
List: ruby-dev #42509
 ささだです。

 test-all がメモリ食いなので、調べていたんですが、ちょっと挙動がよくわ
からないので、調べた結果を dump しておきます。原因を考えてみたんですが、
よくわかりませんでした。

----

物理メモリの消費の経過。 test_* メソッド実行ごとに計測。

横軸が時間経過(テストを実行した回数)
縦軸が /proc/self/statm で見た resident(物理メモリ量・単位 MB)
http://www.atdot.net/fp_store/f.skt7bl/file.graph.png

resident (lazy) 	ふつーに test-all したもの
resident (don’t_lazy)	lazy sweep を禁止して test-all したもの
resident (memsize_of)	毎回、memsize_of_all を実行したもの
resident (each_object)	毎回 ObjectSpace.each_object したもの
resident (all)		GC.stat と memsize_of_all を実行したもの
resident (clear stack)	毎回、alloca(4KB) して、0 クリアしたもの
resident (gc)		毎回、GC したもの

Excel の生データ:
http://www.atdot.net/fp_store/f.krv7bl/file.test-all-memory-usage.xlsx


VM 上の Linux で実行しており、775936 kBの物理メモリを割り当てている。メ
モリ不足のため、途中で中断している。
> resident (lazy)
> resident (don’t_lazy)
> resident (clear stack)

*というか、この「途中で中断」しちゃうので、test-all が開発環境で
 まともに走らないで困っている。
-> この問題自体は、GC.start をスレッド大量生成するテストの後で
   入れれば解決すると思うのですが、挙動自体に疑問があるため調べてます


 ガクンとメモリ消費があがっているところは、スレッドを(大量に?)作成し
ているところだということがわかっています。

 毎回 GC すると、ところどころピークが見えますが、メモリ消費はかなりおさ
えられています。

 なぜか、memsize_of_all などで最後まで走りきるようになっています。メモ
リ消費も、それなりに小さい。メモリ消費が抑えられているようです。lazy
sweep を途中でキャンセルするからかな、とも思ったんですが、ならば don't
lazy でも同じ挙動になるはずです。なぜ、memsize_of_all/each_object にする
と、メモリ消費が抑えられるのか、謎です。

 clear stack は、最後まで走りきらなかったけど、途中でそれなりの効果。

 あと、GC が発生すれば、resident (gc) 程度までメモリ消費が減ることが理
想ですが、そうはなっていません。この辺は、malloc/free のタイミングが変わ
るので、そのフラグメンテーションのせい、という気もします。

 スレッド終了と、その利用リソース回収のタイミングで変なことが起こってい
るのか? 実は、GC とか、そういう工夫じゃなくて、テスト間にウェイトを置
けばいい、とか?

 というわけで、とりとめもなく。興味がある人がいたら調べて貰えるといいか
なぁと。

-- 
// SASADA Koichi at atdot dot net

In This Thread

Prev Next