[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 メーリングリストの案内