1. ホーム
  2. linux

Linuxで、プロセスが使用しているメモリの量を知る方法は?

2023-08-21 23:49:19

質問

LAMPアプリケーションでメモリリークがあるかもしれません(メモリが使い果たされる、スワップが使われ始める、など)。さまざまなプロセスが使用しているメモリの量を見ることができれば、私の問題を解決するのに役立つかもしれません。この情報を*nixで見る方法はありますか?

どのように解決するのですか?

正しいメモリ使用量を得ることは、思っている以上に難しいことです。私が考える最良の方法は を見つけることができました。 :

echo 0 $(awk '/TYPE/ {print "+", $2}' /proc/`pidof PROCESS`/smaps) | bc

ここで、"PROCESS"は検査したいプロセスの名前、"TYPE"は次のうちの一つです。

  • Rss 常駐メモリ使用量 : プロセスが使用するすべてのメモリで、このプロセスが他のプロセスと共有するすべてのメモリを含みます。スワップは含まれません。
  • Shared : このプロセスが他のプロセスと共有しているメモリ。
  • Private : このプロセスによって使用されるプライベートメモリは、ここでメモリリークを探すことができます。
  • Swap : プロセスによって使用されるスワップ メモリです。
  • Pss : Proportional Set Size (比例セットサイズ) の略で、メモリ全般の指標となる。これは、共有のために調整された Rss です。あるプロセスが 1MiB のプライベートと他の 10 プロセス間で 20MiB を共有している場合、Pss は 1 + 20/10 = 3MiB となります。

他の有効な値は Size (つまり仮想サイズ。ほとんど意味がない) と Referenced (現在参照またはアクセスされているとマークされているメモリの量)。

を使用することができます。 watch などの bash-script-fu を使って、監視したいプロセスのこれらの値を監視することができます。

に関する詳細な情報については smaps : http://www.kernel.org/doc/Documentation/filesystems/proc.txt .