kmemprof は Linux Kernel のスラブアロケータによるメモリ割り当てと開放をモニ タあるいはプロファルすための機能を追加するためのセットです。
どのような関数呼び出しを経由して、スラブアロケータが利用されたのかが分かります。
# cd kmemprof # install directory # . setrunenv # setup the correct environment # kmemprof --load-cgprof # kmemprof --start # favorite_benchmark # kmemprof --stop |
# cgprof-analyzer /proc/kmemprof-cgprof/* | less |
# cgprof-analyzer --dotty /proc/kmemprof-cgprof/* > cgprof.dot |
スラブアロケータの呼び出しをトレースします。
# kmemprof --load-trace # kmemprof --start # favorite_benchmark # kmemprof --stop |
# trace-analyzer /proc/kmemprof-trace/{logbuf-0,strtab-0} | less |
興味のあるスラブアロケータの呼び出しのみプロファイルあるいはトレースしたい場 合は、次のようなオプションがあります。
# 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 から参照できます。