(1)スペックを考える


新マシンを組むにあたって、スペックを考えるのは大変楽しいことである。 それではスペックを決めよう。

前置き

 分野によって違うと思うが、私は事務系も組めば、CADも組み、Webツールも組むといった、よくあるプログラマーである。メインとなる開発系はマイクロソフトのVC++で最近は3次元CADもどきソリッドモデラー経由見積り積算なんてのを書いている。また、ヒューレット・パッカードの携帯PCであるHP200LXのソフトも書いているから、MASMやMSCも使う。ようするに何でもやらなきゃならないフツーのWindowsプログラマーである。

最初は良いが

 こんなプログラマーにとって、なかでも一番問題なのがビルドの速度だ。これは速ければ速いほどいい。

 プログラムも書出した最初のうちはあっと言う間にビルドは終わってしまう。しかし、なかほどから完成間近になるとコードは増えリソースも大きくなって、ビルドの時間が気になるほどになってくる。

 それに加え、デバッグの際の起動時間も大変長く感じられるようになってくる。こうなると、開発当初はリズムよくポンポンと進んでいたのが、だんだんイライラしてきて能率あがらないことしばしばである。

 今のシステム(P5−166)はちょうど1年前くらいに486/66から乗り換えた。乗り換え当初は、素晴らしく高速になって感激したものだが、半年もすると遅く感じられてきた。人間とはそうゆうものなのであろう。

時代はひとり2台のWS

 かたや開発スタイルもだんだん変わってきていて、一人2台の時代になっている。現在の高性能化したパソコンは1台でなんでも出来るようになった。しかし、2台操作できれば格段に作業効率がUPする。

 例えばヘルプである。現在のVC++かつMFCベースの開発だと、膨大な量のオンライン・マニュアルを絶えず参照しなければならない。これが苦痛になる。なぜなら画面に同時に表示できないからである。だいたい普通はめいっぱいソースコードが表示されているわけで、画面を切り替えてヘルプを参照しなければならない。7割くらいは問題ないのだが、残りの3割は、例えば動作についての説明だとかMFCのソースである場合で、常時表示されていないと大変能率が落ちることがある。

 これが2台手元にあると片方は通常のコーディングやデバッグ画面、もう一方はオンラインヘルプといった具体にとても快適なのである。 また、メインの開発マシンはそのままの状態で、もう1台のマシンでリソースのためのグラフィックエディタやサウンド編集なども行なえる。

 またこれらはLANで繋ぐので片方はNT3.51、もう一方はWindows95という違ったOSを走らせておいて、ビルドが終わった時点で異なるOSでの動作試験がすぐ気軽にできる。1台しかないと、ある時点でリブートし、システムコマンダーでスイッチしてようやくテストとなるわけで、面倒な事は自然に怠ることとなり、「あれっ?95で動かない?」ってハメになってしまう。

 やってるところはすでにやっている事だが、時代はひとり2台(プラス共有のファイルサーバー)になっている。

何が不満なのか

 不満を挙げればきりがないし、それを望んでいたら開発費がいくらあっても足りなくなる。だから、一番不満なのは何かということが肝心である。

やはりビルド速度であろう。これには2つあって、CPUを使うコンパイル自体の速度とディスクアクセスの速度である。NTのパフォーマンスモニタを見れば、ビルド中にCPUをどれだけ使っているかを知ることが出来る。

 これで調べてみると、ヘルプのコンパイルとヘッダのプリコンパイルが終わった直後からCPUはほぼ100%使い切っていて、リンクに入ると半分くらいに減る。リンク時にはファイルを読む・書くといった処理が多いので、ディスクアクセスがボトルネックになっているからであろう。

 コンパイル時のCPU使用率がほぼ100%ということは、CPUをパワーアップすればもっとコンパイル速度を上げる事が可能だということである。かたや、リンク時はCPUは遊んでいるから、ディスクの読み書き速度を上げる必要がある。

