- ベストアンサー
freeとpsでメモリ使用量が違う?
あるプログラムを動かす為に、既存環境であとどのくらいメモリが使用できるかを調査しています。 そこでpsとfree(top)で調べたのですが、 ps alx でのRSSの合計値とfreeでのused が合いません。 多少ならいいのですが、psのRSSはfreeの半分くらいにしかなりません。 どうもfreeで表示されるメモリ使用量には何か含まれているような気がするのですが...。 ps alxの合計値を空きメモリ容量としていいのでしょうか? Redhat7.2 ps、freeはprocps version 2.0.7 です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
RedHat7.3です。 ps -axl、free -t 、top(ダイナミックにメモリーや、CPUのユーセージをみることができますが。) freeコマンドでみるのが正しいのではと思います。 freeコマンドで表示される「空きメモリ(free)」値にはハードディスクのバッファキャッシュに利用される「buffer」のメモリ量が含まれていません。実際の空きメモリ容量を知るには,「buffer」と「free」値を加える必要があります。
その他の回答 (1)
- terra5
- ベストアンサー率34% (574/1662)
psはプロセスの状態を見るコマンドなので、その時に動いているプロセスのメモリの使用状況しかわからないと思います。 多分、カーネルそのものとか、ドライバそのものが使用するメモリとかは含まれないでしょう。(未確認) freeはシステムの空きメモリを調べるコマンドなので こちらが正しい値と考えるべきでしょう。
補足
回答ありがとうございました。 >多分、カーネルそのものとか、ドライバそのものが使用するメモリとかは含まれないでしょう。 > そういうことなんですね。 そのカーネルやドライバの個別メモリ使用量を調べる方法はあるのでしょうか?
お礼
アドバイスありがとうございました。 >実際の空きメモリ容量を知るには,「buffer」と「free」値を加える必要があります。 > 空きメモリ容量となるとそうなるんですね。 実際のプログラムの容量が物理空きメモリより大きかったので、動かないのではと心配していました。 ただ、かなりメモリを積んでいるサーバを見ても、freeだと物理空きメモリが少ないのがちょっと気になってます。 psとfreeでは300MBくらい差があるのです。 同じような構成でメモリが少ないサーバは20MBくらいの差です。(物理メモリの空き容量は前サーバと変わらない) カーネルやドライバでそんなに変わるかな~とちょっと疑問です。 ところで、#1の補足にも記載しましたが、psで表示されないメモリを使用している一覧を表示する方法がありましたら 教えて頂きたいです。 よろしくお願いいたします。
補足
すみません、 Linuxは空きメモリをファイルキャッシュとして使うんですね。 せっかく説明されているのに...寝ぼけてました。m(_ _)m ありがとうございました。