ぱと隊長日誌

ブログ運用もエンジニアとしての生き方も模索中

クライアントシステムでも Hyper-V のハイパーバイザースケジューラを変更できる

クライアントシステムの Hyper-V のハイパーバイザースケジューラとして「ルートスケジューラ」のみサポートされます。

クライアント システムでのルート スケジューラの使用
Windows 10 バージョン1803以降、クライアント システムではルート スケジューラが既定で使用されます。クライアント システムでは、ハイパーバイザーを有効にすると、仮想化ベースのセキュリティと WDAG ワークロードの分離がサポートされ、異種のコア アーキテクチャを使用する今後のシステムを適切に運用できます。 これは、クライアント システムでサポートされる唯一のハイパーバイザー スケジューラの構成です。 管理者は Windows 10 クライアント システムで既定のハイパーバイザー スケジューラの種類を上書きすべきではありません。

Hyper-V Hypervisor のさまざまな種類のスケジューラを理解して使用する | Microsoft Learn

ですが、クライアントシステムでも Hyper-V のハイパーバイザースケジューラの設定をすることは可能です。設定方法を引用します。

To select a scheduler type, open a command prompt with administrator privileges:

bcdedit /set hypervisorschedulertype type

Where type is one of:
Classic
Core
Root

The system must be rebooted for any changes to the hypervisor scheduler type to take effect.

Understanding and using Hyper-V hypervisor scheduler types | Microsoft Learn

ハイパーバイザースケジューラの設定変更を以下の環境で試しました。

プロセッサ AMD A10-5800K
OS Windows 10 Pro バージョン 21H2

ハイパーバイザースケジューラとして「従来のスケジューラ」を設定します。

PS > bcdedit /set hypervisorschedulertype Classic
この操作を正しく終了しました。

再起動後、現在のハイパーバイザースケジューラの種類判定を行います。

PS > Get-WinEvent -FilterHashTable @{ProviderName="Microsoft-Windows-Hyper-V-Hypervisor"; ID=2} -MaxEvents 1

   ProviderName: Microsoft-Windows-Hyper-V-Hypervisor

TimeCreated                      Id LevelDisplayName Message
-----------                      -- ---------------- -------
2022/11/17 20:23:13               2 情報             Hypervisor scheduler type is 0x1.

ハイパーバイザー起動イベント ID 2 は、次のとおりのハイパーバイザー スケジューラの種類の情報を提供します。

  • 1 = 従来のスケジューラ、SMT は無効化
  • 2 = 従来のスケジューラ
  • 3 = コア スケジューラ
  • 4 = ルート スケジューラ
Hyper-V Hypervisor のさまざまな種類のスケジューラを理解して使用する | Microsoft Learn

「従来のスケジューラ、SMT は無効化」が選択されたことを確認できました。

なお、今回の環境だと「コア スケジューラ」を設定しても「従来のスケジューラ、SMT は無効化」が選択されてしまいました。

マニュアルには以下の記載があります。

ハイパーバイザーのコア スケジューラは、Windows Server 2016 および Windows 10 バージョン1607 で導入された従来のスケジューラ ロジックに代わる新しい手段です。

Hyper-V Hypervisor のさまざまな種類のスケジューラを理解して使用する | Microsoft Learn

よって、Windows 10 だから利用できないというわけではなさそうです。

マニュアルには以下の記載もありました。

ホストの SMT が無効になっているコア スケジューラの動作
ハイパーバイザーがコア スケジューラの種類を使用するように構成されているにもかかわらず、SMT 機能が無効になっているか、仮想化ホスト上に存在しない場合、ハイパーバイザーは、ハイパーバイザー スケジューラの種類の設定に関係なく、従来のスケジューラの動作を使用します。

Hyper-V Hypervisor のさまざまな種類のスケジューラを理解して使用する | Microsoft Learn

今回利用した環境のプロセッサ AMD A10-5800K は 4 コアで構成され、かつ SMT は無効(サポートしていない)ようです。このために「コア スケジューラ」を選択しても「従来のスケジューラ、SMT は無効化」が選択されたようです。

今回の環境で試した設定と実際のスケジューラ動作を一覧にします。

設定 スケジューラ
Classic 従来のスケジューラ、SMT は無効化
Core 従来のスケジューラ、SMT は無効化
Root ルート スケジューラ

このように、クライアントシステムでもハイパーバイザースケジューラの設定をすることは可能です。ただし、「ルートスケジューラ」のみ公式にサポートされる構成であることに注意が必要です。