● 摘要
随着虚拟化技术的不断发展,虚拟机越来越多地应用于实际环境中。虚拟机天然的隔离特性使得虚拟化技术在服务器整合、软件调试、系统安全、灾难恢复等众多方面发挥出重要的作用,然而这种特性也使虚拟机之间的信息交互和数据传输变得困难。 在一些基于虚拟化技术的实际网络应用中,如:网格计算、web服务、分布式存储系统等,虚拟机之间的数据通信非常频繁,并且这些虚拟机经常配置在同一物理计算机上。实际上,同一物理计算机上多个虚拟机之间的通信过程没有必要经过真实的物理网络,而在内核虚拟机(Kernel-based Virtual Machine, KVM)中,对这种特殊情形下的通信并没有做特别的优化,而是将其与普通的虚拟机网络通信同等对待,导致了大量不必要的网络通信开销。 针对于同一物理计算机上不同虚拟机之间通信的特点,本文提出并实现了一种基于内存共享机制的虚拟机通信优化方法,以提高KVM系统中同一物理计算机上多个虚拟机之间的通信性能。 本文的主要工作和贡献包括: 研究了现有KVM网络通信过程,对比了当前虚拟机网络通信中使用的几种I/O架构及其优劣势,细致分析了现有KVM虚拟机网络通信系统的数据接收和发送路径以及数据拷贝和传输过程,指出了现有KVM虚拟机通信系统的性能瓶颈。 在上述分析的基础上,针对同一物理计算机上不同虚拟机之间通信的独特性,提出了一种基于内存共享机制的虚拟机通信优化方法,以KVM为基础实验平台,设计和实现了一个虚拟机通信系统的优化方案,主要包括基于共享内存机制的虚拟机通信架构、共享内存的分配和管理方法以及数据发送和接收的优化流程等内容。 从功能和性能两方面,对本文设计和实现的虚拟机通信系统优化方案进行了测试和分析。测试结果表明,优化后的通信系统能够缩短数据通信路径长度、减少数据拷贝次数,在保证通信功能正确的前提下,能够提升通信系统的吞吐量。