Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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/ ディレクトリーにある疑似ファイルとしてエクスポートされます。