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//include/isc/atomic.h で各アーキテクチャ毎に
インラインアセンブラで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故に排他処理が必要ない箇所が多いので当然といえば当然だけど。