kmemprof

kmemprof は Linux Kernel のスラブアロケータによるメモリ割り当てと開放をモニ タあるいはプロファルすための機能を追加するためのセットです。

Examples

call graph profiling

どのような関数呼び出しを経由して、スラブアロケータが利用されたのかが分かります。

# cd kmemprof		# install directory
# . setrunenv		# setup the correct environment

# kmemprof --load-cgprof
# kmemprof --start
# favorite_benchmark
# kmemprof --stop

テキストベースの表によるプロファイリング結果表示

# cgprof-analyzer /proc/kmemprof-cgprof/* | less

dotty を利用したインタラクティブなコールグラフ GUI 表示

# cgprof-analyzer --dotty /proc/kmemprof-cgprof/* > cgprof.dot
# dotty cgprof.dot

allocation tracing

スラブアロケータの呼び出しをトレースします。

# kmemprof --load-trace
# kmemprof --start
# favorite_benchmark
# kmemprof --stop

トレース結果表示

# trace-analyzer /proc/kmemprof-trace/{logbuf-0,strtab-0} | less

filtering options

興味のあるスラブアロケータの呼び出しのみプロファイルあるいはトレースしたい場 合は、次のようなオプションがあります。

# kmemprof --set-frequency 100
# kmemprof --set-filter "filter_pid=`cat /var/run/httpd.pid`"
# kmemprof --set-objfilter blkdev_requests,buffer_head

1 番目の行はサンプリングする頻度を 100 回に一度に設定しています。単に統計的な 情報のみ知りたい場合は、オーバーヘッドが抑えられて良いと思います。

2 番目は、Apache が実行したシステムコールによって引き起こされたスラブアロケー タの呼び出しだけサンプリングします。

3 番目は、blkdev_requests と buffer_head キャッシュの割り当てと開放だけサン プリングします。このキャッシュ名は、/proc/slabinfo から参照できます。


SourceForge.jp