Skip to content

Windows 11のHyper-V上仮想マシンでPMUを利用する方法

   

はじめに

先日,Twitterにて @KuniSuzaki さんと,WSL2のLinuxやVM上でパフォーマンスカウンタ(PMU)を利用する方法についてツイートのやりとりをした.その際,Hyper-V上の仮想マシンでPMUを利用する方法について調べたので整理することにした.

Hyper-VでPMUを利用するための要件

Hyper-Vの仮想マシンでPMUを利用するためには,以下の要件をみたす必要がある.

The virtual machine generation must be 9.1 or higher.

Enabling performance monitoring components in a virtual machine

自ホストに導入されているHyper-VがVersion 9.1以上の仮想マシンをサポートしているかどうかは,PowerShellのGet-VMSupportVersionコマンドで確認できる.Windows 11での例を以下に示す.

> Get-VMHostSupportedVersion

Name                                                  Version IsDefault
----                                                  ------- ---------
Microsoft Windows 10 Anniversary Update/Server 2016   8.0     False
Microsoft Windows 10 Creators Update                  8.1     False
Microsoft Windows 10 Fall Creators Update/Server 1709 8.2     False
Microsoft Windows 10 April 2018 Update/Server 1803    8.3     False
Microsoft Windows 10 October 2018 Update/Server 2019  9.0     False
Microsoft Windows 10 May 2019 Update/Server 1903      9.1     False
Microsoft Windows 10 May 2020 Update/Server 2004      9.2     False
Microsoft Windows 10 (Manganese)                      9.3     False
Microsoft Windows Server 2022                         10.0    False
Microsoft ホスト OS (コバルト+)                       10.5    False
Microsoft Windows 11 (22H2)                           11.0    True

上の出力結果から,このホストでは,Version 9.1以上の仮想マシンに対応しており,Version 11.0が有効になっていることが確認できる.

仮想マシンの準備

Hyper-V マネージャを使用して,仮想マシンを作成する. 図1のように,PMUtest という名前で仮想マシンを作成した.仮想マシンの構成バージョンは11.0となっている.この構成バージョンというのは,Get-VMHostSupportedVersionで表示されるVersionを指しており,11.0であるためPMUを利用するための条件を満たしている.

また,図2の概要にある世代というのは,LegacyBIOSから起動するか,UEFI BIOSから起動するかを指しており,UEFI BIOSから起動する世代2の仮想マシンとなっている.

図1 仮想マシン一覧

図2 PMUtest概要

同様の情報は,以下のPowerShellコマンドでも取得できる.

> Get-VM PMUtest | Format-List Version
Version : 11.0

また,明示的に構成バージョンを指定した仮想マシンを作成したい場合は,PowerShellコマンドで以下のコマンドを実行するとよい.

> New-VM -Name "vmname" -Version 11.0

仮想マシンを作成した後は,任意のLinuxディストリをインストールする.ここではCentOS 9 Streamを選択した.CentOS 9 Streamのインストールについては説明を省略する.

PMUを使用する準備

作成した仮想マシンは,デフォルトの状態ではPMUの使用が無効になっている.有効にするために以下のPowerShellコマンドを実行する.

> Set-VMProcessor PMUTest -Perfmon @("pmu")

なお,PMUの使用を無効にする場合は,以下のPowerShellコマンドを実行する.

> Set-VMProcessor PMUTest -Perfmon @("")

設定が有効になっているか確認する場合は,以下のコマンドを実行する.

> Get-VMProcessor PMUtest | Format-List EnablePerfmon*
EnablePerfmonPmu     : True     ←PMUが有効になっている.
EnablePerfmonArchPmu : False
EnablePerfmonLbr     : False
EnablePerfmonPebs    : False
EnablePerfmonIpt     : False

動作確認

PMU無効時は図3のように <not supported> と表示される.PMUを有効にすると,図4のようにパフォーマンスカウンタから取得した値が表示される.

図3 PMU無効時の実行結果

図4 PMU有効時の実行結果

おわりに

本記事では,Hyper-V上の仮想マシンでPMUを利用する方法について,簡単にまとめた.

以下に,本記事を書くにあたり参考にしたウェブページのリンクを記載する.