Server在kvm上的性能优化

Server在kvm上的性能提升,主要是分为两方面,一方面保证执行环境干净,不会被干扰;二是保证kvm虚拟中的模拟设备性能最优。下面主要是围绕这两个方面做一些优化。

保证程序运行环境的干净,这里主要是保证server运行环境干净:

1 kvm使用的cpu从宿主机系统调度中隔离。不然宿主机上的别的经常会占用分给kvm的cpu

配置方法:

grub.cfg中linux16打头的行添加isolcpus=4,5,6,7

4,5,6,7表示要隔离的cpu号,根据kvm使用的情况,隔离cpu

查看配置结果:

 

2 kvm和宿主cpu需要一一绑定,避免guest的cpu在物理cpu之间进行调度

配置方法:

修改kvm的xml配置文件

<vcpu placement=’static’ cpuset=’4-7′>4</vcpu>

<cputune>

<vcpupin vcpu=’0′ cpuset=’4’/>

<vcpupin vcpu=’1′ cpuset=’5’/>

<vcpupin vcpu=’2′ cpuset=’6’/>

<vcpupin vcpu=’3′ cpuset=’7’/>

<emulatorpin cpuset=’7’/>

</cputune>

<vcpupin vcpu=’0′ cpuset=’4’/> 表示将虚拟的0号cpu绑定到物理cpu4上

<emulatorpin cpuset=’7’/> 表示虚拟机运行的cpu

查看配置是否生效:

 

3 保证server的执行环境干净

这个server基础平台已经实现了,通过cgroup技术,实现了cpu资源的限制,非server的程序都控制在“mgt”线程所在的cpu上运行。如果没有mgt线程,将放在cpu 1上运行

cgroup文件是位置在:/sys/fs/cgroup/cpuset/Ns_Service_Cpus/

检查/sys/fs/cgroup/cpuset/Ns_Service_Cpus/tasks中进程id是否正确,保证非server的进程在这个task中

检查/sys/fs/cgroup/cpuset/Ns_Service_Cpus/cpuset.cpus的cpu是否正确,需要“mgt”线程运行的cpu或则1号cpu上

 

4 server的cpu使用分配

server最好运行在一个 socket的cpu上,因为不同的socket是的cpu和内交叉访问,对性能影响很大。

 

5 kvm使用cpu,采用cpu设置透传模式

修改虚拟机的xml文件,添加如下选项

<cpu mode=’host-passthrough’/>

 

6 网卡透传

(1)开机启动项

grub打开intel_iommu

在grub.cfg的intel_iommu=on

(2)加载驱动

modprobe vfio

modprobe vfio-pci

(3)设置指定pci 网卡驱动,可以用dpdk_nic_bind.py来绑定,比如pci 为0000:0b:00.0

则绑定命令为:

dpdk_nic_bind.py -b vfio-pci 0000:0b:00.0

 

7 vcpu和内存最好限定在同一个NUMA 节点

在NUMA架构中,cpu最好能访问 local memory 而非remote memory。

下面是访问内存距离差异

在虚拟机中,分给server的cpu最好是node0节点,内存最好也是。

如果cpu是node0,保证内存使用node0,需要在kvm配置文件中添加如下元素

<numatune>

<memory mode=”preferred” nodeset=”0″/>

</numatune>

表示优先使node0的内存

 

8 如果宿主机上开启了超线程,server线程dp_process、dp_in、dp_out最好能够单独占用物理核,

这个可以在kvm的xml文件中,绑定cpu时注意

 

9 设置IO cache

kvm的cache性能:writeback > none > writethrough ,安全上:writeback < none < writethrough

在kvm中xml文件中配置:

<disk type=’file’ device=’disk’>

<driver name=’qemu’ type=’qcow2′ cache=’none’/>

</disk>

none是在各种环境中性能比较平均,安全和稳定

 

这个是我在优化server在kvm上的性能的一些方法,写出来与大家分享一下。可能有些深入度不够,写的不全,希望大家指正,共同探讨。

 

参考资料:

https://blog.csdn.net/dylloveyou/article/details/71515880

https://libvirt.org/formatdomain.html#elementsNICSHostdev

 

 

 

 

 

Spread the word. Share this post!

Meet The Author

Leave Comment