摘要
ARM架构的CPU在移动设备和服务器中使用得越来越普遍,为基于ARM架构的设备提供虚拟化的新需求也越来越大。我们介绍了构建Linux ARM hypervisor KVM/ARM的经验,这是第一个完整的ARM虚拟化系统解决方案,可以在ARM多核硬件上运行未经修改的guest操作系统。KVM/ARM引入了分裂模式虚拟化,运行hypervisor跨CPU模式分割执行,并将其集成到Linux内核中。这样运行KVM/ARM利用现有的Linux硬件支持和功能来简化虚拟化的开发和维护,同时利用ARM硬件虚拟化的扩展来运行性能与本机执行效率相当的虚拟机。KVM/ARM已经成功合并到Linux内核中,确保该方案得到广泛的使用。我们对在一个真实ARM硬件虚拟化支持的完整hypervisor的性能进行了测量,结果表明,与X86的多核硬件Linux虚拟化相比,KVM/ARM在性能和功耗方面都具有优势。
1. 介绍
基于ARM架构的设备在智能手机、上网本和嵌入式计算机领域都出现了巨大的增长。虽然ARM的CPU在这些领域的发展受益于其在功耗方面的优势,但ARM的CPU在性能方面也在不断提高。这就促进了新的基于ARM架构的微服务器芯片和CPU进入到传统的服务器、PC和网络系统中。
为了给基于ARM的设备提供更好的虚拟化支持,ARM架构提供了对虚拟化的硬件支持。尽管虚拟化通常用于X86的系统,但是ARM和X86虚拟化之间是由一些关键的区别的。第一,ARM和X86虚拟化扩展有重要的区别,比如X86 hypervisor的设计不能直接适用于ARM,这些差异会影响hypervisor的性能和设计,特别是对于多核系统,但是这点尚未在真实的硬件设备上进行评估。第二,与基于X86的系统不同,ARM并没有PC硬件标准。ARM市场的碎片化很严重,有许多不同的垂直集成的ARM平台