プロセス単位で使っているメモリのサイズを取得する

Linuxであるプロセスが使っている実メモリサイズや、これまでに使った最大メモリサイズは、/proc/プロセス番号/statusで見れるという記事を読んだ。
http://d.hatena.ne.jp/naoya/20080727

使った最大の物理メモリサイズは、VmHWMで、VmRSSは現時点の利用サイズ。このメモリサイズの数値だけ抜き出すスクリプト。環境によっては動かないかもしれない

ps ax | grep 抜き出したいプログラム名など | grep -v grep | cat /proc/`gawk '{print $1;}'`/status | grep VmHWM | gawk '{print $2}'

こんな感じで抜き出せる。
ただし、最初に「grep 抜き出したいプログラム名など」の実行結果で複数行返ってくる条件のgrepだと動かないのです。

今回は、あるVMwareのゲストOSプロセスのメモリサイズを取得してみよう。
プロセス名は、vmware-vmx -C /VM/CentOS5 みたいになっているという前提です。
grepの条件に、VMの名前を入れてる(CentOS5)ので、適宜自分の環境によって変えてください。

VmHWMの取得
ps ax | grep CentOS5 | grep -v grep | cat /proc/`gawk '{print $1;}'`/status | grep VmHWM | gawk '{print $2}'

VmRSSの取得
ps ax | grep CentOS5 | grep -v grep | cat /proc/`gawk '{print $1;}'`/status | grep VmRSS | gawk '{print $2}'

これをcronなどで動かして定期的に値を取得すればグラフ化できるね!