---
title: 大规格虚拟机IPI时延优化
description: "在大规格ARM64 KVM虚拟机中，IPI（Inter-Processor Interrupt，处理器间中断）的投递延迟显著高于物理机，成为影响虚拟机内多核通信性能的关键瓶颈。该问题由两方面原因导致：一是内核侧SGI（Software Generated Interrupt，软件生成中断）分发路径效率不足，二是虚拟机无法感知宿主机的真实缓存拓扑结构。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcpfs/twp/kunpengcpfs_19_0029.html
sourcePath: /source/zh/kunpengcpfs/twp/kunpengcpfs_19_0029.html
indexId: 44cbdae77239952b5e75a2cdba2fdfa0e38c9ed837f3c51a7ba94c342f338bfd51
---
# 大规格虚拟机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的端到端时延，提升多核并发场景下的业务性能。
