ハイパースレッディングとは

ハイパースレッディングとはIntel製の一部のCPUに備えられている一つのCPUコアで2スレッドを同時処理可能とする機能です。 この機能が使えるCPUを使用している場合は大抵の場合BIOSのレベルで有効/無効を変更することができ、有効にすると場合OS側から見ると実際よりも2倍のコア数が認識されます。 OSの見た目上2倍になったようには見えますが、実際に性能が2倍向上するわけではなく効果がでる場合でも10~15%程度程度の向上となる場合が多いようです。

ハイパースレッディングを有効にすべきか

ハイパースレッディングが有効に働くかどうかはプログラムの内容にも依存するためどの程度の効果がでるかは実際のプログラムでの確認が必要です。 有効にする場合は以下に注意する必要があります。

・有効にしてもパフォーマンスが向上するとは限らない
逆にパフォーマンスが下がる可能性さえあります。必ず検証して効果があることを確認してから有効にしましょう。

・見かけ上CPU使用率が低く表示される
ハイパースレッディングを有効にした環境ではOS上のCPU使用率が50%と表示されても実際にはCPUの余力は0%近くになっている可能性があり実際のCPUリソースの余力がわかりづらくなります。 CPU稼働率を監視する場合は注意が必要です。

・ORACLEのcpu_countパラメータが倍に設定される
ORACLEに限った話ですがORACLEはインスタンスの起動時にサーバのCPU数を自動的に把握してCPU_COUNTパラメータが未設定の場合自動設定します。 CPU_COUNTは実行計画やSGAの構造等に影響を与えるパラメータでありハイパースレッディングを有効にしてCPU_COUNTが倍になると実際には4コアしかないサーバでも8コア積んでいるサーバを想定した動作になってしまいます。 上述の通り実際に8コアある場合とハイパースレッディングを有効にして4コアが見た目上8コアになっている場合では多重処理性能は実際に8コアある場合よりも劣るため結果として遅い実行計画が立てられる可能性があります。
★ORACLE案件承ります