A.4. kvm_stat
kvm_stat コマンドは、
kvm
カーネルモジュールからランタイム統計を取得する python スクリプトです。kvm_stat コマンドは、kvm
に表示されるゲストの動作を診断するために使用できます。特に、ゲストのパフォーマンスに関連する問題です。現在、報告されている統計はシステム全体を対象としており、実行中のすべてのゲストの動作が報告されます。このスクリプトを実行するには、qemu-kvm-tools パッケージをインストールする必要があります。詳細は、「既存の Red Hat Enterprise Linux システムへの仮想化パッケージのインストール」 を参照してください。
kvm_stat コマンドでは、
kvm
カーネルモジュールが読み込まれ、debugfs がマウントされている必要があります。上記のいずれかの機能が有効になっていない場合は、debugfs または kvm
モジュールを有効にするために必要な手順が表示されます。以下に例を示します。
# kvm_stat
Please mount debugfs ('mount -t debugfs debugfs /sys/kernel/debug')
and ensure the kvm modules are loaded
必要に応じてdebugfs をマウントします。
# mount -t debugfs debugfs /sys/kernel/debug
kvm_stat 出力
kvm_stat コマンドは、すべてのゲストとホストの統計情報を出力します。(Ctrl+c または q を使用して) コマンドが終了するまで、出力は更新されます。画面に表示される出力は異なる場合があることに注意してください。出力要素の説明については、用語のいずれかをクリックすると、リンク先の定義が表示されます。
# kvm_stat kvm statistics kvm_exit 17724 66 Individual exit reasons follow, see kvm_exit (NAME) for more information. kvm_exit(CLGI) 0 0 kvm_exit(CPUID) 0 0 kvm_exit(CR0_SEL_WRITE) 0 0 kvm_exit(EXCP_BASE) 0 0 kvm_exit(FERR_FREEZE) 0 0 kvm_exit(GDTR_READ) 0 0 kvm_exit(GDTR_WRITE) 0 0 kvm_exit(HLT) 11 11 kvm_exit(ICEBP) 0 0 kvm_exit(IDTR_READ) 0 0 kvm_exit(IDTR_WRITE) 0 0 kvm_exit(INIT) 0 0 kvm_exit(INTR) 0 0 kvm_exit(INVD) 0 0 kvm_exit(INVLPG) 0 0 kvm_exit(INVLPGA) 0 0 kvm_exit(IOIO) 0 0 kvm_exit(IRET) 0 0 kvm_exit(LDTR_READ) 0 0 kvm_exit(LDTR_WRITE) 0 0 kvm_exit(MONITOR) 0 0 kvm_exit(MSR) 40 40 kvm_exit(MWAIT) 0 0 kvm_exit(MWAIT_COND) 0 0 kvm_exit(NMI) 0 0 kvm_exit(NPF) 0 0 kvm_exit(PAUSE) 0 0 kvm_exit(POPF) 0 0 kvm_exit(PUSHF) 0 0 kvm_exit(RDPMC) 0 0 kvm_exit(RDTSC) 0 0 kvm_exit(RDTSCP) 0 0 kvm_exit(READ_CR0) 0 0 kvm_exit(READ_CR3) 0 0 kvm_exit(READ_CR4) 0 0 kvm_exit(READ_CR8) 0 0 kvm_exit(READ_DR0) 0 0 kvm_exit(READ_DR1) 0 0 kvm_exit(READ_DR2) 0 0 kvm_exit(READ_DR3) 0 0 kvm_exit(READ_DR4) 0 0 kvm_exit(READ_DR5) 0 0 kvm_exit(READ_DR6) 0 0 kvm_exit(READ_DR7) 0 0 kvm_exit(RSM) 0 0 kvm_exit(SHUTDOWN) 0 0 kvm_exit(SKINIT) 0 0 kvm_exit(SMI) 0 0 kvm_exit(STGI) 0 0 kvm_exit(SWINT) 0 0 kvm_exit(TASK_SWITCH) 0 0 kvm_exit(TR_READ) 0 0 kvm_exit(TR_WRITE) 0 0 kvm_exit(VINTR) 1 1 kvm_exit(VMLOAD) 0 0 kvm_exit(VMMCALL) 0 0 kvm_exit(VMRUN) 0 0 kvm_exit(VMSAVE) 0 0 kvm_exit(WBINVD) 0 0 kvm_exit(WRITE_CR0) 2 2 kvm_exit(WRITE_CR3) 0 0 kvm_exit(WRITE_CR4) 0 0 kvm_exit(WRITE_CR8) 0 0 kvm_exit(WRITE_DR0) 0 0 kvm_exit(WRITE_DR1) 0 0 kvm_exit(WRITE_DR2) 0 0 kvm_exit(WRITE_DR3) 0 0 kvm_exit(WRITE_DR4) 0 0 kvm_exit(WRITE_DR5) 0 0 kvm_exit(WRITE_DR6) 0 0 kvm_exit(WRITE_DR7) 0 0 kvm_entry 17724 66 kvm_apic 13935 51 kvm_emulate_insn 13924 51 kvm_mmio 13897 50 varl-kvm_eoi 3222 12 kvm_inj_virq 3222 12 kvm_apic_accept_irq 3222 12 kvm_pv_eoi 3184 12 kvm_fpu 376 2 kvm_cr 177 1 kvm_apic_ipi 278 1 kvm_msi_set_irq 295 0 kvm_pio 79 0 kvm_userspace_exit 52 0 kvm_set_irq 50 0 kvm_pic_set_irq 50 0 kvm_ioapic_set_irq 50 0 kvm_ack_irq 25 0 kvm_cpuid 90 0 kvm_msr 12 0
変数の説明
kvm_ack_irq
- 割り込みコントローラー (PIC/IOAPIC) の割り込み確認応答の回数。kvm_age_page
- メモリー管理ユニット (MMU) 通知機能によるページエージの反復回数。kvm_apic
- APIC レジスターのアクセス回数。kvm_apic_accept_irq
- ローカル APIC に許可されている割り込みの数。kvm_apic_ipi
- インタープロセッサー割り込みの数。kvm_async_pf_completed
- 非同期ページフォルトの補完数。kvm_async_pf_doublefault
- 非同期ページフォルト停止回数。kvm_async_pf_not_present
- 非同期ページフォルトの初期化回数。kvm_async_pf_ready
- 非同期ページフォルトの補完数。kvm_cpuid
- 実行された CPUID 命令の数。kvm_cr
- トラップおよびエミュレートされた制御レジスター (CR) のアクセス数 (CR0、CR3、CR4、CR8)。kvm_emulate_insn
- エミュレートされた命令の数。kvm_entry
- エミュレートされた命令の数。kvm_eoi
- APIC (Advanced Programmable Interrupt Controller) end of interrupt (EOI) 通知の数。kvm_exit
-VM-exits
の数。kvm_exit (NAME)
- プロセッサー固有の個別の出口。詳細は、プロセッサーのドキュメントを参照してください。kvm_fpu
- KVM 浮動小数点ユニット (FPU) の再読み込みの回数。kvm_hv_hypercall
- Hyper-V ハイパーコールの数。kvm_hypercall
- Hyper-V 以外のハイパーコールの数。kvm_inj_exception
- ゲストに挿入された例外の数。kvm_inj_virq
- ゲストに挿入された割り込みの数。kvm_invlpga
- 傍受された INVLPGA 命令の数。kvm_ioapic_set_irq
- 仮想 IOAPIC コントローラーへの割り込みレベルの変更回数。kvm_mmio
- エミュレートされたメモリーマップ I/O (MMIO) 操作の数。kvm_msi_set_irq
- message-signaled interrupts (MSI) の数。kvm_msr
- モデル固有レジスター (MSR) のアクセス回数。kvm_nested_intercepts
- L1 ⇒ L2 ネストされた SVM スイッチの数。kvm_nested_vmrun
- L1 ⇒ L2 ネストされた SVM スイッチの数。kvm_nested_intr_vmexit
- 割り込みウィンドウによるネストされた VM-exit 挿入の回数。kvm_nested_vmexit
- ネストされた (L2) ゲストの実行中のハイパーバイザーの終了。kvm_nested_vmexit_inject
- L2 ⇒ L1 ネストされたスイッチの数。kvm_page_fault
- ハイパーバイザーが処理しているページフォルトの数。kvm_pic_set_irq
- 仮想 Programmable Interrupt Controller (PIC) への割り込みレベルの変更回数。kvm_pio
- エミュレートされたプログラム I/O (PIO) 操作の回数。kvm_pv_eoi
- 準仮想化 End of Input (EOI) イベントの数。kvm_set_irq
- ジェネリック IRQ コントローラーレベルでの割り込みレベル変更の回数 (PIC、IOAPIC、および MSI のカウント)。kvm_skinit
- 仮想マシンスキニットの終了回数。kvm_track_tsc
- タイムスタンプカウンター (TSC) 書き込み回数。kvm_try_async_get_page
- 非同期ページフォルトの試行回数。kvm_update_master_clock
- pvclock マスタークロックの更新回数。kvm_userspace_exit
- ユーザー空間を終了した回数。kvm_write_tsc_offset
- TSC オフセット書き込み回数。vcpu_match_mmio
- SPTE キャッシュされたメモリーマップ I/O (MMIO) のヒット回数。
kvm_stat コマンドからの出力は、KVM ハイパーバイザーにより、
/sys/kernel/debug/tracing/events/kvm/
ディレクトリーにある疑似ファイルとしてエクスポートされます。