BIND 9.4.0 Release
atomic処理の効率化による性能向上が取り込まれたバージョンの
9.4.0が正式にリリースされた模様。
以前 9.4.0a5 の時に確認した限りでは 2〜3 割は高速化が確認できた。
有効にするconfigureオプションはこの辺
--enable-atomic enable machine specific atomic operations [default=autodetect]
該当ファイルは lib/isc/
インラインアセンブラでatomic_cmpxchg atomic_xadd atomic_store の関数が定義されている。
対応しているアーキテクチャは alpha mips ia64 powerpc sparc64 x86_32 x86_64 なので
よほど変な物使ってない限りは大丈夫そう。
実際に使用されているのは lib/isc/rwlock.c:isc_rwlock_lock あたり。
使われてるアルゴリズムはこの辺にあるもので
atomicなCAS(Compare And Swap)やaddを使用してrwlockを実装している。
bind9がbind8より遅いというのは散々言われてるけど、この改善入れてもCPUを
増やした場合にスケールするようになるが、まだ1CPUではbind8の方が早かったはず。
single thread故に排他処理が必要ない箇所が多いので当然といえば当然だけど。