读《Rethinking the Design of Virtual Machine Monitors》[1]
文章主要介绍了华盛顿大学搞的一个VMM:Denali[2] VMM,说了它的一些优点,介绍了他们是怎么样在可伸缩性(scalability)和可扩展性(extensibility)两方面来优化VMM的。
他们的工作所基于的假设是:虚拟机抽象层有别于物理机是有可能也很有用的。从这个假设出发,他们在半虚拟化(paravirtualization)和硬件操作(hardware interposition)这两个方面得出了结论。
在半虚拟化中,虚拟硬件体系和下面的硬件体系是不同的。作者利用这个特征建立了一个能支持数百个并发执行虚拟机的可扩展VMM(scalable VMM)。而硬件操作则让程序员能用虚拟硬件组件(如虚拟磁盘和以太网设备)的新的实现来对VMM进行扩展。
在文章开头,作者简要介绍了VMM历史并分析了VMM再度流行的原因:
1. 实施简单。避开了上面抽象层(如TCP/IP套接字和文件系统)的实施。
2. 提供完整的系统服务。提供一套完备的软件系统,包括操作系统和相应的应用程序套件。
3. 对多操作系统的支持。能让多个操作系统运行在一个物理机上。
4. 可以容忍的性能损耗。随着处理器速度的提高,以前的虚拟化开销变得可以被接受。
作者声称发现了困扰传统VMM的一些限制。并对Denali VMM进行了修改以克服这两个问题带来的挑战:可伸缩性(scalability)和可扩展性(extensibility)。
首先是可伸缩性。通过半虚拟化技术和idle-with-timeout指令的引入来实现。
传统的VMM都遇到了可伸缩性瓶颈,使实际可支持的VMM数量受到了人为的限制。问题的产生是由于VMM里时间的概念:物理机和虚拟机的时间概念不一致。为了解决这个问题,半虚拟化被提了出来。Denali所用到的半虚拟化概念和早期的不纯的虚拟机体系结构(impure virtual machine architectures)类似。一般物理机HAL(硬件抽象层hardware abstraction layer)直接识别物理硬件;传统的VMM则在HAL和硬件层间加了VMM但HAL还是只识别硬件,只不过VMM代替了硬件,和HAL打交道;而在半虚拟化系统中HAL被修改了,只识别VMM,不能直接识别硬件。Denali把对操作系统的修改尽量限于HAL,以使之尽量简单。
图1. System architecture comparison. (a) On a conventional operating system, the hardware abstraction layer is the only OS subsystem with knowledge of the underlying physical hardware. (b) A traditional VMM exposes an unmodified replica of the physical hardware architecture. (c) A paravirtualized VMM exposes a modified hardware architecture.
传统的软硬件接口在这3个方面限制了可伸缩性:空载(idling)、中断(interrupts)和计时器(timers)。Denali引入了idle-with-timeout指令,让guest OS在一定时间期限后让出CPU。这个方法使性能有了很大的提高。图2就是实验的结果。实验是在一组运行有Web服务的虚拟机上完成的。可以看出损耗减少了66%(好像有些夸张)。
图2. Benefit of idle-with-timeout instruction. The graph depicts the aggregate throughput across an increasing number of virtual machines, which run a custom Web server atop a lightweight operating system. Each Web server VM serves a static 130-Kbyte document. The x-axis reflects the number of VMs across which the workload is spread.
顺便,作者还提到,paravirtualization使VMM变得更简单。Denali的虚拟体系结构忽略了几个很少用到的特征:如BIOS,保护环(protection rings)等;Denali把原本由硬件实现的TLB(页表缓存,translation lookaside buffer)改为由软件实现;半虚拟化技术也避免了不可虚拟的指令引起的问题,因为Denali并没有试图精确的对物理硬件进行仿真,所以绕开了这些问题。
其次是可扩展性问题。通过提供可编程API和硬件操作(hardware interposition)实现。
VMM的传统角色是针对多用户或多应用对单一物理机进行复用。而现在,其功能被扩展到了多个方面:迁移(migration)、入侵检测(intrusion detection)、配置调试(configuration debugging)、重放式登录(replay logging)、容错(fault tolerance)、性能分析(performance analysis)。传统的VMM可扩展性并不好,作者通过介绍μDenali系统来给出他们的解决方案。μDenali给新虚拟机服务的快速开发带来了便利。该系统通过两大部件来实现可扩展性。第一,给出了一组编程接口;第二,μDenali系统支持硬件操作(hardware interposition)。
μDenali的可编程API主要针对这VMM的这4个方面:
1. I/O设备。许多服务都必须能监控或修改I/O设备(如虚拟磁盘和以太网)的行为。
2. 给出虚拟机状态。μDenali在硬件或VMM中缓存了虚拟机状态,并提供API,使诸如断点检查(checkpointing)和迁移这些需要获知即时完整虚拟机状态的服务能够抽取相应状态。
3. 跟踪不确定性事件。像虚拟机重放和容错之类的服务需要不确定性事件精确的时间信息,例如时钟中断。
4. 控制虚拟机。开发人员可用μDenali的可编程API来开启、暂停和终止虚拟机。
[1] Andrew Whitaker, Richard S. Cox, Marianne Shaw, and Steven D. Gribble. Rethinking the Design of Virtual Machine Monitors. Proceedings of the USENIX Annual Technical Conference 2005 on USENIX Annual Technical Conference, Apr. 2005.
[2] 德纳里峰,又叫麦金利峰,是北美最高峰。想做北美最好的VMM?
Labels: virtualization
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home