1

特定の計算をキャッシュしたいとしますが、それをディスクに同期させると、キャッシュの目的全体に反する以上の I/O ペナルティが発生します。

つまり、物理 RAM がどれだけ残っているかを知る必要があります (キャッシュされたメモリを含めて、それをプッシュできると仮定し、バッファリングが増加した場合にいくらかの余裕を考慮します)。/proc/meminfo を調べたところ、読み方がわかりました。数字を組み合わせて欲しいものを得る方法がよくわかりません。コードは必要ありません。必要なものがわかれば、自分でコーディングできます。

実行する必要があるボックスにルートはありませんが、それ以外の場合はかなり静かなはずです。大量のディスク I/O は発生せず、バーストで多くのメモリを要求する他のプロセスもありません。OSは、オーバーコミットがオンになっているかなり最近のLinuxです。これは、明らかに OOM キラーをトリガーせずに機能する必要があります。

数値はメガバイト単位まで正確である必要はありません。ボックスにもよりますが、およそ 1 から 7 ジブの範囲になると思いますが、約 100 メガバイトに近づくと素晴らしいでしょう。

見積もりが小さい側に誤りがある場合は、間違いなく好ましいでしょう.

4

3 に答える 3

4

ユニスには標準sysconf()機能があります(OpenGroupsのマニュアルページLinuxのマニュアルページ)。

この関数を使用すると、物理メモリの合計を取得できます。

unsigned long long ps = sysconf(_SC_PAGESIZE);
unsigned long long pn = sysconf(_SC_AVPHYS_PAGES);
unsigned long long availMem = ps * pn;
于 2012-12-14T18:38:40.223 に答える
0

H2CO3の答えの代わりに、/ proc/meminfoから読み取ることができます。

于 2012-12-14T21:58:02.317 に答える