ハイパースレッディングのパフォーマンス。

 ハイパースレッディング技術って、物理的に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の方がよい。