大规格虚拟机IPI时延优化
在大规格ARM64 KVM虚拟机中,IPI(Inter-Processor Interrupt,处理器间中断)的投递延迟显著高于物理机,成为影响虚拟机内多核通信性能的关键瓶颈。该问题由内核侧SGI(Software Generated Interrupt,软件生成中断)分发路径效率不足导致。
在内核侧,Guest通过写ICC_SGI1R_EL1寄存器向目标vCPU发送SGI时,KVM需要根据亲和性信息计算目标MPIDR(Multiprocessor Affinity Register,多处理器亲和性寄存器),再遍历所有vCPU逐一匹配,时间复杂度为O(n)。vCPU数量越多,每次IPI投递的延迟越高。本特性通过在VM首次运行时预计算MPIDR到vCPU索引的压缩映射表,将SGI分发路径从O(n)遍历优化为O(1)直接查找,从根源上消除了投递路径的性能瓶颈。
约束与限制
- 硬件环境:仅支持鲲鹏920新型号处理器或鲲鹏950处理器。
- 软件环境:宿主机OS为openEuler 24.03 LTS SP3,内核基线为OLK-6.6(6.6.0-135.0.0),QEMU版本为8.2.0,libvirt版本为9.10.0,且需分别合入SGI优化内核补丁和cacheinfo配置的QEMU/libvirt补丁。
应用场景
本特性适用于大规格KVM虚拟机场景,尤其是虚拟机内运行对多核间通信延迟敏感的负载,如大规模数据库(MySQL、PostgreSQL等)、分布式计算框架、高性能计算任务等。这些场景下,进程/线程间的同步操作(如RCU回调等)频繁触发IPI,IPI投递延迟直接影响应用的整体吞吐量和响应时间。通过SGI分发路径的O(1)优化,可显著降低大规格虚拟机中IPI的投递时延,提升多核并发场景下的业务性能。
父主题: 虚拟化CPU加速