Henry2017
作者Henry2017·2017-10-12 09:43
研发工程师·金融行业

如何从三个维度:cpu,内存,io对 KVM虚机性能优化

字数 1819阅读 3738评论 0赞 8

1.kvm虚拟化架构

以如下架构简图为例进行说明:

kvm虚拟化架构.png

kvm虚拟化架构.png

host表示宿主机,内核中加载了kvm模块用于虚拟化,用户空间配以qemu,libvirt,向虚拟机提供cpu,内存和io资源。这里简单介绍一下,qemu本身就是一种纯软件实现的虚拟化工具,但是性能较差,随着硬件对虚拟化支持度的提升,单纯的软件模拟的方式被淘汰,出现了qemu使用kvm加速器的技术形式,称为硬件辅助虚拟化,这部分在虚拟化架构中属于virtual machine monitors(vmm)部分。

为了便于在用户态对虚机的管理,引入了libvirt,向下兼容kvm,xen等虚拟化类型,向上为云平台提供虚拟化接口。

2.虚拟化实现

虚拟化的实现主要指三个方面,cpu,内存,io。从宿主机的角度看,每个虚机对应的是一个qemu进程,那么虚机的vcpu就是qemu进程中的一个线程,vcpu的虚拟化主要就是在一块空间内保存vcpu各寄存器数据,然后根据调度算法将这些数据加载到物理cpu中执行,与普通线程的执行一样,执行的时间片结束后再将数据保存到vcpu所在空间。这里再说一下根模式与非根模式,cpu指令的执行权限分为几个特权等级,Linux为例有ring0~ring3等,虚机进程作为用户态程序属于低特权级别,运行模式称为非根模式;在执行特权操作时会被vmm捕获,然后进行切换到操作系统的ring0级别来执行,这样运行模式称为根模式,非根模式到根模式的切换,需要上下文的保存与加载,切换开销较大,当进行大量的切换时就会明显的影响到虚机的运行性能。

内存虚拟化主要利用页表映射的方式,将虚机对应的qemu进程内存空间作为虚拟机的物理地址,而这部分内存空间对于宿主机来说属于虚拟地址空间,所以从虚拟机上运行程序使用的内存空间到宿主机的物理内存空间需要三次映射,内存虚拟化使用页表技术来维护这样的映射关系,如影子页表,而后使用了cache技术来提高内存转换的效率,通常先查找cache,没有命中后再通过影子页表来查找映射关系,将数据保存到正确的物理内存中,所以页表的大小也会影响到内存虚拟化的性能。

io虚拟化通常由qemu来实现,由qemu来模拟硬件设备的行为,并将返回值传给虚机,在这个过程有qemu同宿主机硬件设备的交互,也有一种方式是将宿主机的硬件设备透传给虚机使用,这样可以提升虚机的io性能,常见的有网卡,显卡的透传等。

3.性能优化

根据上一小节所描述,虚机性能优化也从三个方面来进行,cpu,内存,io。

虚机的vcpu作为线程在宿主机cpu上执行,这就要进行统一的调度策略来执行,当宿主机负载较高时,vcpu被调度执行的频率就会降低,执行的时间片也会缩减,如果能将vcpu固定到某一个负载较低的cpu上执行,就会大大提升虚机vcpu的执行效率,性能随之提升。这部分用绑核来实现,执行该vcpu的线程只在某一个cpu上,如果资源充足,可以先将该cpu进行隔离,防止其他进程的抢占,保证虚机的cpu性能不受宿主机负载提升的影响。

内存可以使用巨页技术,从宿主机系统内存中划分出一部分作为巨页内存,通常巨页大小为1G,这样就降低了访问内存时页表的切换次数,提升内存性能。如果考虑numa的话,可以将cpu和内存都从一个宿主机numa节点上分配,这样可以提升vcpu访问内存的效率。

io优化就比较有针对性,通常指网络和存储部分。网络部分可以采用sriov技术,将宿主机网卡的PF透传给虚机使用,来提升虚机间的网络性能。

存储在虚拟化层面优化主要是在驱动方面,通常选用virtio驱动,性能较好,再就是读写方式上,writeback性能会好一些,但是安全性较差,这些都需要根据实际应用场景来选择,这里不多做介绍。

还有一种优化方式,是从kvm层面进行的,加载kvm模块将enable_apicv参数打开,前面提到过,虚拟机运行的时候会切换到根模式,也叫vmexit,在模拟虚机中断的时候会有大量切换,这时候会影响虚机的性能,将enable_apicv参数打开可以有效减少由中断引起的vmexit的次数,这部分在Intel官网上有示意图如下:

apic示意图.png

apic示意图.png

详见:https://software.intel.com/en-us/blogs/2013/12/17/apic-virtualization-performance-testing-and-iozone

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

8

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广