21.4. kvm_stat
kvm_stat 命令是一个 python 脚本,该脚本从
kvm
内核模块中检索运行时统计信息。kvm_stat 命令可用于诊断对 kvm
可见的 guest 行为。特别是,与客户机相关的性能相关问题。目前,所报告的统计数据适用于整个系统;报告所有正在运行的 guest 的行为。要运行此脚本,您需要安装 qemu-kvm-tools 软件包。
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 Output
kvm_stat 命令输出所有虚拟客户机和主机的统计数据。在该命令终止前(使用 Ctrl+c 或 q 键)会更新输出。
# kvm_stat kvm statistics efer_reload 94 0 exits 4003074 31272 fpu_reload 1313881 10796 halt_exits 14050 259 halt_wakeup 4496 203 host_state_reload 1638354 24893 hypercalls 0 0 insn_emulation 1093850 1909 insn_emulation_fail 0 0 invlpg 75569 0 io_exits 1596984 24509 irq_exits 21013 363 irq_injections 48039 1222 irq_window 24656 870 largepages 0 0 mmio_exits 11873 0 mmu_cache_miss 42565 8 mmu_flooded 14752 0 mmu_pde_zapped 58730 0 mmu_pte_updated 6 0 mmu_pte_write 138795 0 mmu_recycled 0 0 mmu_shadow_zapped 40358 0 mmu_unsync 793 0 nmi_injections 0 0 nmi_window 0 0 pf_fixed 697731 3150 pf_guest 279349 0 remote_tlb_flush 5 0 request_irq 0 0 signal_exits 1 0 tlb_flush 200190 0
变量说明:
- efer_reload
- 扩展功能启用注册(EFER)的数量将重新加载。
- 退出
- 所有
VMEXIT
调用的数量。 - fpu_reload
VMENTRY
重新加载 FPU 状态的次数。当客户机使用浮动点单元(FPU)时,fpu_reload 会被递增。- halt_exits
- 由于调用
停止
,客户机数量会退出。在客户机闲置时,通常会看到这种退出。 - halt_wakeup
暂停
中唤醒的数量。- host_state_reload
- 主机状态的完整重新加载计数(当前为 MSR 设置和客户机 MSR 读取)。
- hypercalls
- 虚拟机管理程序服务调用的数量。
- insn_emulation
- 主机模拟的客户机说明数。
- insn_emulation_fail
- 预告尝试
中失败数
。 - io_exits
- 从 I/O 端口访问中退出 guest 的数量。
- irq_exits
- 由于外部中断而退出的客户机数量。
- irq_injections
- 发送到客户机的中断数。
- irq_window
- 客户机数量从未完成的中断窗口退出。
- largepages
- 当前正在使用的大页面数。
- mmio_exits
- 由于内存映射 I/O(MMIO)访问,客户机数量会退出。
- mmu_cache_miss
- 创建 KVM MMU 影子页面的数量。
- mmu_flooded
- 在 MMU 页面中检测过多的写操作数。这统计检测到的写入操作不受单个写入操作的影响。
- mmu_pde_zapped
- 页面目录条目(PDE)破坏性操作数量。
- mmu_pte_updated
- 页面表条目(PTE)破坏性操作的数量。
- mmu_pte_write
- 客户机页表条目(PTE)写入操作的数量。
- mmu_recycled
- 可重新声明的影子页面数。
- mmu_shadow_zapped
- 影子页面的数量。
- mmu_unsync
- 尚未链接的非同步页面数量。
- nmi_injections
- 将不可屏蔽中断(NMI)注入给客户机的数量。
- nmi_window
- 客户机数量从(否)不可屏蔽中断(NMI)窗口退出。
- pf_fixed
- 固定数量(非过期)页表条目(PTE)映射。
- pf_guest
- 注入到客户机中的页面错误数。
- remote_tlb_flush
- 远程(同级 CPU)翻译缓冲(TLB)刷新请求的数量。
- request_irq
- 客户机中断窗口请求将退出。
- signal_exits
- 由于主机中待处理的信号,guest 数量会退出。
- tlb_flush
- 管理程序执行的
tlb_flush
操作数量。
注意
kvm_stat 命令的输出信息由 KVM 管理程序导出,作为位于
/sys/kernel/debug/kvm/
目录中的伪文件。