ハイパースレッディングのパフォーマンス。
ハイパースレッディング技術って、物理的に1個のCPUを論理的に2個に見せかけて、物理CPUのリソースを最大まで使おうってコンセプトのもの。タスクの待ち時間が頻繁に発生する環境では、CPUの割り当てをキッチリOS側でやってくれれば効果があるそうだ。
- 以下の物理CPU数はコア数のことです。物理的なCPU(ゲジゲジ足を持ったやつ)の数は、紛らわしいのでソケット数とか言ったりします。
■ハイパースレッディングOFF 物理CPU1個 60%使用 40%空き タスクA動作 タスクB待ち ■ハイパースレッディングON 物理CPU1個 論理CPU1 60%使用 タスクA動作 論理CPU2 40%使用 タスクB動作
ただ空き時間を効率よく使う為の機能なので、空き時間が発生しない高負荷の状態の時は、論理CPUを動かすためのオーバーヘッドでいっぱいいっぱいになるそうな。
そして、物理CPUのキャッシュメモリは、論理CPU2個で共有されるので、キャッシュが共有できるようにタスクが割り当てられないと、キャッシュのヒット率が下がる。
会社のある案件で、XEONのHTを有効化するとOracleがスローダウンしてしまう問題が起こって、その原因として考えられるのが上記のような問題だった。
デュアルコアAtom、ハイパースレッディングOFF(WindowsからはCPU2個に見える)のほうが全体的に動作が軽い気がしたんで思い出した。ベンチを取るとハイパースレッディングONの方が結果は良いが。実際のところはどうなのか。気のせい?
【仮説】 Windowsは2CPU以上あれば効率的に動く。 【仮説が真ならば】 物理CPU1の場合 ハイパースレッディングONの方がよい。 物理CPU2以上の場合 ハイパースレッディングOFFの方がよい。