仮想 CPU パフォーマンス監視カウンタの使用
search cancel

仮想 CPU パフォーマンス監視カウンタの使用

book

Article ID: 344147

calendar_today

Updated On:

Products

VMware Desktop Hypervisor VMware vCenter Server VMware vSphere ESXi

Issue/Introduction

Symptoms:

免責事項: これは英文の記事 「Using Virtual CPU Performance Monitoring Counters (2030221)」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。


CPU パフォーマンス監視カウンタ (PMC) を使用して、ソフトウェアでプロセッサ パフォーマンスを監視し、測定することができます。これらのカウンタは一般的にソフトウェア プロファイラなどのツールによって使用されます。ESX 5.1 以降の互換性(ハードウェア バージョン 9)を持つ仮想マシンから、 仮想パフォーマンス監視カウンタ (vPMC) 機能を有効化し、仮想マシン内で実行しているソフトウェアでこのパフォーマンス情報に物理マシンで実行している場合と同様にアクセスできるようにすることができます。

最小要件

  • Intel Nehalem Generation 以降のプロセッサ、または AMD Opteron Generation 3 (Greyhound) 以降のプロセッサ。
  • Intel VT-x または AMD-V を BIOS で有効化して、ハードウェア アシストによる仮想化が可能になるようにする必要があります。

仮想パフォーマンス カウンタ モデル固有レジスタ (MSR)

仮想 CPU パフォーマンス監視カウンタが有効化されると、次の MSR が仮想化され、ゲスト OS で使用できるようになります。

Intel CPU
  • IA32_PERFEVTSELx
  • IA32_PMCx
  • IA32_FIXED_CTRx
  • IA32_PERF_GLOBAL_CTRL
  • IA32_PERF_GLOBAL_STATUS
  • IA32_PERF_GLOBAL_OVF_CTRL
  • IA32_FIXED_CTR_CTRL
AMD CPU
  • PERF_CTLx
  • PERF_CTRx


Environment

VMware vCenter Server 5.1.x
VMware Workstation 9.x (Linux)
VMware Fusion 5.x
VMware vSphere ESXi 5.1
VMware Workstation 9.x (Windows)

Resolution

仮想 PMC には、基盤となる物理 CPU の PMC と同じ方法でアクセスします。詳細については、『Intel 64 and IA-32 Architectures Software Developer's Manual』と AMD の『BIOS and Kernel Developer's Guide (BKDG) 』を参照してください。

仮想 CPU パフォーマンス監視カウンタの有効化

仮想 CPU パフォーマンス監視カウンタは vSphere Web Client を使用して有効化できます。「Enable Virtual CPU Performance Counters in the vSphere Web Client」を参照してください。

イベント カウント

仮想 PMC は、基盤となる CPU の PMC と同じプロセッサ コア イベントをカウントできます。ただし、仮想マシンの仮想 CPU はある期間スケジュール設定解除することができ、一部のゲスト命令は物理 CPU によって直接リタイアされるのではなく、ハイパーバイザーによってエミュレートされる場合があるため、PMC は仮想マシンに直接渡されません。代わりに、PMC にはハイパーバイザーを介してアクセスします。仮想 PMC イベント カウント動作を制御するには、.vmx ファイルで次の仮想マシン構成オプションを設定します。
オプション説明

vpmc.freezeMode=hybrid

これはデフォルトの動作です。リタイアした命令 および リタイアしたブランチ イベントは、ゲスト命令のみをカウントします。CPU がハイパーバイザー命令を実行する場合、これらのイベントは増分しません。物理 CPU がゲスト命令またはハイパーバイザー命令を仮想マシンのために実行するたびに、その他すべてのイベントは増分します。仮想マシンが物理 CPU でスケジュール設定されていない場合、その仮想 PMC は常に増分を停止します。このように、ゲスト命令の比率に関連するメトリックは、仮想マシンでの命令の実行のコストの計算に使用することができます。たとえば、IPC (instructions per cycle) は、物理 CPU が仮想マシンの実行に使用されるサイクルごとにリタイア可能なゲスト命令の平均数を示します。

vpmc.freezeMode=guest

すべてのイベントが増分するのは、ゲスト命令が物理 CPU で直接実行している場合のみです。ハイパーバイザー コードが実行している場合、イベントは増分しません。

vpmc.freezeMode=vcpu

物理 CPU が仮想マシンのためにゲスト コードまたはハイパーバイザー コードの実行に使用されている間、すべてのイベントは増分します。イベントが増分を停止するのは、仮想マシンがスケジュール設定解除されている間だけです。

使用可能なパフォーマンス監視カウンタ

場合によっては、パフォーマンス監視カウンタは仮想化できません。これは次の場合のように、ホストが別の使用目的に物理 CPU パフォーマンス カウンタを使用している場合に発生します。

  • ホスト BIOS が 1 つ以上の PMC を使用することがある。
  • ESX で、VMkernel が PMC を内部使用に使用することがある。
  • Workstation および Fusion で、ホストで実行しているホスト OS またはプロファイラが 1 つ以上の PMC を使用することがある。
  • フォールト トレランス機能が 1 つ以上の PMC を使用することがある。
一般的に、物理 CPU PMC が使用されている場合、対応する仮想 CPU PMC は機能せず、ゲストが使用することはできません。ゲスト OS ソフトウェアは、仮想マシンのパワーオン時にゼロ以外のイベント選択 MSR 値をチェックして、使用できない汎用 PMC を検出します。ゲスト ソフトウェアは、IA32_FIXED_CTR_CTRL MSR の対応するゼロ以外の有効ビットをチェックして、使用できない固定機能 PMC を検出します。
ホストが次の固定機能パフォーマンス カウンタを使用している場合、仮想 PMC がエミュレートされます。
  • 停止しないコア サイクル
  • 停止しない参照サイクル
サイクル カウンタはエミュレートされると、OS モードとユーザー モードでカウントするようにプログラムされている場合にのみ機能します。また、エミュレートされたコア サイクル カウンタは、コア サイクルではなく参照サイクルをカウントします。

vMotion とチェックポイントの互換性

仮想 PMC 機能が有効化されると、仮想マシンをホスト間で移行する前に追加の CPU 互換性チェックが実行されます。ソース CPU とターゲット CPU のパフォーマンス監視イベントは互換性がなければなりません。パフォーマンス監視イベントのリストは、ソース CPU とターゲット CPU で同じである必要があります。一般に、同じマイクロアーキテクチャに属している 2 つの CPU には、互換性のあるパフォーマンス監視イベントが含まれている必要があります。各 CPU のパフォーマンス監視イベントのリストについては、『Intel 64 and IA-32 Architectures Software Developer's Manual』と AMD の『BIOS and Kernel Developer's Guide (BKDG)』を参照してください。さらに、仮想マシンを正常に移行するには、ソース CPU で使用可能なすべてのカウンタがターゲット CPU でも使用できる必要があります。

Enhanced vMotion Compatibility

Enhanced vMotion Compatibility を使用している仮想マシンで仮想パフォーマンス監視カウンタを有効化することはできません。


Additional Information

Using Virtual CPU Performance Monitoring Counters