在KVM环境中监控虚拟机资源使用情况,需结合操作系统工具及虚拟化层特性。以下为实践总结:
-
基础工具
virsh domstats
输出虚拟机CPU、内存、磁盘IO及网络统计,例如virsh domstats --vcpu --balloon
聚焦CPU与内存。virt-top
提供类top界面,实时显示各虚拟机CPU利用率与内存占用。
-
宿主机层面
- 通过
pidstat -t -p $(pgrep qemu)
监控QEMU进程线程的CPU/内存开销,需注意vCPU线程与IO线程的分离统计。 bpftrace
可追踪virtio-net/virtio-blk后端驱动的数据包/块操作频率。
- 通过
-
高级监控
- Libvirt Telemetry(需启用statsd插件)实现指标持久化,结合Prometheus+Grafana构建监控面板。
- 启用
perf kvm --guest
对虚拟机进行性能剖析,需加载kvm模块调试符号。
实践挑战:
- 内存超配时,
available_memory
与unused_memory
指标存在误差,依赖balloon驱动准确性 - NUMA绑定的虚拟机需结合
numastat -p qemu-pid
分析跨节点访问频率 - SR-IOV直通设备资源消耗无法通过常规工具统计,需依赖硬件计数器
- 容器化部署场景(如OpenStack)存在cgroup层级隔离,需穿透cgroup命名空间采集数据