Linux 新补丁大幅提升英特尔嵌套虚拟机内存性能,最高提速约 2353 倍

11 月 23 日消息,据 Phoronix 今日报道,亚马逊 AWS 工程师周五为 Linux 内核提交了一组针对 KVM 的 VMX 代码更新,旨在改善嵌套虚拟机场景中未管理来宾内存的处理方式。

该补丁不仅解决了正确性问题,在合成基准测试中还带来了“数量级”级别的性能提升。注意到,该补丁重点改进 KVM 在运行 L1 与 L2 嵌套虚拟机时对来宾特定页面的处理方式。当前实现依赖 kvm_vcpu_map / unmap,在性能和有效性方面都有明显限制。

根据 Griffoul 的说明,问题涉及两类关键页面:由 L0(KVM)直接访问的 L1 专用页面(如 MSR bitmap、eVMCS 页面),以及通过 vmcs02 传递给 L2 的页面(如 APIC access 页面、virtual APIC、posted interrupt descriptor)。现有流程缺乏对映射失效的妥善处理,例如 eVMCS 页面在 memslot 更新时可能失效,而 APIC 相关页面在宿主迁移后也缺乏 mmu_notifier 回调通知,从而导致错误行为。

同时,对于未管理的来宾内存(如通过 mem= 参数或 guest_memfd 提供且未被内核直接映射的内存),每次 L2 进入 / 退出都会触发昂贵的 memremap / memunmap 调用,严重拖累嵌套虚拟化性能。

此次补丁将旧的 kvm_host_map 替换为 gfn_to_pfn_cache 机制。pfncache 能保持映射持久有效,只要页面 GPA 未变化即可避免重复的 remap / unmap 开销,并通过 mmu_notifier 回调和 memslot 版本检查提供正确的失效处理,确保在 memslot 更新或页面迁移时及时调整映射。

在 AWS EC2 Nitro 实例上进行的合成微基准测试显示,本次改动带来了显著的性能提升:内存 map 性能约提升 17 倍,unmap chunked 操作约提升 2014 倍,unmap 操作最高提升约 2353 倍。

广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,所有文章均包含本声明。

长春
上一篇:{loop type="arclist" row=1 }{$vo.title}