论文部分内容阅读
云计算平台大多基于虚拟机技术,在云计算平台上运行的应用程序性能又相当部分取决于平台虚拟机之间的I/O性能。因此,高性能网络连接,如10G以太网,已经开始部署在云计算平台中。而构建高性能并且具有高伸缩性的I/O虚拟化框架就是虚拟云计算平台的重要挑战之一。单根I/O虚拟化(SR-IOV)是由PCI-SIG制定的I/O虚拟化标准,适用于高性能的网络环境。SR-IOV通过利用直接I/O技术,消除了额外数据包复制和虚拟网络交换机带来的性能开销,实现了接近物理机的I/O性能,因此SR-IOV正逐步在虚拟云平台流行起来。然而,SR-IOV仍然存在着严重的I/O性能瓶颈,比如冗余中断和单线程驱动模型。在这篇文章里,我们首先研究了10G以太网环境下SR-IOV的性能表现,并且找到了两个亟待解决的挑战。第一,当多个虚拟机同时进行I/O的时候,SR-IOV可能会产生超出预期的冗余中断并导致大量CPU额外开销。第二,使用单线程驱动模型的SR-IOV不能完全利用多核计算资源,从而不能最大化利用网络带宽。针对这两个挑战,我们经过理论分析和实验验证,提出了两点增强SR-IOV伸缩性和吞吐量的优化方案。第一个优化使用动态自适应中断频率控制技术来减少由冗余中断导致的CPU额外开销。我们基于对中断频率和I/O性能的数学分析,提出了动态自适应中断频率控制算法,然后设计了一种相应的中断频率控制机制,这种机制既能最大化吞吐量又能使得CPU的额外开销最少。而CPU开销减少的结果是同样的硬件平台能够承载更多的虚拟机,从而提升了系统的伸缩性。第二个优化是多线程并行化驱动模型,使得SR-IOV可以完全利用多核资源。多线程并行化驱动模型是一种适用于高性能网络的驱动模型,可以通过充分利用多核计算资源来达到更高的网络吞吐量。我们实现了这些优化并且进行了全面的实验测试及详细的分析评估。实验结果表明,动态自适应中断频率控制可以在保持高吞吐量和高响应速度的同时至多减少51.4%(相当于1.53个处理器核心)的CPU利用率;多线程并行化驱动模型则最多可以提升38%的吞吐量并降低22%的丢包率。