社区开发模式的结晶
KVM项目从产生到收录到Linux内核中仅用了几个月的时间,在如此短的时间取得这么大的进步是很惊人的,这其中有来自社区人员的不解努力,背后也有着众多企业的支持,这充分体现了开源开发模式的优越性和先进性,可以说KVM是这种社区开发模式的结晶,它凝聚了无数人的智慧和劳动成果。
来自Intel的Sunil介绍了Intel在虚拟技术方面的最新动向,如EPT(extended page table)和VT-d(Virtualization Technology for Directed I/O)技术。在EPT之前,XEN和KVM使用影子页表来实现内存的虚拟化,这种软件方法非常复杂并且浪费内存。EPT技术通过增加额外的一层页表,使得硬件可以直接利用客户机页表获取客户机物理地址,然后通过额外的EPT表将客户机物理地址转化成物理地址。EPT消除了复杂的影子页表软件实现,简化了VMM的实现,增强了系统的性能。笔者相信EPT技术将很快成为一个标准的虚拟化技术。另外VT-d通过实现对设备的DMA操作的重定向,提供了在虚拟机和I/O设备之直接通信的架构,实现了虚拟机对直接拥有的设备的支持。
IBM的Rusty Russell,也是Lguest的维护者(maintainer),介绍了KVM-lite,将以支持paravirt_ops为主的lguest和KVM的设备模型结合起来,使KVM(用户程序)可以运行在没有硬件虚拟化技术支持的处理器上,KVM-lite是对KVM的一个很好的扩展。
同时来自IBM的Carsten Emde介绍了KVM在IBM S390架构上的设计和构想,但是对KVM/S390的实现还在进行中;来自IBM的Hollis Blanchard介绍了KVM在IBM Power PC上的设计,KVM/PPC实现了部分功能,可以运行Guest的前50条指令。
Qumranet的Uri Lublin介绍了动态迁移,虚拟机的内存一般较大,不能一次迁移所有的内存,否则一次迁移需要较长的时间从而导致服务中断较长时间。动态迁移先分批迁移最近没有使用的内存,当已经迁移的内存在完全迁移前又被客户机修改时,这块内存需要重新迁移。当剩余的未迁移内存少到一定数量时,虚拟机在一个很短的时间,大约十几毫秒至几十毫秒时间,暂时停止服务,将整个虚拟机迁移到远端,同时立即启动迁移到远端机器上的虚拟机以重续暂停的服务。
Qumranet的Dor Laor介绍了泛虚拟化设备的(para-virtualized)驱动程序,泛虚拟化驱动程序可以大大减少虚拟机和主机Linux之间的上下文切换次数,从而可以很大程度上提高IO设备的性能。Dor主张实现一条私有的虚拟总线(virtual I/O 总线),泛虚拟化设备就挂在这条总线上。但是,一些人建议使用虚拟PCI总线,因为虚拟PCI总线更通用,更规范,这个讨论还在进行中。
来自中国的声音
笔者中的董耀祖和赵云峰向大会作了关于KVM性能优化和测试方式方法;SMP支持的设计和改进建议;和关于内核中断控制器仿真实现的架构及其进展的报告。这也是本次大会第一个来自中国的报告,体现了国人在KVM社区的贡献和地位。在KVM-18发布时,KVM的性能只有XEN的1/3,但是经过笔者和开源社区开发人员近2个月的调试和优化,今天的KVM性能和XEN已经在伯仲之间。同时该报告凝结的是Intel开源技术中心对KVM的巨大贡献、我们对KVM并行多处理(SMP)的支持和实现以及我们对内核中断控制器仿真的实现和技术推动。
另一个来自中国的报告由笔者中的徐雪飞给出,介绍了KVM在Intel 安腾(IA64)架构上的设计。KVM/IA64实现了所有KVM必须的功能,实现了同时运行单处理器的Linux 和windows2003 server的功能,同时KVM/IA64具有很好的性能(与Xen/IA64相似)。在报告的间隙,笔者也当场进行了演示,利用位于上海的安腾机器,远程同时启动了Linux和windows客户机。作为第一个运行在非x86平台上的KVM/IA64,演示非常成功,与会者看了后都希望尽快看到源程序能尽快进入KVM。
声明:LUPA开源社区刊登此文只为传递信息,并不表示赞同或者反对。


