以下の内容はhttps://taityo-diary.hatenablog.jp/entry/2022/10/30/065511より取得しました。


Hyper-V で論理プロセッサと仮想プロセッサの対応は動的に変化する

(2022/11/27 追記)

本記事と同じテーマを含みつつ、検証データをより充実させた記事を公開しました。ご参照ください。
Hyper-V で論理プロセッサの利用状況は環境やワークロードに左右される - ぱと隊長日誌

概要

Hyper-V の論理プロセッサと仮想プロセッサについての説明を引用します。

ハイパーバイザは、プロセッサコアやハイパースレッディングのスレッドなど、論理的にCPUと扱えるものを「論理プロセッサ(LP)」として管理します。例えば、6コアのプロセッサが4ソケットあるサーバは、"24LPのマシン"と呼んだりします。

そして、このLPがそのまま仮想マシンにガチャンとくっつくわけではありません。仮想マシンについているプロセッサは、「仮想プロセッサ(VP)」というものなのです。VPは、LP上で実行されるプロセスみたいなものです。OSのカーネルがCPU時間をプロセスに割り当てるのと同じように、ハイパーバイザはLPの時間を細切れにしてVPに割り当てます。

「Hyper-VのCPUリソース管理について」(1) Windows Server Insider − @IT

この説明では確証を得られなかったのが、LP と VP の対応関係は静的なのか動的なのか、という点でした。例えば、LP 0-3 と VP 0-3 があるとき、LP 0 と VP 0 の対応関係がどこかの時点で決定するのか?それとも LP 0-3 のいずれにも VP 0 は割り当てされるのか?ということです。

結論として LP と VP の対応関係は動的であり、LP 0-3 のいずれにも VP 0 は割り当てされる、となります。この検証結果をまとめます。

検証環境

ホスト

プロセッサ Intel Core i5-6600 CPU @ 3.30GHz ※ 4 コアのCPUです
OS Windows 10 Pro バージョン 21H2

Hyper-V

構成バージョン 9.0, 9.2 ※いずれでも再現できることを確認済み
プロセッサ 4 個の仮想プロセッサ
OS Red Hat Enterprise Linux release 8.6

検証内容

ゲスト OS 上で特定の CPU(VP に相当)へ負荷をかけます。VP が LP のいずれかへ固定して割り当てられていれば、その特定の LP の使用率が上がるはずです。

ゲスト OS が Linux なので、以下のコマンドで負荷をかけました。

# taskset -c 0 stress-ng -c 1 -l 100

ゲスト OS 上で特定の CPU にのみ負荷がかかっていることを以下のコマンドで確認しました。

# mpstat -P ALL 1

LP の使用率をパフォーマンスモニターで確認しました。
オブジェクト:Hyper-V Hypervisor Logical Processor
カウンター:% Total Run Time
インスタンス:Hv LP 0-3(計 4 個)

ゲストOSで特定のCPUに負荷をかけると全てのLPで使用率が上がる

ゲストOS で 16:07:44 過ぎから負荷をかけました。グラフから全ての LP (LP 0-3) で使用率が上がったと読み取れます。このことから、LP と VP の対応関係は動的であると結論付けました。




以上の内容はhttps://taityo-diary.hatenablog.jp/entry/2022/10/30/065511より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14