Personal tools
You are here: Home ブログ 井上 ローテクなメモリ使用量監視方法
« September 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    
Recent comments
Re:Javaの面白いバグ 徐です 2010-08-30
Re:Javaの面白いバグ inoue 2010-08-23
Re:Javaの面白いバグ 徐です 2010-08-18
Re:WebSocketのプロトコル inoue 2010-08-12
Re:WebSocketのプロトコル naruse 2010-08-11
Re:blogのコメントスパムが多すぎる inoue 2010-07-22
Re:マルチスケジューラv5.1.4をリリース - inspired by salesforceのchatter - inoue 2010-06-09
Re:マルチスケジューラv5.1.4をリリース - inspired by salesforceのchatter - hamabe 2010-06-08
Re:雑誌連載「Emacsのトラノマキ」の原稿(part4)公開 tune 2010-05-27
Re:雑誌連載「Emacsのトラノマキ」の原稿(part4)公開 tune 2010-05-27
Re:Emacs23.2が更に1ビット稼いだ秘密 inoue 2010-05-14
Re:Emacs23.2が更に1ビット稼いだ秘密 ef 2010-05-13
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.