Feb 24, 2006
Athlon 64x2ベンチマーク(SMPのテスト) [computer]
一部加筆修正。カテゴリが間違っていたので入れ直し。
対象OS FreeBSD 6.1-PRERELEASE (2/14頃のもの)
GENERICカーネルのコンパイル
スケジューラは4BSDのものとULEのもの両方をテスト
- 事前の検討など
- 測定結果
最初は普通にFreeBSDのカーネルコンパイルで make -j4 等で 並列度を上げてコンパイルして比較を試みた。xload等で表示される負荷を見ていて気がついたが、コンパイルの前半ではmakeであたえた最大並列度一杯まで負荷が上がるが次第にダラ下がりになることがわかった。通常の処理例としてはそれでも評価にはなるとは思うが、SMPのテストとしてはあまりよろしくない。
xloadの表示からモジュールのコンパイルでは並列度が上がらないことが考えられた。このためNO_MODULES=YESを指定して負荷の動きを見てみた。この結果テスト全体に渡り並列度があまり落ちなくなり、CPUの使用率も190%程度となった。SMPのテストとしてはこちらの方が適しているだろう。
もう一つ。テストはスクリプトを用いて連続的に自動的に行うようにしたが、kernelのコンパイルを繰り返しで、最初の2回程度はページフォルトが起きることに気がついた(csh内蔵のtimeを使っているとデフォルトの設定では表示される)。
このためまず2回 kernelのコンパイルを行い、その後各条件で3回づつコンパイルを行い平均値を求めることにした。
up-4bsd: SMPオフ,4BSDスケジューラ
up-ule: SMPオフ,ULEスケジューラ
smp-4bsd:SMPオン,4BSDスケジューラ
smp-ule: SMPオン,ULEスケジューラ
以下に測定結果を示す。
(1)GENERIC kernelのコンパイル # up-4bsd proc user system real time CPU 1 534.666 33.328 9:32.26 99.2% 2 537.250 35.328 9:36.60 99.3% 4 544.882 34.684 9:43.04 99.2% 8 544.762 35.225 9:44.56 99.2% # up-ule proc user system real time CPU 1 536.687 32.908 9:34.41 99.1% 2 541.345 34.734 9:41.25 99.1% 4 545.630 35.352 9:45.68 99.1% 8 545.529 35.795 9:46.64 99.1% # smp-4bsd proc user system real time CPU 1 533.321 33.706 9:10.86 102.9% 2 535.664 36.666 6:25.19 148.5% 4 539.983 38.300 6:09.26 156.6% 8 541.189 39.319 6:15.77 154.4% #smp-ule proc user system real time CPU 1 533.717 32.031 9:22.87 100.5% 2 536.659 35.313 6:28.49 147.0% 4 537.696 38.382 6:15.93 153.2% 8 538.695 38.847 6:19.12 152.3% (2)GENERIC kernelのコンパイルでNO_MODULE=YESを使いmoduleは作らない # up-4bsd proc user system real time CPU 1 169.805 9.821 3:01.19 99.1% 2 170.525 10.401 3:02.25 99.2% 4 173.328 10.436 3:05.11 99.2% 8 173.660 10.640 3:05.59 99.3% # up-ule proc user system real time CPU 1 169.766 9.731 3:00.97 99.1% 2 172.537 10.072 3:03.81 99.3% 4 172.765 10.605 3:04.73 99.2% 8 173.745 10.566 3:05.49 99.3% # smp-4bsd proc user system real time CPU 1 169.081 9.399 2:52.57 103.4% 2 170.419 9.947 1:35.29 189.2% 4 172.228 10.650 1:36.43 189.6% 8 172.712 11.928 1:36.45 191.2% #smp-ule proc user system real time load 1 169.372 8.938 2:56.25 101.1% 2 170.086 10.707 1:35.23 189.8% 4 171.078 11.557 1:35.13 191.9% 8 172.004 11.669 1:35.51 192.9%
この結果からは以下の事がわかる
- 並列度を変えてもuser timeはあまり変わらない
- ULEと4BSDの性能の差はあまりない
8プロセス動かした場合で単一プロセスに比較して1.5%〜2%程度の変動。この数値が大きくなっている場合、メモリやバスの競合でCPUの性能が見掛け上落ちている事を示す。 スループットの点から見ればSMPはうまく動いていると言える。
HyperThreadingの場合は仮想CPUそれぞれに均等にjobを与えると数10%程度"CPU"の性能が落ちるように見える。これはそれぞれの仮想CPUは実際には単一のCPUのパイプラインにできる空きを有効活用するためのものであるからである
深く検討するなら少々データ不足気味だがおおざっぱに言えばこのテストでは性能面であまり大きな差は出ていない。1%程度の差は計測誤差の可能性もある。
(一応)続く
blosxom 2.0
and
modified by
blosxom starter kit