[SCore-users-jp] Re:メモリの解放について
Hisaki Honjo
honjo @ murata.co.jp
2004年 4月 27日 (火) 14:43:47 JST
亀山様
すばやいレスありがとうございます。
> > 現在、ある程度大きなメモリを「一時的」に必要とするシステムを作成しています。
> > この、「一時的」なメモリは不要になったらすぐに解放しているのですが、
> > どうも、プロセスが終了するまで解放されていないような挙動を示します。
>
> はい.
> SCore では zerocopy 通信により他のプログラムの領域を読み書き
> させないため確保した memory を開放しないようにしています.
なるほど。
言われてみればあたりまえの事ですね。
> > ただし、1ノードのみの実行だと解放実行直後に
> > ちゃんとメモリが解放されていることが確認されています。
> > つまり、複数台で並列化した場合のみ発生します。
>
> 1 process の場合は通信を行わないので, この処理を行っていません.
>
> > 補足:システムはテスト段階のため、非力なPCを使用しています。
> > そのため、一時領域を作成する時点で物理メモリが圧倒的に不足しており、
> > 殆どスワップメモリが使用されます。
> これは, 内部で
> mallopt(M_TRIM_THRESHOLD, LONG_MAX);
> にあたることを行っています.
> M_TRIM_THRESHOLD で malloc で開放しないサイズの最大値を与えます.
> zerocopy k通信を行わない (-mpi_zerocopy をつけない) のであれば
> mallopt() を明示的に呼び出して開放するようにすることはできますけど...
そうですか。
malloptを使ったりする小細工はあまりよくない気がするので、
なんとか仕組みを見直して、巨大メモリを消費しないように工夫したいと思います。
ありがとうございました。大変参考になりました。
今後ともよろしくお願いいたします。
------------------------
本庄 央樹(Honjo Hisaki)
------------------------
SCore-users-jp メーリングリストの案内