Personal tools
You are here: Home ブログ 井上 ローテクなメモリ使用量監視方法
« December 2010 »
Su Mo Tu We Th Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Recent entries
Apache2.4のリリース予定は来年(2011年)初め(あくまで予定) inoue 2010-12-23
Herokuの発音 inoue 2010-12-20
雑誌記事「ソフトウェア・テストPRESS Vol.9」の原稿公開 inoue 2010-12-18
IPA未踏のニュース inoue 2010-12-15
労基法とチキンゲーム inoue 2010-12-06
フロントエンドエンジニア inoue 2010-12-03
ASCII.technologies誌にMapReduceの記事を書きました inoue 2010-11-25
技術評論社パーフェクトシリーズ絶賛発売中 inoue 2010-11-24
雑誌連載「Emacsのトラノマキ」の原稿(part8)公開 inoue 2010-11-22
RESTの当惑 inoue 2010-11-22
「プログラマのためのUXチートシート」を作りました inoue 2010-11-19
「ビューティフルコード」を読みました inoue 2010-11-16
Categories
カテゴリなし
 
Document Actions

ローテクなメモリ使用量監視方法

GNU/Linux上のプロセスのメモリ使用量のローテクな監視方法です。 必要なのはシェルとgnuplotだけです。

シェルはこんなコードです。 やっていることはprocファイルシステムのstatmファイルの中身を一定期間ごとに読み出すだけです。 statmファイルの中身の意味を覚えたりはしないので、コードのusage出力に書いておきます(Linuxのソースコードからコピー)。 コマンドの使い方は変に文書化するより、このようにコマンド自体にしゃべらせる方が利便性と保守性に優れています。

メモリリークを調べるには、先頭カラム(size)の量を監視すれば充分です。 2番目のカラム(resident)は、RSSとも略されるメモリ使用量で、(そのプロセスが)実メモリを占めているメモリ使用量です(sizeは仮想メモリ上のメモリ使用量。ページアウトされた分も含みます)。

#!/bin/sh
export LANG=C

if [ "x"$1 = "x" ];
then
  echo "usage: $0 pid-to-watch"
  echo "usage example: $0 \`pidof process-name-to-watch\` | tee /tmp/mem.log"
  echo "output:# sprintf(buffer,\"%d %d %d %d %d %d %d\\n\""
  echo "                 size, resident, shared, text, lib, data, 0)"
  exit
fi

pid=$1
while : 
do
  echo -n `date '+%Y-%m-%d-%H:%M'` ' '
  cat /proc/${pid}/statm
  sleep 1m
done

出力を適当なファイルに書き出して、gnuplotでグラフ化します。 そのためのスクリプトは次のようになります。

set xdata time
set timefmt "%Y-%m-%d-%H:%M"
set format x "%H:%M"
# set xrange ["2007-12-11-16:00":]
plot "/tmp/watch-mem.log" using 1:2 with lines

コメントアウトしている set xrange の行は、見たい範囲を限定したい時に使います。 iceweaselのメモリ使用量のグラフは次のようになりました。

/Members/inoue/images/misc/gnuplot.png

メモリリークを調べたい時は、このグラフと(対象プロセスの)ログをつき合わせます。 こんなローテク、役に立つのか疑問に思うかもしれませんが、ハイテク(LeakTracer,ccmalloc,Valgrind,mpatrol)で見つからなかったメモリリークのバグの箇所を見つけられました。単にハイテクを使いこなせていないだけ、という噂もありますが。

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/low-tech-to-watch-memory/tbping
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.