FreeBSD Daily Topics

2012年4月26日注意:jemalloc(3)実装更新と/etc/malloc.confフォーマット変更

current

malloc.conf format changed by current jemalloc work

FreeBSD 10-CURRENTにおけるjemalloc(3)の実装が変更されました。これを受けて、これまで/etc/malloc.confで使ってきたフォーマットが廃止されています。新しいフォーマットは「項目:値」をカンマで区切ってリストにしたもので、⁠項目:値,項目:値,項目:値」といったものとなります。

CURRENTではデバッグを優先にするため、エラーが発生した場合にはFatal、アロケートしたメモリは0x5aで埋めるなど、パフォーマンスが低下する設定がデフォルトになっています。このため、CURRENTを使いながらそれなりの性能を求める場合には、/etc/mallo.confを作成してそうした機能を無効にしておくことがあります。

従来の実装であれば「ln -s aj /etc/malloc.conf」の設定がよく使われていました(/etc/malloc.confは設定ファイルを作成するのではなく、シンボリックリンクファイルを作ることで設定を作成するという特徴があります)。新しい実装で同じ設定をする場合、次のようにシンボリックリンクを作成することになります。

ln -s 'abort:false,junk:false' /etc/malloc.conf
% ls -l /etc/malloc.conf
lrwxr-xr-x  1 root  wheel  22 Apr 26 14:51 /etc/malloc.conf -> abort:false,junk:false
%

項目が論理値である場合に設定できる値はtrueないしはfalse、項目が数値を求める場合には整数を指定します。整数は8進数、10進数、16進数での指定が可能です。

どういった値が提供されているか、どういった意味を持っているか、デフォルトの設定がどうなっているかはjemalloc(3)オンラインマニュアルにまとまっています。jemalloc(3)オンラインマニュアルのMALLCTL NAMESPACEセクションに記載されているopt.からはじまる項目が/etc/malloc.confで設定できる項目となります。

今回導入されたjemalloc(3)の実装は、従来の実装と比較してより多くの項目が調整できるようになっています。特にValgrindと連携した処理が可能になった点が注目されます。gperftools互換のデータも出力することができます。結果として、malloc(3)の動作をより詳細にプロファイリングすることが可能になり、従来よりも問題解決や性能改善への取り組みが高速化できるとみられます。

jemalloc(3)は並列処理に対してスケーラビリティの高いmalloc(3)実装です。FreeBSDをターゲットに初期の実装が追加され、現在ではNetBSDやFirefoxにおけるメモリ確保機能として活用されています。

おすすめ記事

記事・ニュース一覧