web-dev-qa-db-ja.com

プロセスによって消費されたメモリの量をどのように見つけることができますか?

ps auxを使用して、プロセスによって消費されたメインメモリの量を確認するにはどうすればよいですか?

30分実行するプロセスがあります。 ps auxを使用して、メインメモリが消費する最大量を見つけることは可能ですか?

ps auxを実行しようとしましたが、実行時に消費されたメモリ量しか得られません。プロセスによって消費されるメインメモリの最大量を見つける方法がわかりません。 1つのオプションは、psを何度も実行し、出力を確認し続けることです。私はそのオプションが十分に実行可能であるとは思いません。 Linuxで他の方法はありますか?

4
Jannat Arora

時間の経過に伴うメモリ使用量などの統計を記録するには、ある種の継続的な監視ツールが本当に必要なようです。

私はあなたが今何をしているのかを提案し、psコマンドを繰り返し実行して、プロセスごとに使用されるメモリのサイズを取得します。

人間が読めるグラフまたはテーブルに出力を解析して、経時的な値を表示する方法が必要になります。

個人的には、人間が読める形式でメモリ使用量を表示するために、別のフォーラムの誰かから取ったこの小さなコマンドが好きです。

ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }'
5
user164174

ここでは、atopツールが役立ちます。デーモンとして実行し、すべてのプロセスのリソース消費に関する情報を定期的に保存できます。これは、結果をスクロールして戻ることができるため、プロセスで使用されているメモリの最大量を確認できます。

他の選択肢は、プロセスごとのメモリ消費量(および他の多くのもの)をグラフ化できるmuninやcactiのようなツールです。

1
Teun Vink

一般に、/ proc/[pid]/statusファイルを表示できます。これには、VmPeakとRSSの値が含まれます。

RSSメモリに興味がある場合は、次のようなことができます。

while true ;  do ( echo -n `date` ""   ; grep RSS /proc/[pid]/status ) | tee -a /tmp/historyofrss ; sleep 0.1 ; done
0
lacasitos