论文部分内容阅读
随着硬件技术的发展,计算机的处理能力越来越强,但资源利用率并不高效。虚拟化技术通过服务器整合,将原来的多台服务器以虚拟机的方式整合在少量物理机上,并在虚拟机之间提供了很好的隔离性,提高了计算机资源的利用率,降低了系统管理和维护的成本,在数据中心领域得到广泛应用。在数据中心中,许多应用都是以网络作为载体为用户提供服务,而且网络也是存储等服务的基础,因此网络的传输性能对应用有重要影响。
以Xen为代表的半虚拟化技术,通过修改客户操作系统内核来配合虚拟化环境,与采用二进制翻译的全虚拟化方式相比,大大降低了虚拟化引入的开销。半虚拟化技术中的网络虚拟化采用Split Driver模式,网络传输性能与网络前端驱动和后端驱动之间的数据交互方式有密切关系。
本文对半虚拟化平台中网络虚拟化存在的性能问题进行了分析,并通过优化Domain间数据交互方式,提高了网络传输性能。本文的研究成果和主要贡献如下:
●分析了当前影响半虚拟化网络性能的问题。首先,分析半虚拟化平台网络前端驱动和后端驱动之间的网络数据包交互存在的问题。网络前端驱动和网络后端驱动之间的数据包交互方式采用的是动态共享内存方式。每次客户虚拟机进行网络数据包收发操作时,都需要对网络数据载荷所在的内存缓冲区进行Grant Table的注册/注销操作。这种动态共享内存方式,导致了频繁的Grant Table锁操作,以及页表映射操作,还引入了额外的hypercall开销,导致小包传输性能下降。其次,同一个物理机上的虚拟机之间无法进行直接的inter-VM通信。非特权虚拟机之间进行网络数据包传输,都需要绕经到Domain0的Bridge来完成,这种冗长的传输路径严重影响了同一物理机上虚拟机之间的网络性能。
●提出了一种虚拟机间静态共享内存数据通道架构,优化了网络半虚拟化平台上小数据包传输的网络性能。本文在客户虚拟机和驱动虚拟机之间预先建立好一块双向的静态共享内存通道,此后客户虚拟机的小数据包的收发都通过这个预先建立好的静态共享内存通道依次进行传输。静态共享内存区用来承载小数据包载荷,每一个静态共享内存区都是一个无锁的生产者消费者环形缓冲区。为静态共享内存通道建立新的事件通道,用于网络数据包传输过程中的异步通知。静态共享内存通道用来为客户虚拟机传输小数据包,它和前后端驱动架构兼容,可以与原来的动态共享内存方式协同工作。由于静态共享内存通道上传输的都是网络数据包载荷,因此没有破坏虚拟机的内存安全隔离。在网络前后端驱动之间引入静态共享内存通道后,对于小数据包的传输性能提升了50%~15%。
●提出了同一物理机上运行的客户虚拟机之间高效透明的直接 inter-VM通信机制。Xen原来的客户虚拟机之间无法直接通信,网络数据包都要绕经Domain0,冗长的通信路径导致inter-VM通信性能不佳。本文在参与通信的同一物理机上的客户虚拟机之间,实现了一种直接的inter-VM通信机制SChannel,它以内核模块的方式运行在参与通信的虚拟机操作系统中,采用netfilter hook机制截获并分析虚拟机发出的网络数据包,对于目的地址是同一个物理机上的虚拟机的网络包,直接通过SChannel进行传输,并在接收端虚拟机实现单次copy机制。SChannel对于应用层完全透明,避免了原来绕经到Domain0的冗长路径。与Xen原来inter-VM通信性能相比,SChannel将inter-VM网络吞吐率提高了400%~500%,与其他同类研究相比,通信延迟下降了40%左右,吞吐率有大约45%的提升。