2010-12-02 2 views
1

いくつかのプログラムのトップ(最大)メモリ使用量を測定するにはどうすればよいですか?トップメモリ​​消費量を測定する(Linuxプログラム)

これはmalloc/freeをたくさん実行し、かなり高速に実行されるため、一番上に最大メモリが表示されません。

私はtimeユーティリティのようになめらかたい:time呼び出しは、あなたのシェルです

$ time ./program 
real xx sec 
user xx sec 
sys xx sec 

$ mem_report ./program 
max memory used xx mb 
shared mem  xx mb 
+0

既存のプログラムがほしいと思っていますか?あなたのプログラムであれば、別の方法でそれを扱うことができます。 –

+0

どのような言語ですか?なぜ/ aデバッガ内から実行しないのですか? – initall

+0

はい、既存の実行可能ファイルを測定することです。これはC言語で書かれていますが、私は 'time'として使いやすいユーティリティを使いたいと思っています。デバッガから実行するのは助けにならないでしょうか? – osgx

答えて

1

。プログラム/usr/bin/timeに電話すると、常駐メモリの使用に関する知識が得られます。ただし、メモリマップされたファイル、共有メモリ、その他の必要な情報は数えられないことに注意してください。

+0

それは、ページフォールトだけが報告されますが、メモリは報告しません。 (0avgtext + 0avgdata 0maxresident)k 0inputs + 0outputs(1major + 1822minor)pagefaults 0swaps' – osgx

+0

これは奇妙です。 '/ etc/hosts'の穏やかな' wc'でもRSSの利用が得られます。おそらく、あなたのプログラムは、統計のポーリングが起こるずっと前に終了するでしょう。 –

+0

'/ usr/bin/time'ユーティリティもポーリングを使用していますか?実行時間は0.3秒のユーザ、3秒の実時間です。 – osgx

0

あなたがLinux上である場合は、世論調査スクリプトでプログラムをラップすることができます

# for your current process 
/proc/self/statm 

# or a process you know the pid of 
/proc/{pid}/statm 

と結果を書き出し - あなたが後でそれらを集約することができます。

+0

短時間実行しているプログラムではポーリングが間違っています – osgx

関連する問題