結果はいかに


さて、無事Dualになったところで、VC++のコンパイル・ベンチマークをやってみた。

VC++ビルドベンチマーク

結果はというと、実は思ったことははずれていた。つまり、ビルド処理に関してはDualにした意味があまり無かった。下の図はビルド中のCPU負荷をNT3.51のパフォーマンスモニタで見た結果である。 比較するために2つのグラフを載せた。

ユニ・プロセッサマシン
  • マザー Micronics
  • CPU Pentium 166MHz x 1
  • メモリ EDO 64M
  • Video Matrox Millinea 4M
  • SCSI Apadtec AHA-2940J
  • HDD IDE 1.6G (NT3.51)
  • HDD SCSI 2.1G x 2
  • OS Windows NT3.51ws SP5
Dualプロセッサマシン
  • マザー GIGABYTE GA-586DX
  • CPU Pentium 133MHz x 2
  • メモリ EDO 64M
  • Video ATI Mach64 2M
  • SCSI onboard Apadtec AIC-7880
  • HDD SCSI 2.1G x 1
  • OS Windows NT3.51ws SP4
ユニ・プロセッサマシン
Dualプロセッサマシン

Dualの効果

 確かに処理が分散されていることがわかる。 マルチプロセッサである。 しかしよく見ると、緑(第1CPU)と青(第2CPU)が互い違いになっていることがわかる。 この2つのグラフの和をとればほぼ100%になっている。 確かにスレッド毎に各CPUに振り分けられているのではあるが、結果的にPentium133MHzを交互に使っている勘定になり、ビルド速度はあまり速くない。 というか、ほぼPentium133MHzの速度(より多少速い程度)のようだ。 両方のグラフの時間軸は同じにとってあるので、ユニ166MHzマシンの方が速くビルドが終わっている。(上のグラフの手の形をしたマウスカーソルの時点)

 補足しておくが、ユニ166マシンのほうは、VC++本体およびプロジェクトを置いているドライブがストライプセットになっているのでディスクアクセスはユニマシンの方がかなり速い。 したがって、Dual133MHzマシンはハンディがあるので厳密な比較とはなっていないが、だいたいの感じはつかめたと思う。

 この結果でみると、Dual−CPUにした効果はあまりない。 ユニの200MHzマシンにしたほうが、はるかにビルドは速いであろう。 Dualの133MHzを2つ使ってその1.5倍速である200MHzをもくろんだのだのだが、期待は外れてしまったようである。 今の不満を解決するためにはDualマシンではなくてユニの超高速CPUを使うのが正解であった。 もっとも、現在はユニより遅いCPUを使っているわけだから、同じ速度のCPUであれば、Dualは間違いなくユニマシンより速いであろう。 この実験も後に166MHzが安くなってきたときにしてみようと思う。

Dual はサーバー向き

 よくDualマシンはサーバーに使われているが、こうして実験してみるとなるほどこの意味がよくわかった. サーバーは多くの別個の処理をそれぞれ行なわなければならない性格のものなので、マルチCPUはぴったりだ。

 ワークステーションで行なう処理は、動作させるプログラムがマルチスレッドを考慮して組まれているかによるが、同期処理を行なうプログラムは、ひとつのプロセッサに資金を費やした方が効果がある。 非同期処理を行なうプログラム、例えばWWWブラウザ等であるが、この場合は威力を発揮すると思われる。 Dualマシンが威力を発揮するのはタスクが増えた時で、息切れしにくい。 しかし,CPUが猛烈に速い場合はこれもそんなに重要なファクターでないだろう. 従って,同じ予算であれば,ユニCPUのマシンの方が動作は速いだろう.

Dual マシンの威力がわかるプログラム

 この画面は、VC++のマルチスレッドのサンプルプログラムである mtgdi.exe を実行し、スレッドを150作ってみたものである。 このプログラムは四角・丸・線の3種類の CWinThread からの派生クラスを使って組んであって、それぞれの図形が連続的に移動して壁にぶつかれば反射するというものである。 したがって、それぞれ勝手に動いてよい非同期処理である。

 これを実行すると両者の違いが良く分かる。 ユニ・プロセッサマシンでは、マウスをちょいと動かす度に、一瞬動作が止まるのであるが、Dualマシンではそうはならない。 同様に、別のプログラムを起動してみると、この差はさらにはっきりする。 Dualマシンは止まらないのだ。 このプログラムは多数のプログラムを立ち上げて作業している場合と同じ状態を作り出している。 ただ、ワークステーション上では、裏ジョブで走らせている以外はアクティブになっているウィンドウに注力しているので、他のタスクが多少息切れしても、表ジョブが高速の方が良い。

 このほかに自前のOpenGLの3次元グラフィックステクスチャー表示プログラムも試してみたが、CPUは互い違いに動作し、あまり高速化になっていない。 もっともOpenGLの高速化は、ビデオボードによるところが大きいのだが、テクスチャー処理をCPUで行なっている場合は、マルチCPUの効果が現われると踏んだのだがそうはならなかった。組みかたが悪いのかもしれないので後日調べてみることにする。

他のベンチマーク

有名なベンチマークのひとつである WinBench97 で測定すると、Dualの結果は現われなかった。 ユニ133MHzの結果ばかり出た。 なにか,Dualマシンの性能を評価するベンチマークはないだろうか.

 

戻る 前へ 次へ