Personal tools
You are here: Home ブログ 井上 ローテクなメモリ使用量監視方法
« July 2009 »
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 comments
Re:Google Chromeの発表には驚きました 安定したブラウザ 2009-05-25
Re:JavaScriptライブラリのバージョンアップ問題 n 2009-05-24
Re:関数型言語Grassの勉強会資料公開(by 岩永さん) inoue 2009-05-24
Re:ソフトウェアのマニュアル管理に適したツール? Anonymous User 2009-04-26
Re:ソフトウェアのマニュアル管理に適したツール? inoue 2009-04-21
Re:ソフトウェアのマニュアル管理に適したツール? Anonymous User 2009-04-19
Re:笑いの神は降りてこなかった Anonymous User 2009-04-16
Re:情報フロー制御とBLP Anonymous User 2009-03-15
Re:JavaはCより速かった tnanba 2009-03-12
Re:JavaはCより速かった inoue 2009-03-05
Re:サーバサイドJavaScript Anonymous User 2009-03-03
Re:サーバサイドJavaScript Anonymous User 2009-03-03
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.