Windows2000 performance
(Hyper Threading Technology対応CPU)
標題の話は私のPCのCPUを交換しなければならなくなった事から始まります。もともとCPUの載せ変えの必要が生じたのは2nd(2ndとはアマチュア無線家の間で使われる言葉でSecond Harmonics“第2高調波”から採り、“子供”のこと)のCPU(Celeron 700MHz)を早くしようとしたためです。PentiumVの800Mhzにしたところ非常に不安定になってしまい、しかたなく、現行主力機のCeleron1.7Aを払い下げる?ことにしました。CPUが478-TypeであるためM/Bごと払下げねばならず後継機を策定することになったわけです。
後継機のM/BはAopenのAX4SG−UL(Intel 865G)に決めましたがFSB800でCPUはNorthwoodのみサポートし、現行のCeleron(1.7A Willeamett)は動かないと書いてあります。従ってCPUもこれに合わせてPentiumW2.60Cにしました。Northwoodのceleronもありますがこの際奮発してPentiumW2.60Cにしましたがこれが間違いの元でした。
<CPU M/B載せ替え>
Windows2000をASUSのM/BからそのままAopenに載せ換えても例の青い画面で止まります。WindowsMEで同様のことをtestしましたがWindowsMEの場合は騙しながら載せ変えてゆくと上手くゆくようですが...
そこで仕方なく再インストールすることにし、CD-ROMからUPDATEインストールを行いました。インストールしてあるプログラム、Fileは問題なく使えるようです。
と思っていたらTVチューナが動きません。調べてみるとCyberLinkのPower VCRとPower DVDが実行時にエラーになります。CPUが変ったためにエラーになるようです。CyberLinkに問い合わせたところPentiumW2.60Cが持っているようなHyper Threading Technologyには対応していないとの回答でした。Hyper Threading Technology機能とは平たく言うと「1つのCPUが複数(2つ)の擬似?CPUとして働く機能」です。更に調べてみるとWindows2000もこの機能には対応していません。BIOSのHyper Threading機能のON/OFFにあるコメントにはWindowsXPとLinuxカーネルの2.4にのみ対応すると書いてあります。それで今回Hyper Threading Technology機能付きCPUをWindows2000で使用するとどうなるかを検証してみました。
Windows2000は物理的なマルチプロセッサを含む様々なCPU環境に対応するために HAL(Hardware Abstraction Layer)と呼ばれるmoduleを複数用意してCPUに最適なそれを選んでインストールしています。Hyper Threading Technology機能付きCPUを搭載してWindoows2000をインストールするとmoduleはマルチプロセッサ用のそれがが選択される(M/Bにもよるかも知れませんがが...)ようです。物理的に複数のCPUがあると判断してしまうのでしょうがこれはCPUが実際に複数あるシステムを想定しており、PentiumW2.60cのような1つのCPUでの擬似マルチプロセッサ機能ではありません。すなわちWindows2000にはHyper Threading Technologyを処理するModuleは無いわけです。
選択されたマルチプロセッサ用のHALは「ACPIマルチプロセッサ(ACPI : Advanced
Configuration and Power Interface)」という名前がついていますがこれをそのまま使うとHyper Threading Technologyを持つCPUに対しては「効果なし」よりも「Overhead損」になるようです。
現在使用中のHALは[コントロールパネル]-[システム]-[ハードウエア]-[デバイスマネージャ]または[マイコンピュータを右クリック]-[管理]-[デバイスマネージャ]で表示されるツリーから「コンピュータ」のアイコンをクリックすることで確認できます。
<計測条件>
今回はこのあたりを検証するために「ACPIマルチプロセッサ」「ACPIユニプロセッサ」「ACPIプロセッサ」の3つについて処理時間を計測しperformanceを比較しました。「ACPIマルチプロセッサ」についてはM/B側のBIOSにあるHyper Threading TechnologyをEnable、Disable両方について計測しています。他はHyper Threading Technology=Disableです。計測用のプログラムですがよく考えると作成用のtoolを何も持っていません。仕方がないのでExcelのVBAを使って10万回の加算を複数回行うプログラムを作り、計測しました。
プログラムは末尾に載せておきます。
<計測環境> | |||||||||||||
1 | BIOS | Hyper-Threading Technology Enable | |||||||||||
CPU | 2.60c Northwood | ||||||||||||
OS | Windows2000 (HAL= ACPI Multi Prosessor) | ||||||||||||
2 | BIOS | Hyper-Threading Technology Disable | |||||||||||
CPU | 2.60c Northwood | ||||||||||||
OS | Windows2000 (HAL= ACPI Multi Prosessor) | ||||||||||||
3 | BIOS | Hyper-Threading Technology Disable | |||||||||||
CPU | 2.60c Northwood | ||||||||||||
OS | Windows2000 (HAL= ACPI Prosessor) | ||||||||||||
4 | BIOS | Hyper-Threading Technology Disable | |||||||||||
CPU | 2.60c Northwood | ||||||||||||
OS | Windows2000 (HAL= ACPI Uni Prosessor) | ||||||||||||
HAL : Hardware Abstraction Layer | |||||||||||||
ACPI : Advanced Configuration and Power Interface | |||||||||||||
上記4つのパターンで計測した結果のサマリーを次に掲げておきます <結果> |
|||||||||||||
処理時間 (h:mm:ss) | 2004年1月25日 | ||||||||||||
1 | BIOS HT Enable W2k HAL= ACPI Multi Prosessor | 平均 | |||||||||||
@ | time | 1回目 | 0:01:09 | 2回目 | 0:01:10 | 3回目 | 0:01:15 | 4回目 | 0:01:16 | 0:01:13 | |||
A | time | 1回目 | 0:01:10 | 2回目 | 0:01:11 | 3回目 | 0:01:15 | 4回目 | 0:01:16 | 0:01:13 | |||
総平均 | 0:01:13 | ||||||||||||
2 | BIOS HT Disable W2k HAL= ACPI Multi Prosessor | 平均 | |||||||||||
@ | time | 1回目 | 0:00:57 | 2回目 | 0:00:59 | 3回目 | 0:01:03 | 4回目 | 0:01:03 | 0:01:01 | |||
A | time | 1回目 | 0:00:58 | 2回目 | 0:00:58 | 3回目 | 0:01:03 | 4回目 | 0:01:04 | 0:01:01 | |||
総平均 | 0:01:01 | ||||||||||||
3 | BIOS HT Disable W2k HAL= ACPI Prosessor | 平均 | |||||||||||
@ | time | 1回目 | 0:00:57 | 2回目 | 0:00:58 | 3回目 | 0:01:00 | 4回目 | 0:01:02 | 0:00:59 | |||
A | time | 1回目 | 0:00:55 | 2回目 | 0:00:57 | 3回目 | 0:01:01 | 4回目 | 0:01:02 | 0:00:59 | |||
総平均 | 0:00:59 | ||||||||||||
4 | BIOS HT Disable W2k HAL= ACPI Uni Prosessor | 平均 | |||||||||||
@ | time | 1回目 | 0:00:54 | 2回目 | 0:00:55 | 3回目 | 0:00:59 | 4回目 | 0:01:00 | 0:00:57 | |||
A | time | 1回目 | 0:00:55 | 2回目 | 0:00:56 | 3回目 | 0:00:59 | 4回目 | 0:01:00 | 0:00:58 | |||
総平均 | 0:00:57 | ||||||||||||
<計測方法> | |||||||||||||
@PCを起動して10分後に100,000回の加算を3回行い、処理時間の平均を求める | |||||||||||||
A10分後に同様の計算を行い、処理時間の平均を求めるとともに全ての平均値を求める(赤字は総平均値) | |||||||||||||
簡単に言えばHyper Threading
Technology機能を使わない方が早いということです。このような測定のやりかたではOverhead時間分だけ遅くなるものと思われます。ACPI−UNIプロセッサとACPIプロセッサの違いは前者がAPIC(Advanced Programmable Interrupt Controller :ACPIではない...Hi )ベースの割り込み(IRQが16以上あります)を使っているのに対し、後者はPICベースの割り込み(IRQは15まで)を使っているという事です。
参考までに200,000回の結果はこれです。
<考察>
@WindowsXPはHyper Threading Technologyに対応していますが、不特定多数のUserがアクセスするサーバではなくPersonal
useに導入した場合はHyper Threading Technologyに対応したアプリケーションの少ない現状ではWindows2000を使用したのと同じ結果を示すと思われます。
AHyper Threading
Technologyは複数のアプリケーションがCPUの競合で待たされることを少なくするための機能でしょうから、本来このような単一のアプリケーションでperformanceを計測することはOSのOverhead Timeのみを強調する事になりかねません。この結果はこれを示しているのかも知れませんがWindows2000はHyper Threading
Technologyに対応していないことを前提にWindows2000のperformanceを計測しているのですからこの差がOverheadによるものであっても良いわけです。
BOperating Systemは元々アプリケーションプログラムから複雑なH/Wのコントロールを開放するのが目的であったはずですが今回のケースはH/Wの仕様変更の影響をアプリケーションプログラムがまともに被っています。新機能を引き出すためにアプリケーションをOptimizeする必要はあると思いますが動かなくなるというのは納得できません。メモリが足りないとかCPUの処理スピードが遅いとかOSの処理範疇を越えるものに関しては仕方がありませんがH/Wの機能をOSが吸収していないのは問題です。
C上述のことに関連しますがWindows2000にももう一つ適当なHALを加えてほしいものです。サポート対象のOSなのですから...。
尤も、XPを買わせるためのCompany Policyなら怒髪天を突くことになりますが...どうもそのようですね...。
<付録>
測定はこれで行いました。
いろいろ変更してテストしてみてください。但し結果に対してはいかなる責任も負いかねます。 Hi
WindowsXPにかかる、?万円の投資はそれに見合う効果が期待できそうにない(勝手にそう思っています...Hi)ので暫くはこのままにしておきます。
それよりCyberLinkでは対応の見通しは立っていないないとのことでしたのでPC上で作業をしながらテレビが見られないことのほうが重大です。Hi Hi