论文部分内容阅读
在大型数据中心等云计算环境中,网络I/O是系统负载的重要组成部分,而虚拟机间网络I/O性能优化也已成为学术界和工业界广为关注的热点问题之一。目前,一种普遍而有效的通信加速方法是——使用共享内存作为位于同一台物理机上的虚拟机间网络通信通道,而跨物理机的虚拟机间通信仍然采用传统的TCP/IP方法。本文在课题组自主研发的共生关系感知的虚拟机间高效透明通信加速软件XenVMC基础上,重点围绕如何改进共生虚拟机集合维护方法、以及如何基于多核技术进行发送方与接收方虚拟机之间缓存的并发访问优化两个重要问题展开研究,并通过构建原型系统及实验手段验证了所提出方法的有效性。论文主要贡献如下:1、在了解云计算最新发展状况的基础上,研究了当前云平台网络架构方面的主要研究热点,分析了网络I/O虚拟化在提升云平台网络整体性能方面的主要研究动态。在了解网络I/O虚拟化最新技术的基础上,深入研究了目前基于软件的网络I/O虚拟化技术的相关工作,并总结目前相关工作的特点和不足,奠定本课题的研究背景和意义。2、Xen平台上使用共享内存加速共生虚拟机间通信是目前普遍采用的一种方法,已经开源并且影响较大的项目包括XenSocket,XWay,XenLoop等。XenSocket不对应用透明,因此使用时需要重新编写应用程序。XWay、XenLoop在使用时则不需要重新编写应用程序。本文将XWay、XenLoop移植到与XenVMC测试环境相同的软硬件平台,基于常用的网络通信性能评测软件netperf,将XenVMC与XWay、XenLoop进行了性能测试对比,验证XenVMC在设计和实现上的优势。3、共生虚拟机集合维护是使用共享内存加速共生虚拟机间网络通信的基础。已有的基于轮询的共生虚拟机集合维护方法让宿主机以一定周期定期收集当前物理机上的虚拟机集合,再交给所有的客户机进行更新。基于轮询的方法无论共生关系是否发生变化,每个轮询周期需要花费一定CPU和网络开销。同时,轮询过程需要遍历物理机上的每一个虚拟机,当虚拟机数量增多时,所花费的开销随之增多。基于轮询的方法的共生虚拟机集合更新固定在每个轮询周期的末尾,这意味着共生关系发生变化时,共生虚拟集合需要等待到轮询周期结束才更新,不能及时响应共生关系变化。本文针对上述不足,提出了一种事件驱动的共生虚拟机集合维护方法CoKeeper,该方法在共生关系发生变化这一事件发生时,以增量的方式更新当前的共生虚拟机集合。设计上,CoKeeper以低消耗、透明性、支持虚拟机规模可扩展和高响应速度为目标。与相对比,实验表明CoKeeper在低开销、虚拟机规模扩展和响应速度方面与基于轮询的方法对比更有优势。4、多核CPU已经在云计算环境中得到广泛使用,使得基于多核平台进一步提高共生虚拟机间通信加速机制的并发性成为可能。已有相关工作通常借助无锁(lock-free)的缓冲区设计实现虚拟机间通信时的数据读写。而目前的大多数相关工作在某一时刻只允许一个读者或者一个读者操作缓冲区,多核环境中无法实现多写者-多读者并发读写,没有充分利用多核硬件资源。本文针对XenVMC已有的设计提出了一种多核优化方法。通过改变XenVMC已有的数据接收流程,让接收方可以多个CPU同时接收数据,同时优化环形缓冲区,让缓冲区支持多读者并发读,使得XenVMC在数据接收方可以多个核并发地接收数据。实验证明多核优化后的XenVMC的UDP通信吞吐率提升至1.2倍左右,事务吞吐率提升至原来的1.5倍左右。