开发者
资源
文档评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

大规格虚拟机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)直接查找,从根源上消除了投递路径的性能瓶颈。

在虚拟机侧,默认情况下虚拟机无法获取宿主机的真实缓存拓扑信息,导致Guest OS内核调度器无法正确识别CCL(Core Cluster Level)调度域,可能将需要频繁通信的任务调度到同一CCL外的vCPU上,引发大量跨CCL的IPI通信。本特性通过在QEMU/libvirt层面支持缓存信息配置,将宿主机的真实缓存拓扑(包括各级缓存的容量、组数、关联度、行大小及共享层级)透传给虚拟机,使Guest OS内核能够建立准确的CCL调度域,优先将任务调度到同一CCL内的vCPU上,从而减少跨CCL的IPI通信量,进一步降低IPI时延。

约束与限制

  • 硬件环境:仅支持鲲鹏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的端到端时延,提升多核并发场景下的业务性能。