[SCore-users-jp] メモリの解放について
kameyama @ pccluster.org
kameyama @ pccluster.org
2004年 4月 27日 (火) 12:13:30 JST
亀山です.
In article <200404271111.IGG92980.PKPOI @ murata.co.jp> Hisaki Honjo <honjo @ murata.co.jp> wrotes:
> 現在、ある程度大きなメモリを「一時的」に必要とするシステムを作成しています。
> この、「一時的」なメモリは不要になったらすぐに解放しているのですが、
> どうも、プロセスが終了するまで解放されていないような挙動を示します。
はい.
SCore では zerocopy 通信により他のプログラムの領域を読み書き
させないため確保した memory を開放しないようにしています.
> ただし、1ノードのみの実行だと解放実行直後に
> ちゃんとメモリが解放されていることが確認されています。
> つまり、複数台で並列化した場合のみ発生します。
1 process の場合は通信を行わないので, この処理を行っていません.
> 補足:システムはテスト段階のため、非力なPCを使用しています。
> そのため、一時領域を作成する時点で物理メモリが圧倒的に不足しており、
> 殆どスワップメモリが使用されます。
これは, 内部で
mallopt(M_TRIM_THRESHOLD, LONG_MAX);
にあたることを行っています.
M_TRIM_THRESHOLD で malloc で開放しないサイズの最大値を与えます.
zerocopy k通信を行わない (-mpi_zerocopy をつけない) のであれば
mallopt() を明示的に呼び出して開放するようにすることはできますけど...
from Kameyama Toyohisa
SCore-users-jp メーリングリストの案内