« FeedBurner日本語版でもPROが無料化かも? | メイン | Firefox拡張機能のMakeLinkをLinuxでもちゃんと使えるように »

Google PerftoolsのtcmallocでLinuxアプリを高速化してみた

Google Perftoolsはパフォーマンス測定用のプロファイラで有名ですが、その中にはTCMalloc(Thread Caching Malloc)という高速なmallocライブラリが含まれています。

TCMallocのページを見ると例として通常のmalloc 300nsに対して50nsで実行が終わるとあります。特にマルチスレッドで効果を発揮し、速度とメモリを節約するとあります。

mallocはユーザランドの根幹をなす重要なライブラリの一つなので入れ換えは恐いといえば恐いですが、それだけに効果もあることが予想されるため、やはり少し惹かれます。

インストール 

インストールは個別にダウンロードして行ってもいいですが、Googleのリポジトリをパッケージ管理ツールに追加した方がベターです。

メジャーなディストリビューションなら普通にaptやyumでインストール出来るはずです。
追記: aptで得られるパッケージのバージョンと比較すると個別にダウンロードできるものの方がバージョンが新しいようです。

使い方

使い方ですが、上のTCMallocのページではPRELOADでtcmallocライブラリだけ指定していますが、試したUbuntu 7.04ではfirefoxを起動しようとするとptherad_key_createがないとかのたまいますので、以下のような感じで。

LD_PRELOAD="/usr/lib/libgthread-2.0.so.0:/usr/lib/libtcmalloc.so" firefox

もしくは.bashrcなどに

export LD_PRELOAD="/usr/lib/libgthread-2.0.so.0:/usr/lib/libtcmalloc.so"

注:/usr/lib/libtcmalloc.so.0の方がいいかもしれません。

もっとチャレンジャーな方は/etc/ld.so.preloadに追加してみればシステムワイドに使えます。

使用感など

特にこのTCMallocが効きそうなマルチスレッド化されているアプリをps axmなどとして探してみるとmysql, firefox, thunderbird, gnome関連,  eclipse (java), google desktopと比較的大物が多いようです。

とりあえずshellのrcに設定して使ってみていますが、少なくともブラウザとeclipse、gnome-terminalは軽くなったような気がします。特に複数の大きなソフトを立ち上げているときに重くなりにくい感じです。(プラシーボ効果かもしれませんが...)

あとは試してはいませんがwebサーバなんかでapacheをスレッド版にするとmysqlと併せて効果がでるかもしれません。

追記: 非互換性に付いて
どうもemacsenとこのライブラリの相性が悪くSegFaultで落ちてしまいます。ご注意下さい。

トラックバック

このエントリーのトラックバックURL:
http://blog.browncat.org/cgi-bin/mt/mt-tb-abc.cgi/382


コメントを投稿

(お書きになったコメントはすぐには表示されません。ご了承ください。)


About

2007年07月20日 11:05に投稿されたエントリーのページです。

ひとつ前の投稿は「FeedBurner日本語版でもPROが無料化かも?」です。

次の投稿は「Firefox拡張機能のMakeLinkをLinuxでもちゃんと使えるように」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

           

カテゴリー

Powered by
Movable Type 3.36

Twitter


最近のエントリー

デル株式会社ads

注目エントリー