Guest虚拟机观测实战:Xen超调用与CPU Stolen时间

📅 2026/7/28 10:49:36 👁️ 阅读次数 📝 编程学习
Guest虚拟机观测实战:Xen超调用与CPU Stolen时间

引言:Xen虚拟化与BPF观测能力

在硬件虚拟化场景中,Xen是一个典型的裸机Hypervisor。Guest虚拟机(Domain U)运行在PV(ParaVirtualization)或HVM(Hardware Virtual Machine)模式下。对于PV Guest,它可以主动发起超调用(hypercall)请求Hypervisor提供服务,例如MMU更新、TLB刷新等。从Guest侧,我们可以利用BPF工具对这些超调用进行追踪,评估Hypervisor的性能影响。

此外,Xen Hypervisor也会主动回调Guest(如IRQ通知),以及物理CPU被其他Guest或Hypervisor调度走导致的stolen time,这些都可以通过BPF工具从Guest侧观测。本文将基于BCC和bpftrace介绍实用方法。

Xen PV超调用追踪方法

Xen PV采用批处理机制将多个超调用组合成multicall,以降低开销。内核中提供了多个tracepoint用于观测multicall的生命周期:

  • xen:xen_mc_batch:开始一批multicall
  • xen:xen_mc_entry:向批次中添加一个超调用
  • xen:xen_mc_issue:发出批次(但尚未真正执行)
  • xen:xen_mc_flush:实际执行flush,调用Hypervisor完成超调用
  • xen:xen_mmu_