新しい会話を開始

Solved!

ソリューションへ移動

クローズ

10 メッセージ

463

2023年7月17日 23:00

Intel Xeon Hyper Threadingを有効化した場合のスレッドの処理性能

PowerEdge R650を利用し、vSphere HAによる冗長構成をとらない構成で、仮想マシンを稼働させるシステムを構築中です。
物理合計コア=仮想マシンの合計コア数。

① HyperThreading(HT)を有効にし、複数スレッドの同時処理性能を向上を目的としたとき、シングルスレッドの場合でも性能はダウンしないという理解であってますでしょうか。
② HT(有効)の時、全コアが各々仮想コアを割り当て利用した場合、1コアあたりの処理性能は、HT(無効)>HT(有効)という理解であってますでしょうか。
③ HT有効であっても物理コア数分しかvcpuが割り当てされていない場合、各物理コアを占有的に使えるので劣化しないという理解であってますでしょうか。
④ HT有効時点で処理能力にキャップが嵌められるものかは分かりますでしょうか?
⑤ HT有効時に、ある瞬間のにおいて、物理コア単位で見たときに処理していない空きのものが存在していたとしても、
  異なるvCPU分の処理が同じ物理コア(異なるスレッド)で処理するようなスケジューリングがされるのかどうかに依存すると考えて大丈夫でしょうか。

よろしくお願いいたします。

Moderator

 • 

6.5K メッセージ

2023年7月18日 21:00

kit777さん
インテルのCPUに関してはよく知っているわけではないのですが探してみた情報をもとに
コメントさせていただきます。

① HyperThreading(HT)を有効にし、複数スレッドの同時処理性能を向上を目的としたとき、シングルスレッドの場合でも性能はダウンしないという理解であってますでしょうか。

→ダウンするという記載はないですがシングルスレッドではHyperThreading(HT)の効果ないようです。
参考:Hyper-Threading(ハイパースレッディング)とは?CPUの性能向上技術を解説
Hyper-ThreadingによるCPUの性能向上には、以下のようなデメリットがあります。

1.物理的なコア数に比べて性能が劣る

Hyper-Threadingによって追加された論理的なコアは、物理的なコアに比べて処理能力が低いため、性能向上には限界があります。

2.シングルスレッドでの性能は向上しない

Hyper-Threadingは、複数スレッドの同時処理によって性能を向上させるため、シングルスレッドの性能は向上しません。

② HT(有効)の時、全コアが各々仮想コアを割り当て利用した場合、1コアあたりの処理性能は、HT(無効)>HT(有効)という理解であってますでしょうか。

→ご認識の通りです。

③ HT有効であっても物理コア数分しかvcpuが割り当てされていない場合、各物理コアを占有的に使えるので劣化しないという理解であってますでしょうか。

→以下のコメントにもあるように必ずしも同等の機能という認識はしないほうがいいと思います。
参考:ハイパースレッディングとは

有効にすると場合OS側から見ると実際よりも2倍のコア数が認識されます。 OSの見た目上2倍になったようには見えますが、実際に性能が2倍向上するわけではなく効果がでる場合でも10~15%程度程度の向上となる場合が多いようです。

④ HT有効時点で処理能力にキャップが嵌められるものかは分かりますでしょうか?

→HTを有効にする時点でシステムが制限をかけることはなさそうですが②➂の参考情報を確認する限り、論理コアにすることでオーバーヘッドがあることは確かだと思います。


⑤ HT有効時に、ある瞬間のにおいて、物理コア単位で見たときに処理していない空きのものが存在していたとしても、異なるvCPU分の処理が同じ物理コア(異なるスレッド)で処理するようなスケジューリングがされるのかどうかに依存すると考えて大丈夫でしょうか。


→vCPUでの並行処理に関してはOS側でのアプリケーションがスケジューリングするはずなので大丈夫ではないでしょうか。

Intel® 64 and IA-32 Architectures Optimization Reference Manual 

