- PR -

Hyper-ThreadingテクノロジはPCに革命を起こすか?

投稿者投稿内容
MyTime
ベテラン
会議室デビュー日: 2002/01/03
投稿数: 83
投稿日時: 2002-11-20 02:43
 Hyper-Threadingテクノロジで性能が向上するのは、Windowsに限られた特異現象なのではないでしょうか?

 この秋に販売開始されたHyper-Threadingテクノロジ対応を謳っているLinuxでベンチマークをとってみたのですが、Hyper-Threadingテクノロジを有効とすると無効の場合の80〜90%程度の性能しか出ません。
 例えば、Hyper-Threadingテクノロジ対応のXeonを積んだ環境で、SPECcpu95をgcc3.2を使って実行すると、多重度が低いときには結果のばらつきが大きく、正確な値が計測できませんが、70〜80%とかなり低いものになっています。多重度を4以上にすると結果が安定していきますが、90%を超えるような性能は出ていません。
 単純に考えると、性能に関しては、Hyper-Threadingテクノロジを有効にすると、実クロックの半分のクロック数で動作するCPUが2つ現れると考えた方が良いようです。この系列のCPUの場合、CPU2個の場合のMP係数が最高でも1.8程度ですので、0.5*1.8=0.9で90%程度の性能しか出ない理由が説明できます。

 Hyper-Threadingテクノロジを有効にすると30%程性能が良くなるという根拠がわかりません。どこかに分かりやすく説得力のある資料はないでしょうか? Intelの説明を読んでみましたが、現実のベンチマークの結果を考えると、妥当性に疑問が残ります。
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-11-20 04:34
http://www.tomoya.com/ の 効きの悪いハイパースレッディングのナゾ とか。
ron
常連さん
会議室デビュー日: 2002/08/19
投稿数: 46
投稿日時: 2002-11-20 11:11
http://pcweb.mycom.co.jp/special/2002/ht/index.html
かなり丁寧に解説されているので参考になると思います。
未記入
ぬし
会議室デビュー日: 2002/03/28
投稿数: 255
投稿日時: 2002-11-20 15:07
> Hyper-Threadingテクノロジを有効にすると30%程性能が良くなるという根拠がわかり
>ません。どこかに分かりやすく説得力のある資料はないでしょうか? Intelの説明を
>読んでみましたが、現実のベンチマークの結果を考えると、妥当性に疑問が残ります。
そもそも単純なベンチマークで差が出るような性質のものではないのでは?
Hyper-Threading用に新たに開発した専用ベンチマークだというのなら
話は変わりますが.

むしろ普通のアプリを複数動かして,その処理時間を計測した方が良いくらいかと.
#もちろん,最適化が不十分という可能性もなくはないが,それはまた別の問題.
横山哲也
大ベテラン
会議室デビュー日: 2001/10/01
投稿数: 163
投稿日時: 2002-11-20 22:58
そもそもLinuxのカーネルって、マルチプロセッサに
最適化されているんですか?

ハイパースレッドは、結局マルチプロセッサと同じ
技術なので、カーネルの排他制御がうまくいっていないと
システムコールがボトルネックになってしまいます。
(ちょうどWindows 95カーネルみたいに)

また、アプリケーションもマルチスレッドに対応していても
最適化がされていない可能性もありますよね。

_________________
Global Knowledge Network
MyTime
ベテラン
会議室デビュー日: 2002/01/03
投稿数: 83
投稿日時: 2002-11-20 23:22
 皆さん、どうもありがとうございます。
 SPECcpu95(http://www.spec.org/osg/cpu95/)は、ユーザインタフェースのないバッチ型のベンチマークです。今回行ったのは、CINT95のみです。gnugoの思考ルーチンとか、gcc,compress,perlなど古くから使われている一般的なツールに特定の動作をさせたときの性能を計測するものです。多重度といっているのは、いくつのベンチマークプロセスを同時に実行しているかという指数です。最新のものはSPECcpu2000というものもありますが、Linuxの環境では、ソースに手を入れないと計測できない場合が多いようです。
 SPECcpu95の性能が低いということは、古くからある、CPUをフル回転させるようなバッチ処理の処理能力が低いということになります。
 コンパイラの最適化については、面白いことに-mcpu=pentium4とか、-march=pentium4などアーキテクチャに合わせた最適化を指示すると、Hyper-Threadingテクノロジを有効にしたことによる性能差が大きくなる傾向があったことです。

 紹介していただいた記事を参考にして、SPECweb99を計測してみました。こちらの結果は、Hyper-Threadingテクノロジを有効にしたことで、性能が23%程良くなるという結果が出ました。Linuxでも、webサーバ用途なら、Hyper-Threadingテクノロジの恩恵を得られるようです。


[ メッセージ編集済み 編集者: MyTime 編集日時 2002-11-20 23:24 ]
井上孝司
ぬし
会議室デビュー日: 2001/09/08
投稿数: 668
お住まい・勤務地: 東京都
投稿日時: 2002-11-21 00:01
引用:

MyTimeさんの書き込み (2002-11-20 23:22) より:
SPECcpu95の性能が低いということは、古くからある、CPUをフル回転させるようなバッチ処理の処理能力が低いということになります。



私の解釈が正しければ、そもそも Hyper-Threading というのは、CPU が能力をもてあましている部分を有効活用するものだから、最初からフル回転していたら効果が出にくい、ということになるんでしょうか。
とすると、効果を発揮する局面とそうでない局面を、かなり激しく選ぶかもしれませんね。
未記入
ぬし
会議室デビュー日: 2002/03/28
投稿数: 255
投稿日時: 2002-11-21 09:58
>私の解釈が正しければ、そもそも Hyper-Threading というのは、CPU が能力をもて
>あましている部分を有効活用するものだから、最初からフル回転していたら効果が
>出にくい、ということになるんでしょうか。
まさにその通りだと思います.

>とすると、効果を発揮する局面とそうでない局面を、かなり激しく選ぶ
>かもしれませんね。
ただし,現在では単一プロセス/スレッドのみでCPUをフル回転させるような
用途というのは,そう多くないと思います.(OSの起動時か,後はゲームくらいか?)

特にサーバー用途では,多数のユーザーが同時並行的に使用するのが前提ですので,
Hyper-Threadingが有効になる場面が多いでしょう.これに対しパソコン用では
必ずしも有効な局面ばかりではないとは思います.が,実際にはパソコン用で
CPUパワーを気にする局面ってどれほどありますかね?

スキルアップ/キャリアアップ(JOB@IT)