Solaris上でマルチスレッドに対応したアプリケーション動作を改善する方法

Solarisにはマルチスレッドに対応したメモリアロケーション用共有ライブラリ(libmtmalloc.so)が提供されているため、ダイナミックリンクでコンパイルしたマルチスレッド対応アプリケーションなら下記のようにLD_PRELOAD環境変数を用いることで処理性能を改善することが可能です。

LD_PRELOAD環境変数にはダイナミックリンクを用いたプログラムが通常利用する共有ライブラリの代わりに読込む共有ライブラリ名が指定可能ですが、ここにlibmtmalloc.soを指定します。

  • sh系はこんな感じ
LD_PRELOAD=libmtmalloc.so.1
export LD_PRELOAD
  • csh系ではこんな感じ
setenv LD_PRELOAD libmtmalloc.so.1

上記定義をJavaアプリケーションサーバやWebサーバなどの起動スクリプトへ追加するだけでメモリアロケーションを実施する際にマルチスレッド対応した実装が利用されるようになり処理速度が改善されるケースも有るかと思いますので、ちょっとしたチューニングが必要な時に試してみると良いと思います。(^o^)/