概要
Hyper-V の仮想プロセッサ (VP) と論理プロセッサ (LP) の対応について、マニュアルの記述を引用します。
Hyper-V Hypervisor のさまざまな種類のスケジューラを理解して使用する | Microsoft Learn
- ルート パーティションの各仮想プロセッサ (VP) は、論理プロセッサ (LP) に 1:1 でマップされます。 ホストの VP は、常に同じ基盤の LP で実行されます。ルート パーティションの VP の移行は必要ありません。
- 既定では、ホスト VP を実行する LP は、ゲスト VP も実行できます。
- ゲスト VP を使用可能な任意の論理プロセッサ上で実行するようにハイパーバイザーがスケジュールする場合があります。 ゲスト VP をスケジュールする際、ハイパーバイザー スケジューラは、一次キャッシュの局所性、NUMA トポロジ、およびその他のさまざまな要因を考慮する必要があります。最終的には、VP はいずれのホスト LP でもスケジュールされる可能性があります。
ルートパーティションは VP と LP が 1:1 で対応するとあります。一方、ゲストOS では VP と LP の対応が動的に変化することを示唆しています。
ゲスト OS での VP / LP の対応について、環境やワークロードを変えて検証してみました。その結果、環境やワークロードによって LP の利用状況の傾向に違いがみられました。
検証環境
検証環境 1
Hyper-V
構成バージョン | 9.2 |
---|---|
プロセッサ | 4個の仮想プロセッサ |
OS | Red Hat Enterprise Linux release 9.1 |
検証環境 2
Hyper-V
構成バージョン | 9.2 |
---|---|
プロセッサ | 4個の仮想プロセッサ |
OS | Red Hat Enterprise Linux release 9.1 |
検証内容
LP の使用率をパフォーマンスモニターで確認しました。
オブジェクト:Hyper-V Hypervisor Logical Processor
カウンター:% Total Run Time
インスタンス:Hv LP 0-3(計 4 個)
また、異なる検証環境で LP の利用状況の傾向に違いがあるかを確認しました。
ストレステストを単一 VP で実行
CPU 0 (VP に相当)に対してストレステストを実行します。
# taskset -c 0 stress-ng -c 1 -l 100
<検証環境 1>
<検証環境 2>
検証環境 1 で 07:58:58 頃から実行しました。全ての LP (LP 0-3) でまんべんなく使用率が上がっています。
検証環境 2 で 08:49:24 頃から実行しました。LP の 使用率が LP0, LP1 に偏って見えます。
いずれにせよ、ゲスト OS の VP が LP と 1:1 で対応していない、ということが分かります。
Apache HTTP Server と Apache Bench を単一 VP で実行
CPU 0 で Apache HTTP Server と Apache Bench を実行します。
# taskset -c 0 httpd -k start # taskset -c 0 ab -c 1 -n 1000000 http://localhost/
<検証環境 1>
<検証環境 2>
検証環境 1 で 07:41:55 頃から実行しました。全ての LP (LP 0-3) で使用率がまんべんなく上がっています。
検証環境 2 で 08:16:27 頃から実行しました。LP の 使用率が LP0, LP1 に偏って見えます。
Apache HTTP Server と Apache Bench を異なる VP で実行
CPU 0 で Apache HTTP Server、CPU 1 で Apache Bench を実行します。
# taskset -c 0 httpd -k start # taskset -c 1 ab -c 1 -n 1000000 http://localhost/
<検証環境 1>
<検証環境 2>
検証環境 1 で 07:49:07 頃から実行しました。2つの LP (LP0, LP1) で使用率が増加し、残りの LP (LP2, LP3) はあまり変化がありませんでした。
検証環境 2 で 08:06:58 頃から実行しました。2つの LP (LP0, LP3) で使用率が増加し、残りの LP (LP1, LP2) は使用率が多少上がった程度でした。
検証補足
例示した検証結果では検証環境 2 で LP の使用率に偏りが見られました。ですが、別日に測定すると偏りが減っていることもありました。よって、測定時点の状況によって傾向に違いが出る可能性もありそうです。
まとめ
Hyper-V のゲスト OS では VP / LP の対応が動的に決定することを検証からも裏付けました。
また、LP の利用状況は環境やワークロードによって左右されることが分かりました。これはマニュアルの『ゲスト VP をスケジュールする際、ハイパーバイザー スケジューラは、一次キャッシュの局所性、NUMA トポロジ、およびその他のさまざまな要因を考慮する必要があります。』という記述に対応した挙動と考えられます。