Dualがいい

 このように分析してみると、Dual CPUマシンが適しているだろう。NTはスレッドを複数あるCPUに割り振ってくれるから、VC++の処理自体も速くなりそうだし、ディスクまわりも期待出来そうである。なによりも Dualプロセッサという響きがワクワクさせてくれる。本当の理由は実はこれがやりたいのであった(笑)。

スレッドはいくつ動いているのか

 1コのCPUでOSからプログラムまですべてを動作させるよりも分散させるほうが効率が良いに決まってる。マルチCPUの場合はスレッド単位で各CPUへの割り当てが可能みたいなので、VC++のスレッド数を調べてみた。(注:スレッドを正確にプロセス・ビューアーで調べたのではなくて、NTのパフォーマンスモニタの Threads で調べた値である)

状態 スレッドの総数 VC++のスレッド
VC++4.2起動前 121 0
VC++起動直後 125 4
プロジェクトをロード 127 6
ビルド中 132 11
デバグ時 136 15

 このように、VC++ 4.2 はビルド時に計 11 のスレッドがあって、そのうち 5 スレッドはビルド時に使われるようだ。 こうしてみると、Dual CPU では速くなるような気がする。 特にデバグ時にはさらにスレッドが増えるのでもう気分はDual CPU である。VC++起動以前に120程のスレッドがOSで動いている事を考えると、Dual しかもう考えられない(笑)。

ディスク・アクセスの高速化

 リンク時には、ディスクアクセスの速度がものをいう。そこで、2台のSCSIハードディスクでストライプセットを少し前から常用している。これは速くなったと感じている。ストライプセットと聞くと、なんだか1台HDDが壊れただけで大事なソースコードがぶっ飛ぶかもと思うかもしれないが、ぶっ飛ぶときはぶっ飛ぶわけで、ストライプセットに限らない。この対策はバックアップを常に物理的に異なるハードウェアに複数コピーしておくしかない。したがって、ストライプセットは使おう。

 これはまだはっきりしていないのだが、NTの作るページファイルもストライプセットドライブに置き直すと効果があるはずである。また、テンポラリー先も関係がありそうである。折りを見て実験してみたい。

CPUの高速化

 CPUは速ければ速いほうが良いが、予算というものがあるので出来るだけコストパフォーマンス高く構成してみたいものである。

 ここで、CPU を選ぶ前の予備知識として、ベースクロックは速いほうが良いということをよく聞く。 例えば、Cyrix P-200+GP(150MHzクロック) が Pentium 200MHz よりも速い結果が確認されている。これは、Pentium 200MHzがベースクロック 66MHz の3倍なのに対して、Cyrix の方はベースクロック 75MHz の2倍で動作している点だ。 ベースクロックが速いマシンの方が I/O などの点で速いそうだ。 しかるに、CPUを選択する場合にはベースクロックが 50MHz の P5-100, P5-150 やベースクロックが 60MHz の P5-120, P5-180 は選択せず、ベースクロック 66MHz の P5-133, P5-166, P5-200 を選択肢にした。

 現時点でのCPUの価格はP5−133が24000円、P5−166が43000円、P5−200が58000円くらいである。Dual CPUにしたときに大体1.5倍速になるとすると次の表ができる。

CPU 期待される速度 Dual CPUの費用 1MHz当たりの費用
P5−133 Dual 200MHz 48,000円 240円
P5−166 Dual 250MHz 86,000円 344円
P5−200 Dual 300MHz 116,000円 387円
P5−200 Uni 200MHz 58,000円 290円

 現時点では、P5−133 Dual が一番コストパフォーマンスが良い。将来を考えるとP5−200MHz以上はPentiumProになってしまうので、PentiumプロセッサでDual 300MHz出せるP5−200も捨て難い。しかし Dual マシンの実際の効果がまだわからないことと、カネがかからないという点でP5−133 でDualしてみようと思う。 今後 P5−200 ははるかに安くなるであろうから、この 133 Dual が遅く感じられてきた時点で換装することができるので、多少マシンの寿命は長くなることであろう。

 今の開発マシンはP5−166 Uniなので、それとの速度比較をしてみるつもりだ。

戻る 次へ