QA@IT

メモリ使用率を出力する方法

3967 PV

はじめまして。情報系の研究室に所属する大学生です。
プログラミングは初心者です。

重い処理をする計算プログラムを作成し実行したのですが、失敗しています。
計算を始めてから、約10時間頃で終了しています。
原因を調べたところ、メモリ使用量がいっぱいになってしまい終了しているようです。

そこで、定期的にメモリ使用量を出力する方法を探しているのですが、
下記の要件を満たす方法があればぜひ教えてください。

・定期的に(10分くらい)一定の間隔で、メモリ使用量(率)を外部ファイルに出力する方法。
・Linux(デスクトップ版CentOS)で使用できる。

topコマンドなどでメモリ使用率を出力できるようですが、
これを定期的に行う方法がわかりません。
よろしくお願いします。

回答

手元にCentOSが無いのですが、Linuxだとps -jでメモリー使用率が出せた気がします。違ってたらごめんなさい。manページを見てみてください。
.
.
.
bashの例

$ { while true; do date; ps -j | fgrep XXX ; sleep 600; done } | tee xxxx.log

※XXXは対象のプロセスの名前

teeのところは、ログに出力しつつコンソールにも表示できるようにするためです。コンソールに表示する必要がなければ、単にリダイレクト(> xxxx.log)してください。
もうちょっときれいに出力したいならば、バッククオートと変数を組み合わせてレイアウトすると良いでしょう。
実際に計測する前に、sleepを短めにして試してみてください。

.
.
.

それと、メモリーの問題であれば下記リンクが参考になるかもしれません。

Linux のメモリー管理(メモリ-が足りない?,メモリーリークの検出/防止)(Kodama's tips page)

編集 履歴 (1)
  • まさに求めていた方法です!
    whileループとsleepを組み合わせれば良いんですね!
    どうして気が付かなかったんだろう。。。
    ありがとうございました!
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。