web-dev-qa-db-ja.com

どのプロセスがすべての記憶を食べているかを知る方法

SUSEを使用していますが、31 GBのメモリがあります。メモリ:合計31908592k、使用済み31429632k、空き478960k、バッファ12176kどのプロセスがすべてのメモリを消費しているかを確認するにはどうすればよいですか。

8
AlBouazizi

freeを実行していて、最初の行を見て、びっくりしているようです。それで大丈夫です;多くの人がそうします。

freeからの出力の最初の行を無視します。本当に。 Linuxは非常にディスクからのデータのキャッシュに積極的であり、「スワップアウトされた」仮想メモリページも含めてRAMであり、キャッシュされたデータはすべて「使用済み」としてカウントされます。 freeの最初の行。ただし、必要に応じてマイクロ秒(最近ではそれ以下)で再び使用できるようになります。

freeからの出力のsecond行、-/+ buffers/cache:というラベルの付いた行を確認する必要があります。これは、バッファとキャッシュによって現在使用されているものを無視して、プログラムを実行することによって実際にどれだけのメモリが拘束されているかを示す行です。

たとえば、私のマシンは現在次のように表示されます。

             total       used       free     shared    buffers     cached
Mem:       3083924    2177300     906624          0     461344     837008
-/+ buffers/cache:     878948    2204976
Swap:      4000148          0    4000148

現時点では、906624バイトのRAMは完全に未使用のままですが、追加の461344バイトのバッファと837008バイトのキャッシュデータがあり、これらは多かれ少なかれ即座に利用可能になります。より重要なもの(つまり、ほぼすべてのもの)にはメモリが必要であり、実際に使用できるのは合計2204976バイトです。

9
Dave Sherohman

topを実行し、を押します ShiftO、その後 N、そして最後に Enter。押す Q 終了したいとき。

そして忘れないでください、 "Linuxは私のRAMを食べました!"

topコマンドを使用します。実行中のすべてのプロセスのリストが、デフォルトで最もCPUを使用しているプロセスでソートされて表示されます。ヒットした場合 shiftM 代わりに、メモリ使用量でソートするように変更されます。リストの一番上にトップのメモリ違反者が表示されます。

1
Flimzy