これを読んだ後 jemallocのようなメモリアロケータが高度にスレッド化されたアプリケーションに与える影響に関するブログ投稿 、サーバーのクラスターのいくつかで大規模にテストしたいと思いました。スレッドを使用して、24コアマシンでsphinxとApacheを実行します。
Jemallocのインストールは簡単でした。 Centos 6を実行しているので、yum install jemallocjemalloc-develでうまくいきました。私の質問は、Centosに組み込まれているデフォルトのmallocの代わりにjemallocを使用するようにシステム上のすべてをどのように変更するかです。調査では、これが潜在的な選択肢であると指摘されました。
LD_PRELOAD=$LD_PRELOAD:/usr/lib64/libjemalloc.so.1
Jemallocを使用してすべてを取得するには、これで十分でしょうか?
それは些細な答えです(実際、あなたの研究がそれを見逃していたかもしれない方法を私はまだ理解していません):
/etc/ld.so.preload
Ld.so(8)に記載されています— man 8 ld.so
:"…
/etc/ld.so.preload —プログラムの前にロードされるELF共有ライブラリの空白で区切られたリストを含むファイル。
…"
調査中に 同じ解決策 を見つけました。 段階的な手順でより詳細に 。また、多くの企業がjemalloc(Facebookなど)またはtcmalloc(Githubなど)に切り替えているとも述べられています。したがって、tcmalloc( インストールは非常に似ています )を使用するか、指示に従ってjemallocを使用することもできます。