
次のスクリプトを実行しました。
ps --no-headers -eo user,rss | awk '{arr[$1]+=$2}; END {for (i in arr) {print i,arr[i]/1024/1024}}' | sort -nk2 -r
メモリ使用量は約12GBで表示されますが、topコマンドを実行すると合計メモリは66GB、使用されたメモリは63GB、空きメモリは3GBと表示されます。
上の数値はおおよその数値です。以下は、コマンドを使用して同様の数字を示す更新ですfree -m
。
total used free shared buffers cached
Mem: 64521 64087 433 0 2071 51567
-/+ buffers/cache: 10449 54072
Swap: 63999 1 63998
上記のコマンドで12 GBが使用されていると表示されますが、なぜ63 GBが使用されますか?
私のサーバーが正しく機能していません。 top コマンドによって使用可能なメモリが不足すると、プロセスが中断し始めます。
これは、66GBのRAMを搭載し、Oracle Enterprise Linux 6.3 64ビット(デフォルトではRed Hat)を実行するHPサーバーです。
どんな手がかりがありますか?
答え1
サーバーが奇妙に動作しません。出力の解釈方法に間違いがありましたfree
。バラよりhttps://serverfault.com/questions/85470/meaning-of-the-buffers-cache-line-in-the-output-of-free: "buffer" と "cached" は、メモリが "使用中" であることを指定しますが、キャッシュはすぐに削除できます。これが、「バッファ」と「キャッシュ」がアプリケーションで実際に使用可能なメモリ量に含まれる理由です。
http://thoughtsbyclayg.blogspot.com/2008/09/display-free-memory-on-linux-ubuntu.html説明する
「どのくらいのメモリが実際に利用可能か」を考えると、次のように計算したいと思います。
「使用可能」+(「バッファ」+「キャッシュ済み」)
あなたの例では、アプリケーションに使用できるメモリは54 GBです。