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