18.8. 仮想マシンのパフォーマンス監視ツール
仮想マシン (VM) のリソースを最も多く消費しているものや、仮想マシンのパフォーマンスのどの側面を最適化する必要があるかを特定するために、さまざまなパフォーマンス診断ツールを使用できます。
デフォルトの OS パフォーマンス監視ツール
標準のパフォーマンス評価には、ホストおよびゲストのオペレーティングシステムでデフォルトで提供されるユーティリティーを使用できます。
RHEL 10 ホストで、root として
topユーティリティーまたは システムモニター アプリケーションを使用し、出力でqemuとvirtを確認します。これは、仮想マシンが消費しているホストシステムのリソースのサイズを示します。-
監視ツールにおいて、
qemuプロセスまたはvirtプロセスのいずれかで、ホストの CPU またはメモリーの容量を大幅に消費していることが示されている場合は、perfユーティリティーを使用して調査を行います。詳細は、次のセクションを参照してください。 -
さらに、たとえば vhost_net-1234 という名前の
vhost_netスレッドプロセスがホストの CPU 容量を過剰に消費していると表示される場合は、multi-queue virtio-netなどの 仮想ネットワーク最適化機能 の使用を検討してください。
-
監視ツールにおいて、
ゲストオペレーティングシステムでは、システムで利用可能なパフォーマンスユーティリティーとアプリケーションを使用して、どのプロセスが最も多くのシステムリソースを消費するかを評価します。
-
Linux システムでは、
topユーティリティーを使用できます。 - Windows システムでは、Task Manager アプリケーションを使用できます。
-
Linux システムでは、
perf kvm
perf ユーティリティーを使用すると、RHEL 10 ホストのパフォーマンスに関する仮想化固有の統計を収集および分析できます。これを行うには、以下を行います。
ホストに、perf パッケージをインストールします。
# dnf install perfperf kvm statコマンドの 1 つを使用して、仮想化ホストの perf 統計を表示します。-
お使いのハイパーバイザーのリアルタイム監視には、
perf kvm stat liveコマンドを使用します。 -
一定期間でハイパーバイザーの perf データをログに記録するには、
perf kvm stat recordコマンドを使用してロギングを有効にします。コマンドをキャンセルまたは中断した後、データはperf.data.guestファイルに保存されます。これは、perf kvm stat reportコマンドを使用して分析できます。
-
お使いのハイパーバイザーのリアルタイム監視には、
VM-EXITイベントとそのディストリビューションのタイプについてperf出力を分析します。たとえば、PAUSE_INSTRUCTIONイベントは通常はまれにしか発生しません。しかし、以下の出力ではこのイベントの発生頻度が高いことから、ホスト CPU が実行中の仮想 CPU を適切に処理できていないことが示唆されています。このような場合は、アクティブな仮想マシンの一部をシャットダウンするか、アクティブな仮想マシンから仮想 CPU を削除するか、仮想 CPU のパフォーマンスをチューニング することを検討してください。
# perf kvm stat report Analyze events for all VMs, all VCPUs: VM-EXIT Samples Samples% Time% Min Time Max Time Avg time EXTERNAL_INTERRUPT 365634 31.59% 18.04% 0.42us 58780.59us 204.08us ( +- 0.99% ) MSR_WRITE 293428 25.35% 0.13% 0.59us 17873.02us 1.80us ( +- 4.63% ) PREEMPTION_TIMER 276162 23.86% 0.23% 0.51us 21396.03us 3.38us ( +- 5.19% ) PAUSE_INSTRUCTION 189375 16.36% 11.75% 0.72us 29655.25us 256.77us ( +- 0.70% ) HLT 20440 1.77% 69.83% 0.62us 79319.41us 14134.56us ( +- 0.79% ) VMCALL 12426 1.07% 0.03% 1.02us 5416.25us 8.77us ( +- 7.36% ) EXCEPTION_NMI 27 0.00% 0.00% 0.69us 1.34us 0.98us ( +- 3.50% ) EPT_MISCONFIG 5 0.00% 0.00% 5.15us 10.85us 7.88us ( +- 11.67% ) Total Samples:1157497, Total events handled time:413728274.66us.perf kvm statの出力で問題を知らせる他のイベントタイプには、以下が含まれます。-
INSN_EMULATION- 最適ではない 仮想マシンの I/O 設定 を示します。
-
perf を使用して仮想化パフォーマンスを監視する方法の詳細は、システム上の perf-kvm(1) man ページを参照してください。
numastat
システムの現在の NUMA 設定を表示するには、numastat ユーティリティーを使用できます。これは numactl パッケージをインストールすることで利用できます。
以下は、4 つの実行中の仮想マシンが含まれるホストを示しています。それぞれは、複数の NUMA ノードからメモリーを取得しています。これは仮想 CPU のパフォーマンスには最適ではないため、調整が必要です。
# numastat -c qemu-kvm
Per-node process memory usage (in MBs)
PID Node 0 Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Total
--------------- ------ ------ ------ ------ ------ ------ ------ ------ -----
51722 (qemu-kvm) 68 16 357 6936 2 3 147 598 8128
51747 (qemu-kvm) 245 11 5 18 5172 2532 1 92 8076
53736 (qemu-kvm) 62 432 1661 506 4851 136 22 445 8116
53773 (qemu-kvm) 1393 3 1 2 12 0 0 6702 8114
--------------- ------ ------ ------ ------ ------ ------ ------ ------ -----
Total 1769 463 2024 7462 10037 2672 169 7837 32434
一方、以下では、1 つのノードで各仮想マシンに提供されているメモリーを示しています。これは、より一層効率的です。
# numastat -c qemu-kvm
Per-node process memory usage (in MBs)
PID Node 0 Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Total
--------------- ------ ------ ------ ------ ------ ------ ------ ------ -----
51747 (qemu-kvm) 0 0 7 0 8072 0 1 0 8080
53736 (qemu-kvm) 0 0 7 0 0 0 8113 0 8120
53773 (qemu-kvm) 0 0 7 0 0 0 1 8110 8118
59065 (qemu-kvm) 0 0 8050 0 0 0 0 0 8051
--------------- ------ ------ ------ ------ ------ ------ ------ ------ -----
Total 0 0 8072 0 8072 0 8114 8110 32368