Xbench 1.3

カーネルの動作モードに関する最大の関心事は、それがパフォーマンス面にどのように作用するかということ。まずは定番ベンチマークソフト「Xbench 1.3」(32bitアプリ)を材料に、カーネルを32bitモードと64bitモードそれぞれで起動したときのスコアを測定してみた。

その結果だが、おおむね"大差ない"ものとなった。演算性能を測る項目(CPU、Memory)についてはほぼ同水準、明確な差は見られなかった。Thread Testは、ComputaionとLock Contentionどちらの項目も64bitカーネルが上回り、64bit化によるレイテンシの低減がうかがえたが、パフォーマンス全体に大きく影響するほどではなかった。アプリケーションの処理の多くはカーネルが直接関与しないことから、Xbenchにおいてもカーネルの動作モードによる影響は少ないものと考えられる。

■表1:Xbench 1.3の実行結果(MacBook Pro 17インチ、Core 2 Duo 2.66GHz/4GB RAM)
32bitモード 64bitモード
CPU Test 188.1 189.62
GCD Loop 308.71 310.76
Floating Point Basic 150.95 152.49
vecLib FFT 124.35 125.61
Floating Point Library 297.82 297.85
Thread Test 291.88 352.91
Computation 447.8 501.25
Lock Contention 216.68 272.8
Memory Test 190.47 195.09
System 231.45 245.27
Stream 161.83 161.98
Quartz Graphics Test 216.8 183.41
OpenGL Graphics Test 92.21 90.71
User Interface Test 334.9 351.55
Disk Test 51.9 52.81

tiotest

上述したXbenchの例からわかるように、アプリケーションレベルではカーネルの動作モードの違いによる性能差を測りにくい。システムの中核であるカーネルが32/64bitどちらの空間で動作するかは、パフォーマンスに影響するが、カーネル自体が実行にかかわる処理でなければ数字には表れにくい。そこで、ディスクI/Oのベンチマークソフト「tiobench」を使用し、カーネルを32/64bitそれぞれの動作モードで起動したときのスコアを測定した(3回計測した平均値を使用)。

その結果だが、ディスク書き込みのパフォーマンスとして顕著に現れた。32bitモード時のシーケンシャルアクセスが約2350MB/sだったことに対し、64bitモード時は約2891MB/sと、同一のHDD/ファイルシステムを使用しているにもかかわらず大幅な差が生じている。ランダムアクセスも同様に向上しているため、高頻度にディスクアクセスを行うアプリケーションのレスポンス改善も期待できる。

■表2:tiobench 0.3.3(単位:MB/s)
32bitカーネル 64bitカーネル
Write 46.28 46.33
Random Write 1.278 1.27
Read 2349.92 2890.76
Random Read 1634.14 1948.91
※:64bitバイナリを使用、コマンド実行時のオプションには「-t 8 -f 256」を指定

64bitカーネルの実用度は?

アプリケーション実行環境を"底上げ"する64bitカーネルだが、KEXTを含めて64bit環境で統一される必要がある。すべてのメーカーから64bit版デバイスドライバが公開されているわけではない現状を踏まえると、互換性の問題があることは否定できず、デフォルトでの64bitモードの適用をXserveに限定したAppleの判断は妥当なものと考えられる。

VMware Fusion v2.0.5は、カーネルが64bitモード時には起動できない

カーネルの動作モードに関係なく、アプリケーションは32/64bit版とも実行できるが、専用のKEXTを必要とするものは注意が必要。たとえば仮想化ソフト「VMware Fusion」は、9月8日現在のバージョン2.0.5では32bit版KEXTしか収録されていないため、カーネルが64bitモード時には起動できない。いずれはカーネルの動作モードを含めてフル64bit環境へと移行するのだろうが、このようなサードパーティーの対応状況を考慮に入れれば、その時期はもうしばらく先のことになりそうだ。