Open
Description
kvm_watcher 项目:目标是分析 kvm 的状态信息
KVM(Kernel-based Virtual Machine)是Linux内核中的虚拟化解决方案,允许在单个物理主机上同时运行多个虚拟机。
- 插桩客户机的退出事件(vm exit)检查是否有过多的操作:
- 监控KVM虚拟机的vm exit事件。
- 在程序中,分析vm exit的原因,并计数特定的操作(如IO指令或MSR读写等)。
- 获取vm exit事件的处理时延相关信息
创建kvm_watcher目录,并提交代码 #563
优化代码输出结果 #578
- 针对客户机vcpu的检测:
- 在程序中记录挂起时间,持续时间,唤醒类型等信息。
vcpu监测 #600 - 记录vcpu轮询时间的变化等信息。
kvm_watcher:合并为主程序,对vcpu挂起轮询时间变化的监控 #609
- 在程序中记录挂起时间,持续时间,唤醒类型等信息。
- kvm客户机中产生的page fault事件:
- 通过挂钩KVM的内部事件或使用tracepoint、kprobe等hook点来捕获缺页异常。
- 在程序中记录异常的类型、地址和处理时间。
- 记录mmu page fault事件
kvm_watcher项目:添加提取kvm page fault指标功能,完善代码 #633 - 记录mmio page fault事件
kvm_watcher项目:记录mmio page fault处理延时等信息,添加README.md,优化代码 #636
- 功能模块合并
- 将各个子模块合并为一个主程序,通过参数控制。
kvm_watcher:合并为主程序,对vcpu挂起轮询时间变化的监控 #609
- 将各个子模块合并为一个主程序,通过参数控制。
- 虚拟机脏页信息统计
- 提取KVM虚拟机内部的脏页相关指标,如脏页页帧号,变脏次数,脏页所属的memslot等信息。
kvm_watcher:修改action,添加虚拟机脏页信息统计,优化代码 #624
kvm_watcher项目:修改action,添加虚拟机脏页信息统计,优化代码 #625
- 提取KVM虚拟机内部的脏页相关指标,如脏页页帧号,变脏次数,脏页所属的memslot等信息。
- 添加项目README
- 介绍项目运行环境,使用方法,功能用途等信息。
kvm_watcher项目:记录mmio page fault处理延时等信息,添加README.md,优化代码 #636
- 介绍项目运行环境,使用方法,功能用途等信息。
- 中断请求相关信息统计
KVM模块接收到来自用户空间的模拟设备的请求后,将调用虚拟中断芯片的接口向虚拟中断芯片发送中断请求,对于在内核空间模拟的设备,这个过程相当于通过pic/ioapic设备发送中断请求。- pic: 实时记录中断请求时PIC芯片类型,中断引脚编号,中断触发方式,是否可屏蔽,处理延时,是否发生合并等信息。
kvm_watcher项目:pic中断设置,处理时延记录 #644 - ioapic:
- msi:
kvm_watcher项目:增加了一些功能,完善代码 #666 - 虚拟中断注入信息统计
- pic: 实时记录中断请求时PIC芯片类型,中断引脚编号,中断触发方式,是否可屏蔽,处理延时,是否发生合并等信息。
- hypercall(超级调用)
- 超级调用信息统计,包括超级调用号,调用参数,次数等信息。
项目目标
- 通过eBPF技术在主机侧提取并分析KVM虚拟机的状态信息
项目技术要求
- 熟悉kvm内核虚拟化的技术原理
- 熟悉Linux eBPF技术,能够通过eBPF实现内核事件的解析
运行要求
- 运行系统: ubuntu22.4 以上
- 文档丰富:具有Readme,设计文档等。