2025-07-25 08:31 浙江
这是2025年的第82篇文章
( 本文阅读时间:15分钟 )
论文:《To PRI or Not To PRI, That's the question》,目前该论文已入选OSDI‘25。
OSDI(Operating Systems Design and Implementation)是中国计算机学会(CCF)A类会议,与SOSP并称计算机系统领域“双顶会”,代表全球操作系统、分布式系统、存储与网络等核心技术的最高研究水平。
论文作者:
Yun Wang∗♠ Liang Chen*♢ Jie Ji♢ Xianting Tian♢ Ben Luo♢ Zhixiang Wei♠ Zhibai Huang♠ Kailiang Xu♠ Kaihuan Peng♢ Kaijie Guo♢ Ning Luo♢ Guangjian Wang♢ Shengdong Dai♢ Yibin Shen♢ Jiesheng Wu♢ Zhengwei Qi♠
♠Shanghai Jiao Tong University ♢Alibaba Group
01
问题缘起:云计算的“资源困局”
在云计算环境中,I/O虚拟化长期面临性能与资源效率之间的根本性矛盾。
一方面,追求极致性能的直通模式要求关键业务(如数据库、AI训练)直接访问物理设备(如网卡、GPU),以消除虚拟化层的开销,实现接近物理机的“零虚拟化开销”性能。然而这种直通设备需要将虚拟机内存静态绑定到物理内存,导致内存资源缺乏动态管理能力——虚拟机无法通过内存页迁移或交换机制释放未使用的冷页(长期未访问的内存页),显著限制了资源弹性。
另一方面,资源利用率的低下进一步加剧了这一矛盾:通过对在线虚拟机内存使用率的统计,我们发现80%的长期运行虚拟机仅平均占用总内存的80%,而其中高达34%的内存为冷页,这也并非个例——Google、AWS、Azure 的公开数据也印证,其数据中心内存冷页率普遍接近 30%。这些未被有效利用的资源长期处于闲置状态,导致云计算资源池的整体利用率难以提升。
PRI:硬件强依赖的“小众实验”,难解普适困局
针对这个困局,PCIe 标准中添加了页请求接口(PRI,Page Request Interface)试图通过硬件级支持(如Intel Sapphire Rapids处理器)处理I/O页错误(IOPF),在理想状态下为直通设备赋予一定的内存动态管理能力。
但其严重依赖特定硬件平台的特性,导致技术普及困难。目前,除了高端图形处理器外,大多数主流输入输出设备(如网络设备和存储设备)仍不支持该功能;且当前操作系统(如最新版Linux)仅在特定内存管理模式下支持该技术,进一步限制了硬件兼容性。这些局限性使得PRI等方案仅能在有限范围内应用,无法从根本上解决云计算环境中广泛存在的性能与资源效率失衡问题。
因此,如何在不依赖专用硬件的前提下,实现高性能直通与动态内存管理的兼容,成为突破I/O虚拟化瓶颈的关键挑战。
1.1 为什么使用直通设备需要静态分配虚拟机内存
在云计算架构中,设备直通技术使虚拟机能够绕过Hypervisor的资源调度层,与GPU、网卡等硬件直接进行数据交互,获得极致的性能体验。然而设备直通牺牲了很多弹性能力,其中很重要的一项是内存动态分配能力。
一、直通设备的技术优势与底层机制
设备直通技术通过VT-d等硬件辅助虚拟化技术,将物理设备直接暴露给虚拟机使用。其性能优势主要源于两点关键技术特征:
DMA(直接内存访问)特性:直通设备能够绕过CPU直接读写物理内存,这种"端到端"的数据传输机制使网卡等I/O设备在数据包处理时可实现纳秒级延迟。例如在分布式数据库场景中,直通网卡每秒可处理数百万次事务请求,远高于软件虚拟的网络设备性能。
上下文零切换特性:由于虚拟机内核与设备直接交互(Bar空间直通和Posted interrupt技术),消除了Hypervisor层的虚拟设备模拟和上下文切换开销。这种架构使实时计算系统在处理高频数据流时,其平均延迟可稳定在微秒级,显著优于传统虚拟化环境。
二、内存地址静态分配的必然性分析
直通设备的DMA操作对内存管理提出了特殊要求,其根本矛盾源于虚拟化内存管理机制与硬件DMA特性之间的冲突。具体表现为:
物理地址连续性需求:DMA控制器只能识别物理地址空间,而虚拟机内存通常采用分页管理机制。Hypervisor通过页表将虚拟地址转换为物理地址,但直通设备无法感知这种转换关系,导致必须将虚拟机内存映射为连续GPA(Guest物理地址)空间。
内存位置不可变性约束:现代操作系统普遍采用动态内存管理策略,包括内存页交换(Swap)和透明大页(THP)迁移等机制。然而,一旦虚拟机内存页被迁移到其他物理地址,DMA操作将直接访问错误的物理地址,引发:
数据完整性破坏:设备可能向无效内存区域写入数据,导致应用崩溃。
系统稳定性风险:I/O页面错误(IOPF)会触发不可恢复的异常。
地址转换固定映射:为解决上述矛盾,Hypervisor必须采用静态内存分配策略,通过EPT+IOPT将虚拟机内存页永久映射到固定物理地址。这种"钉住"机制使虚拟机内存地址空间与物理内存形成一一对应关系,确保DMA操作的准确性。
三、技术约束与架构演进的辩证关系
静态内存映射作为直通技术的必然选择,本质上是虚拟化系统在性能与灵活性之间的取舍。当前技术架构下,这种约束主要体现为:
内存资源利用率下降:固定分配的内存无法被其他虚拟机动态使用,尤其在资源利用率波动场景下可能导致浪费。
虚拟机热迁移限制:直通设备的虚拟机无法在物理节点间迁移,降低了云平台的资源调度灵活性。尽管preCopy方式的热迁移已通过硬件辅助标脏的方案解决,但postCopy方式的热迁移依然存在问题。
设备直通技术通过打破虚拟化层的性能屏障,展现了云计算架构的进化方向,但其内存管理约束本质上反映了虚拟化技术在硬件抽象与性能优化之间的根本矛盾。随着硬件辅助虚拟化技术的持续演进,未来可能通过更智能的内存管理机制,在保持性能优势的同时逐步突破当前的技术局限,实现虚拟化系统在弹性扩展与极致性能间的动态平衡。这一过程不仅需要硬件架构的创新,更依赖于虚拟化软件层与硬件资源管理的协同优化,最终推动云计算基础设施向更高阶的弹性计算模式演进。
02
学术界和工业界的探索尝试
面对 PRI 的局限,学术界和工业界都在探索在无 PRI 支持下解决 VM 内存静态分配问题的方案。
这些探索大致可分为两类,但均未能完美破局:
软件方法(如vIOMMU、coIOMMU、VProbe、IOGuard等)虽不依赖硬件升级,但普遍存在显著性能损耗问题,部分方案还需修改虚拟机软件,这在多租户云环境中因安全风险与管理复杂度而难以部署。
硬件方法(如On-Demand Paging、VPRI)通过解耦IOPF与IOMMU实现性能优化,但受限于对高端或定制化硬件的依赖,推广难度较大;同时其要求设备具备内存缺页的处理能力提高了设备设计的复杂度,实用性受限。
综观现有方案,仍然未能在低开销、高兼容性与强性能之间取得平衡。软件方案因性能瓶颈与侵入性修改无法落地,硬件方案则因成本与复杂度难以普及。因此,如何一种内存弹性机制,既能摆脱对特殊硬件或软件改动的依赖(普适兼容),又能在真实云环境中实现高校资源调度(动态管理),同时确保直通设备的性能无损(零开销),仍是虚拟化领域亟待突破的关键难题。
03
阿里云的解法:弹性直通VIO
VIO 是一个基于软件的弹性设备直通解决方案,遵循 VirtIO 1.0 标准。VIO 的设计无需依赖任何特定 CPU 或硬件厂商,完全通过软件实现了对 IOPF(I/O 页错误)的支持。与采用率较低的 ATS/PRI 方案相比,VIO 具有硬件无关性和零感知透明(对 Guest 操作系统完全透明)2大优势。
VIO核心三大件:IOPA-Snooping,IOPS-Aware Passthrough和Lockpage。
3.1 IOPA-Snooping:通过“预审机制”提早处理内存缺页错误,避免直通设备访问内存异常
为了避免虚拟化环境中直通设备读写内存时触发缺页错误,VIO将VirtIO设备请求分为三个阶段构建防护机制:
第一阶段:请求拦截当VirtIO前端驱动提交可用队列(Available Queue)请求时,VIO主动拦截该请求,取代传统的直接传递至物理设备的流程。这一阶段通过将安全控制点前置,为后续验证提供了介入机会。
第二阶段:内存页状态检查通过嵌套页表(EPT)技术,系统对请求涉及的物理页进行实时状态验证:
有效性判定:若物理页未映射(如因内存交换暂存磁盘),触发CPU页错误机制,执行内存换入操作;
占用状态审查:若物理页处于被占用或未分配状态,系统直接阻断DMA操作以防止非法访问。
第三阶段:安全执行当所有涉及的物理页均通过验证后,请求被转移至设备影子队列,从而允许DMA操作安全执行。该机制通过影子队列解耦虚拟请求与物理设备操作,既确保合法请求的有序执行,又避免直接暴露物理设备资源。
这一流程通过拦截、验证、可控放行的闭环机制,实现了VirtIO设备请求的全生命周期安全管控,同时保持了I/O操作的效率。
3.2 弹性直通(Elastic Passthrough):通过监控虚拟机负载水平动态切换模式,兼顾IO性能和内存使用效率
通过对线上虚拟机IOPS分布的统计,我们发现 P95 的虚拟机的IOPS小于30K。因此我们设计了动态直通模式切换方案——弹性直通。通过策略监控虚拟机IO负载压力实现模式切换:在虚拟机运行中,系统根据实时I/O负载自动选择两种模式。
直通模式:虚拟机直接连接物理设备,提供低延迟、高吞吐性能,适用于数据库等高负载场景(如百万级IOPS需求);
VIO模式:通过IOPA-Snooping技术动态回收冷数据内存,优化资源利用率,适用于Web服务器等低负载场景。两种模式可无缝切换,平衡性能与资源效率,满足不同业务需求。
如何实现用户无感的模式切换
虚拟机I/O模式动态切换通过三阶段原子化操作实现无缝转换:
直通模式→VIO模式切换系统首先冻结I/O请求(微秒级),暂停新任务进入以确保状态一致性;随后将设备原生队列的当前状态拷贝至影子队列,完成控制逻辑的平滑过渡;最后通过I/O页表(IOPT)重映射,将I/O虚拟地址(IOVA)指向影子队列的物理地址,完成虚拟化I/O路径的建立。
VIO模式→直通模式切换切换前需执行内存预热操作,通过锁定虚拟机内存页保障物理内存驻留;接着通过页表回切将IOVA映射恢复至原生队列地址空间;最后恢复直通模式下的硬件级I/O直接访问路径。
该机制通过严格的状态隔离与地址映射控制,确保模式切换过程零数据丢失且延迟低于1ms,实现高负载场景与资源优化场景间的弹性适配。
3.3 锁页策略(Lockpage):通过冷热识别算法,降低缺页频率提升IO性能
内存管理优化技术通过分级锁页策略实现性能与资源利用率的平衡:
针对I/O热点数据,系统采用静态锁页机制直接锁定高频访问页,避免因页面交换引发的性能抖动。在此基础上,引入自适应锁页进一步优化:通过LRU算法将内存页划分为活跃列表(Active List)与非活跃列表(Inactive List),当页面从活跃列表移出时自动解除锁定状态,既保障核心数据访问效率,又避免锁页过度占用可回收内存空间。该策略使90%虚拟机的锁页率控制在10%以内,仅在1%的极端场景(如Windows VirtIO驱动特殊需求)需提升至79%锁页率,显著降低内存资源浪费。
3.4 生产环境验证:数十万VM的实战数据
IOPA-snoop 延迟性能与机制优势
线上统计显示,IOPA-snoop机制的平均延迟为4微秒,其具体耗时取决于锁定页(lockpage)的命中情况。当发生锁定页命中时,系统仅需通过VIO内部位图查询,这一过程仅需90纳秒,因此总延迟可降低至约3.5微秒。若发生锁定页未命中,延迟上升至4.5微秒,此时系统需要额外耗时约1微秒检查目标页是否存在于内存中。若内存中未找到该页,则触发缺页异常(page fault),其平均处理时间为700微秒。
VIO 锁定页机制高效性
同时这一实测数据凸显了VIO锁定页机制的高效性:通过将高频访问的I/O页固定在内存中,显著减少了代价高昂的缺页异常处理需求。即使在缺页异常发生时,VIO仍能通过可控的平均处理时延(700微秒)保障系统性能。这种对I/O页访问的高效管理,使VIO能够在保持极低开销的同时维持稳定性能,充分满足大规模云环境中多样化工作负载对高吞吐、低延迟的需求。
另外通过与VPRI的性能进行对比,在缺页处理频率增加时VPRI性能会显著下降,这源于其依赖重传机制来恢复因I/O页面错误(IOPF)导致的数据包丢失。例如,在Redis场景中,当缺页频率达到每秒10次时,VPRI的吞吐量骤降60%;而Nginx和Memcached的吞吐量也分别出现了45%和57%的降幅。这种由重传引发的级联效应表明,VPRI对IOPF的频率高度敏感,尤其在事务率高或网络需求大的工作负载中表现尤为明显。
相比之下,VIO在相同条件下展现了卓越的稳定性。通过将页面错误处理与关键I/O数据路径隔离,VIO避免了数据包丢失和重传,从而将性能下降控制在极小范围内。在所有应用中,即使缺页频率较高,VIO的吞吐量降幅也始终低于10%。例如,Redis在每秒10次缺页频率下仅下降6%,Nginx和Memcached的降幅分别为9%和6%。这种一致性优势印证了VIO在多种工作负载和延迟条件下的吞吐量稳定性。
值得注意的是,在IOPF频率较低时,Redis在VIO模式下的性能表现稍逊,原因在于频繁的嗅探操作(IOPA-snooping)会因延迟累积成为瓶颈。当IOPS(每秒I/O操作)升高时,总嗅探开销会随I/O操作量的增加而线性增长。这一现象验证了弹性直通策略的合理性——在低IOPS场景中通过嗅探实现资源优化,而在高IOPS场景中切换为直通模式以维持高性能。
04
总结与展望
VIO技术已在阿里云大规模生产环境中实现成熟落地,目前稳定运行于数十万台虚拟机集群。该方案通过智能化内存回收机制,每日可释放相当于上万台虚拟机的内存资源,显著提升数据中心资源利用率,同时完全保持服务质量稳定:实测I/O相关CPU页错误(IOPF)发生率低于1%,用户在开启内存回收功能后仍保持无感知体验。
在兼容性设计上,VIO展现出强大适配能力:
系统兼容性:无需修改客户操作系统内核,原生支持CentOS、Windows等主流系统,甚至向下兼容10年前的CentOS 5版本;
平滑演进:借助Orthus工具实现KVM/QEMU组件的热升级能力,可对存量虚拟机进行无中断迁移,保障业务连续性。
这一技术方案既解决了超大规模云环境下的资源弹性调度难题,又通过极简兼容设计降低了运维复杂度,成为云原生场景下虚拟化基础设施优化的标杆实践。
05
团队介绍
阿里云弹性计算虚拟化团队:深耕前沿技术领域,持续推进云原生虚拟化技术演进,是阿里云线上千万级规模ECS的技术基座。我们团队也积极贡献学术界,研发成果先后在OSDI、SOSP、ASPLOS等国际顶会上发表,包括VIO(OSDI'25)、VPrefetch(PPOPP'25)、VPRI(SOSP'24)、VProbe(ATC'23)、BM-Hive(ASPLOS'20)、Orthus(ASPLOS'19)等,团队持续探索虚拟化与云计算的边界,为行业提供高性能、高可靠、高弹性的底层技术支持。
参考链接
[01] 论文:To PRI or Not To PRI, That's the question
https://www.usenix.org/conference/osdi25/presentation/wang-yun
文末点击原文可直接跳转论文哦!