论文部分内容阅读
随着科学技术的发展,人们有能力将大量数据存储起来并通过对它们进行数据挖掘和机器学习以产生价值,这对计算基础设施提出了更高要求。单台物理机已经无法满足人们的需求,于是各种水平扩展方案应运而生,通过分布式技术将数据切分到多台物理机组成的集群上处理,并提供相应的框架供开发者使用,如MapReduce,Spark等。解决大数据问题还能从系统层面入手,通过资源聚合来满足应用对海量资源的需求。目前主流的解决方案是通过操作系统或虚拟化技术来实现。操作系统实现资源聚合的代表是MOSIX,用户需要使用特定的操作系统,带来了额外的学习成本。虚拟化实现资源聚合的方案包括Hecatonchire、DVMM和vSMP ServerONE,然而这些方案在功能性和可用性上都存在各种限制,无法满足实际应用的需求。为此本文提出了一种分布式的虚拟机监控器dQEMU。它通过对主流的虚拟机监控器QEMU-KVM进行扩展,实现在多台物理机上运行单台虚拟机的功能。dQEMU能够对不同物理机的CPU、内存、I/O设备资源进行聚合,以适用不同的应用场景。为此dQEMU实现了以下机制:(1)中断转发以保证处于不同物理机的vCPU和vCPU之间、vCPU和I/O设备之间能够相互发送中断。(2)PIO转发和MMIO转发以保证vCPU和I/O设备位于不同物理机时vCPU能够执行I/O操作。(3)指令转发以保证在任意一个QEMU和vCPU上发出的指令能够发送给集群中的所有QEMU并得到相应的处理。(4)时间同步以保证位于不同物理机的vCPU之间的时间一致。本文还对这些机制的基础设施进行了说明,上层只需调用路由接口即可实现通信,而无需考虑具体的目标和链路,请求能够在路由模块的帮助下送达目标。在网络上,实现了TCP和RDMA两种连接方式。相比已有的解决方案,dQEMU的创新点在于:(1)针对大数据处理需要海量资源的问题,首次提出基于QEMU-KVM的多虚一方法,解决了CPU、内存和I/O资源的聚合问题。(2)针对分布式虚拟机监控器的实现问题,从架构上实现了请求处理、路由和网络传输模块的松耦合,开发者和开源社区能够在此基础上不断进行完善,使其成为一个产品级系统。(3)针对虚拟化资源聚合方案有硬性配置要求的问题,实现了通用的传输模块,保证用户在大多数配置下都能够启动分布式虚拟机。本文在单机和集群上对dQEMU进行了实验,验证了dQEMU启动的虚拟机能够运行包括sv6和Linux在内的主流操作系统。通过实验,本文测试了不同负载下各通信机制所带来的时间开销,并验证了使用RDMA网络比TCP网络具备更低的传输延迟和更好的虚拟机性能。在不同的客户操作系统下,dQEMU虚拟机的性能也呈现出差异,sv6相比Linux具有更好的性能和可扩展性。