64bitの日記: Dual Core & HT は本当に有効? 2
日記 by
64bit
私のDual Xeon with HTマシンで,パフォーマンスが逆に落ちる現象に遭遇することがあります。ちゃんと検証したわけでないですが,Intel社がメリットを主張するDual Core & HTにおいて,本当に効果を得るか疑問があります。
その現象が起きるのは,たとえばWindows Media エンコーダがそうです。Windows Media エンコーダは,Dual CPUの場合にそれぞれを有効に使うように最適化されていると思われます。このときDual Xeon with HTでは,CPU消費合計が50%を超えない(※)ことがあるんです。一方のCPUに偏って処理が割り当てられた状態だと思われます。すなわち,Pentium4上のHTを利用しているのと同じです。これでは,Dual CPUの意味がありません。HT機能を解除するとCPU消費合計は100%近くまでに達します。
たとえば,アプリケーションが3CPU以上を考慮して最適化されていれば効果を得やすいと思います。その場合でも,負荷と処理能力の不均衡から思うほどにはならないのではないでしょうか。OSが,負荷状態に応じてCPU資源の割当先をリアルタイム制御できれば話は早いと思います。でもそれは容易なのでしょうか。難しい問題のような気もしますが。
(※)4CPU扱いになるので,仮にDual CPUそれぞれに処理が割り振られても50%を超えることはまずありえません。(オーバヘッドが増えるなどの理由により)
マルチスレッドプログラミング (スコア:1)
もっとも、最近はHyperThredingが普及してきたこともありマルチスレッドで動くプログラムが増えつつあるでしょうが、それでも3スレッド以上を動かすようなプログラムはすくないのではないでしょうか。
私も自宅ではDualCPU環境ですが、大抵のプログラムは1スレッドで動いているようでCPUの稼働率は50%止まりが多いです。
それから、HyperThredingはあくまでCPUの空き演算器を利用してい擬似的に複数スレッド処理を行うだけなので、単一処理であればHyperThredingをoffにした方が速いはずです。
一般的に言われていることですが、マルチコア、マルチCPU環境は処理性能を上げるための仕組みと言うよりは、複数のプログラムを同時実行しても処理時間をなるべく落とさないようにする仕組みと考えた方が良いでしょう。
自宅でデスクトップとしてしかDualCPU環境を利用していませんが、なにをするにもストレスがかからず快適ですよ。たとえCPUがPentiumIIIと、世代的に古いものであっても。
# DiskがFullSCSIというのもあるかもしれませんが。
Re:マルチスレッドプログラミング (スコア:1)
もっとも、最近はHyperThredingが普及してきたこともありマルチスレッドで動くプログラムが増えつつあるでしょうが、それでも3スレッド以上を動かすようなプログラムはすくないのではないでしょうか。
そこで気になっているのが,Dual Coreが普及するにつれて,“2スレッドを積極的に使うようなプログラム”が増えたときの場合です。Dual Core + HTマシンにおいて,3スレッド以上を使うようなプログラムでは効果を得るかもしれません。しかし,Dual Coreプロセッサ向けに,良かれと思って実装された“2スレッドを積極的に使うようなプログラム”の場合,HTをONにしておくとOFFにしたときに比べてパフォーマンスが低下する,という現象が生じるのではないかと考えるのです。そうなったときに,はて?HTって逆効果?みたいなことになりえると思うのです。3スレッド以上を使うようなプログラムが増えれば別ですが,ご指摘のとおり,それはまずありえないでしょうし。