11 月 23 日消息,据 Phoronix 今日报道,亚马逊 AWS 工程师周五为 Linux 内核提交了一组针对 KVM 的 VMX 代码更新,显著优化 KVM 嵌套虚拟化(nVMX)中非托管客户机内存的处理性能。
AWS 工程师弗雷德・格里福尔(Fred Griffoul)在补丁说明中指出,当前实现存在两大缺陷:
缓存失效机制缺失:当内存槽(memslots)修改时,eVMCS 等内存页的缓存映射未及时失效;APIC 相关页面迁移后因缺少 mmu_notifier 回调通知导致映射错误
高频映射开销过大:对非托管内存(如通过 mem = 参数或 guest_memfd 传递的内存)每次 L2 虚拟机进出均触发 memremap / memunmap 操作,产生显著性能损耗
新方案采用 gfn_to_pfn_cache 替代 kvm_host_map 机制,通过持久化映射实现:
在页面 GPA 未变更时维持映射关系,消除每次 VM 进出周期的重映射开销
通过 mmu_notifier 回调和内存槽生成检查确保映射更新
在 AWS EC2 Nitro 实例的合成微基准测试中,本次改动带来了显著的性能提升:
内存映射操作提速约 17 倍
分块取消映射操作提速约 2014 倍
完整取消映射操作提速约 2353 倍