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%
      

    この結果からは以下の事がわかる

    1. 並列度を変えてもuser timeはあまり変わらない
    2. 8プロセス動かした場合で単一プロセスに比較して1.5%〜2%程度の変動。この数値が大きくなっている場合、メモリやバスの競合でCPUの性能が見掛け上落ちている事を示す。 スループットの点から見ればSMPはうまく動いていると言える。

      HyperThreadingの場合は仮想CPUそれぞれに均等にjobを与えると数10%程度"CPU"の性能が落ちるように見える。これはそれぞれの仮想CPUは実際には単一のCPUのパイプラインにできる空きを有効活用するためのものであるからである

    3. ULEと4BSDの性能の差はあまりない
    4. 深く検討するなら少々データ不足気味だがおおざっぱに言えばこのテストでは性能面であまり大きな差は出ていない。1%程度の差は計測誤差の可能性もある。

(一応)続く

Posted at 01:41 in computer

Archives
Powered by
blosxom 2.0
and
modified by
blosxom starter kit