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
   この後、終了の理由が個別に表示されます。詳細は kvm_exit (NAME) を参照してください。
   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: Advanced Programmable Interrupt Controller (APIC) の割り込み終了 (EOI) 通知の数です。
  • kvm_exit: VM-exits の数です。
  • kvm_exit (NAME): プロセッサーに固有する個々の終了です。詳細は、プロセッサーの資料を参照してください。
  • kvm_fpu: KVM 浮動小数点演算ユニット (FPU) の再読み込みの回数です。
  • kvm_hv_hypercall: Hyper-V hypercall の回数です。
  • kvm_hypercall: Hyper-V 以外の hypercall の回数です。
  • kvm_inj_exception: ゲストに注入された例外の数です。
  • kvm_inj_virq: ゲストに注入された割り込みの数です。
  • kvm_invlpga: 傍受された INVLPGA インストラクションの数です。
  • kvm_ioapic_set_irq: 仮想 IOAPIC コントローラーへの割り込みレベルの変更回数です。
  • kvm_mmio: エミュレートされたメモリーマップド I/O (memory-mapped I/O)(MMIO) 操作の回数です。
  • kvm_msi_set_irq: メッセージシグナル割り込み (message-signaled interrupt)(MSI) の数です。
  • kvm_msr: モデル固有レジスター (MSR) アクセスの回数です。
  • kvm_nested_intercepts: L1 ⇒ L2 のネスト化された SVM スイッチの数です。
  • kvm_nested_vmrun: L1 ⇒ L2 のネスト化された SVM スイッチの数です。Same as kvm_nested_intercepts? Look into if possible.
  • kvm_nested_intr_vmexit: 割り込みウィンドウによるネスト化された VM 出口インジェクションの数です。
  • kvm_nested_vmexit: ネスト化された (L2) ゲストの実行中のハイパーバイザーへの出口です。
  • kvm_nested_vmexit_inject: L2 ⇒ L1 のネスト化されたスイッチの数です。
  • kvm_page_fault: ハイパーバイザーによって処理されるページフォルトの数です。
  • kvm_pic_set_irq: 仮想プログラム割り込みコントローラー (PIC) への割り込みレベルの変更回数です。
  • kvm_pio: エミュレートされたプログラム I/O (programmed I/O)(PIO) 操作の回数です。
  • kvm_pv_eoi: 準仮想 EOI (end of input) イベントの回数です。
  • kvm_set_irq: 汎用 IRQ コントローラーレベルの割り込みレベルの変更回数です (カウント PIC、IOAPIC および MSI)。
  • kvm_skinit: SVM 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 コマンドからの出力情報は、/sys/kernel/debug/tracing/events/kvm/ ディレクトリー内に配置された擬似ファイルとして KVM ハイパーバイザーによってエクスポートされます。