Home > Google OSS > google-perftools(tcmalloc)の使い方

google-perftools(tcmalloc)の使い方

PFIでは毎週1人適当な話題で発表しているのですが、この間「GooglePerfToolsの使い方」という軽いお題で発表した資料を公開してみます。メモリ周りの問題は大変ですよね…。

特にC++で長期運用中のメモリリークに苦しんでおられる方には役立つかと思います。基本的にドキュメントの日本語訳ですが。SlideShareだとなぜか図がずれるので、元ファイルをこちらに置いておきます。

Google Japan Blogの以下のエントリも参考になります。

google perf toolsのheap profiler機能は秀逸で、ある時点とある時点を比較して、どの関数がどのぐらいmallocしてメモリ使用量を増加させたかというのが一瞬で分かります。またそれを可視化する事もできます。さらにランタイムオーバーヘッドも少ない(間隔を指定できる)ので、運用しながらログを取ることも許容の範囲内だと思います。

性能に関してもSTLを使用しているアプリケーションに関しては細かいアロケーションが鬼のように発生するので、glibc mallocを使用したmultithreadアプリケーションの場合、malloc内部のロックがボトルネックになる場合があります。これはSolarisのplockstate(dtraceのwrapperコマンド)等により実際に確認することが出来ます。tcmallocはその辺りを解決しているので、Makefile.amに-ltcmallocを付け加えるだけで簡単にアプリケーションのスループットが向上しました。

また、glibc標準のアロケーターだとメモリフラグメンテーションで予想以上のメモリを食ってしまう事が有るようです。某検索エンジンでも稀にその状況が発生する事が有って、アプリケーション側のバグだと思い3ヶ月間ずっとコードとにらめっこしていたのですが、結局アロケーターが悪いという結論に陥りました。もっと早くGooglePerfToolsを知っていたら胃に穴が開くことも無かったでしょう。

という訳でみんなgoogle-perftools使うといいよ!

Similar Posts:

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://kzk9.net/blog/2007/12/googleperftools.html/trackback
Listed below are links to weblogs that reference
google-perftools(tcmalloc)の使い方 from moratorium

Home > Google OSS > google-perftools(tcmalloc)の使い方

お薦め本
広告
Archives
Categories

Return to page top