1、kvm_watcher-基于eBPF的KVM性能洞察工具南帅波(西安邮电大学)第 二 届 中 国 e B P F 开 发 者 大 会W W W.e b p f t r a v e l.c o m中 国 西 安第 二 届 中 国 e B P F 开 发 者 大 会W W W.e b p f t r a v e l.c o m个人简介:南帅波,西安邮电大学陈莉君老师研二学生,内核之旅社区成员,研究方向为Linux内核,内核虚拟化技术等。github主页:https:/ 二 届 中 国 e B P F 开 发 者 大 会W W W.e b p f t r a v e l.c o m1.KVM内核虚拟
2、化2.kvm_watcher3.性能测试4.未来展望第 二 届 中 国 e B P F 开 发 者 大 会W W W.e b p f t r a v e l.c o m1 KVM内核虚拟化第 二 届 中 国 e B P F 开 发 者 大 会W W W.e b p f t r a v e l.c o m1.1KVM介绍优势:资源整合 灵活性高 降低成本 隔离性强地位:l 基于Linux内核 性能出色 生态丰富第 二 届 中 国 e B P F 开 发 者 大 会W W W.e b p f t r a v e l.c o m1.2 传统观测工具工具特征挑战virsh基于 libvirt 库,提供
3、简单的虚拟机管理和状态监控。支持命令行操作,易于使用。有限的监控功能,无法深入分析和调整性能。不够灵活,无法满足高级需求,可扩展性低。kvm_stat基于 Python 编写,主要使用 debugfs 读取数据,统计 KVM 相关事件信息。提供了针对性的 KVM 事件统计功能。依赖 debugfs,对操作系统版本和配置有一定要求。可能需要较高的技术水平进行使用和定制化,提取信息有限。第 二 届 中 国 e B P F 开 发 者 大 会W W W.e b p f t r a v e l.c o m2kvm_watcher第 二 届 中 国 e B P F 开 发 者 大 会W W W.e b
4、p f t r a v e l.c o m2.1kvm_watcher项目简介kvm_watcher是一款基于eBPF的kvm虚拟机检测工具,其旨在使用户方便快捷在宿主机侧获取kvm虚拟机中的各种信息,报告所有正在运行的guest行为。目前,其实现的功能主要包括:l VM Exit 事件分析l KVM mmu事件分析l vCPU相关指标分析l kvm中中断注入记录l hypercall信息统计第 二 届 中 国 e B P F 开 发 者 大 会W W W.e b p f t r a v e l.c o m2.2kvm_watcher项目特性l 基于eBPF技术l 数据全面l 粒度更细l 可定
5、制化l 易于使用l 开源2.3项目框图第 二 届 中 国 e B P F 开 发 者 大 会W W W.e b p f t r a v e l.c o m2.4子模块 kvm_exitl VM Exit 原因统计l VM Exit 延时分析l VM Exit 次数计数l 细粒度vcpu定位l 子模块数据关联2.4子模块kvm exit第 二 届 中 国 e B P F 开 发 者 大 会W W W.e b p f t r a v e l.c o m2.4子模块 kvm_exitvm exit时间处理详细时延信息,可定位到具体的pid及vcpu的tid可以在host侧定位到定位到guest具体v
6、cpu线程号第 二 届 中 国 e B P F 开 发 者 大 会W W W.e b p f t r a v e l.c o m2.5 子模块 kvm_vcpu l 精确记录 VCPU 的唤醒/挂起事件l 统计halt poll 时间的变化l 记录vcpu的调度情况,记录vcpu的上下文切换时间可以通过分析 vCPU 调度信息,优化调度策略,调整虚拟机 CPU 拓扑结构或 CPU 亲和性设置,提高 vCPU 利用率.2.5 子模块 kvm_vcpu 第 二 届 中 国 e B P F 开 发 者 大 会W W W.e b p f t r a v e l.c o m2.5 子模块 kvm_vcp