Page 77
The fact that operating systems and user programs can schedule processes or threads to execute simultaneously on the logical processors in each physical processor.
(上記資料はHTに関する考慮事項などの記載もあるのでお勧めです)

4 Operator

 • 

1.7K メッセージ

2023年7月19日 08:00

vSphere環境であればCPUの割り当てやハイパースレッディングの考え方については、VMware vSphere 6.5 Host Resources Deep Dive という資料が詳しいです。(Freeでも入手可能。ググると出てきます。)

HT有効時であっても同じ物理コア内で単一のスレッドしか動作していない場合、ESXiはHT無効時と同等のCPU時間とみなします。一方で複数のスレッドが動作している場合は、それぞれのスレッド(論理コア)は62.5%のCPU時間とみなします。

例えば2つの物理コアがあり、CPU時間の割り当てを必要とするvCPUが3つあった場合を考えます。

HT無効時は2つのvCPUが100%の物理コアCPU時間を割り当てられますが、3つ目のvCPUは待ち(CPU Ready)となり処理が進みません。トータルのCPU時間は100% *2 で200%となります。

HT有効時であれば論理的に4つのコアがあることになりますので、1つ目の物理コア上でvCPU1が、2つ目の物理コア上でvCPU2と3が動作するような想定ができます。この場合、1つ目の物理コアではvCPU1に100%の物理コアCPU時間が割り当てられ、2つ目の物理コアではvCPU2と3にそれぞれ62.5%の物理コアCPU時間が割り当てられます。この場合のトータルのCPU時間は100 + 62.5*2 = 225%ととなり、合計のCPU時間が多く計算されているため、より多くの処理ができていることになります。

物理CPUの空きがある際に、優先的に占有可能な物理コアのスレッドが割り当てられるかどうかは、NUMA Node考慮や単一仮想マシンに対するリソース割り当てなどの最適化なども考慮してスケジューリングされるため、必ずしもそうなるとは言えないと思います。

合計のCPU時間(処理スループット)よりも、物理CPUの占有状態を優先したいのであれば、HTを無効にする選択肢もあるかと思います。もしくは、vCPU:pCPUを1:1にしてオーバーコミットなしでサイジングをすればHT無効に優位性があるかもしれませんが、その場合はそもそも仮想化する目的の再確認が必要になりそうです。

もちろんCPUのオーバーコミットだけが仮想化のメリットではないので、vCPU:vCPUを1:1にするサイジングもあり得ます。とはいえ、基本的に仮想化基盤においてはCPUのオーバーコミットが前提となっていることがほとんどだと思います。そのため、合計の処理スループットを向上させるためにHT有効が基本であり、VM間で優先度をつけたいのであればリソース設定(シェアや予約など)で賄うほうがvSphereのデザインに即しているのではないかと思います。

また、案件観点で考えると性能要件のベースは基本的に既存環境の性能になると思います(質問に無い前提を勝手に妄想してます)。
日本においては多くの場合、既存環境では4~6年ほど前のCPUを利用していると思いますが、5年前のCPUと今のCPUを比べた際に、同じ動作周波数とコア数であっても処理性能は向上していますので、HT有効/無効の間にわずかな性能差異があったとしても、CPU自体の正常向上を考慮すれば、気にする必要がないことがほとんどではないかと思います。

参考:
解決済み: VXRAILに搭載するCPUの性能について - Dell Community
解決済み: VXRAILのvCPU per Coreについて - Dell Community

10 メッセージ

2023年7月19日 02:00

ayasさん

ご丁寧なご回答、ありがとうございました。
ご連携いただいた資料についても確認させていただきます。

どうもありがとうございました。

 

10 メッセージ

2023年7月20日 03:00

naoyuki_kanedaさん
ご丁寧なご回答、ありがとうございました。
とても参考になりました。
どうもありがとうございました。

イベントは見つかりませんでした!

Top