MedusaVM:提升虚拟机系统可扩展性与内存效率
1. 引言
在多核心计算环境下,传统虚拟机(VM)系统面临着可扩展性瓶颈和内存使用效率低下的问题。MedusaVM 旨在解决这些问题,通过去中心化的设计和并行编程技术,实现系统可扩展性和内存效率的同时提升。
2. 背景与动机
2.1 集中式地址空间
以 Linux 内核为例,传统的集中式 VM 系统设计存在可扩展性问题。在 x86 64 架构中,VM 系统主要由进程特定的虚拟内存空间和页表树组成。虚拟地址空间被划分为不相交的内存区域,内核使用 VMA 结构记录这些区域的详细信息。
在 Linux 内核中,所有 VMA 结构按区域结束地址索引,并组织在一个由全局读写信号量 mm_sem 保护的红黑树中。全局锁不仅序列化了并发的 VM 系统操作,还引入了显著的锁竞争开销。虽然 Linux 内核采用了乐观旋转策略来减少锁竞争,但这种解决方案只能缓解问题,无法从根本上解决可扩展性问题。
此外,允许线程并发操作全局地址空间的先前 VM 系统,其集中式设计会在线程之间引入额外的性能干扰,导致系统性能下降。
2.2 集中式页表树
页表层次结构记录了虚拟地址和物理地址之间的映射。线程查询同一页表,进行页表遍历并检查访问权限。当发生页错误时,出错线程获取页表锁,必要时构建页表层次结构并填充页表项。
Linux 内核提供了两种不同粒度的锁方案来保护页表:全局 PGDIR 锁保护整个页表树,独立的自旋锁 PTE 锁与最后两级页表(PMD 和 PTE)关联。页表锁的切换成本很高,主要是由于缓存一致性协议,这限制了并行性。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



