性能的损耗是矛盾的根源,KVM采用全虚拟化技术,全虚拟化要由一个软件来模拟硬件层,故有必定的损耗,特别是I/O输入输出。
KVM性能优化主要在CPU、内存、I/O这几方面,固然在这几方面也是要分场景的,不一样场景优化方向也是不一样的。vim
要考虑CPU的数量问题,全部guestCPU的总数目不要超过物理机CPU的总数目。若是超过,则将对性能带来严重影响,建议选择复制主机CPU配置后端
内存分配的最小单位是page(页面),默认大小是4KB。能够将host机内容相同的内存合并,以节省内存的使用,特别是在虚拟机操做系统都同样的状况下,确定会有不少内容相同的内存值,开启了KSM,则会将这些内存合并为一个,固然这个过程会有性能损耗,因此开启与否,须要考虑使用场景。缓存
而KSM对KVM环境有很重要的意义,当KVM上运行许多相同系统的客户机时,客户机之间将有许多内存页是彻底相同的,特别是只读的内核代码页彻底能够在客户机之间共享,从而减小客户机占用的内存资源,能同时运行更多的客户机性能优化
ll /sys/kernel/mm/ksm/服务器
每一个页面的大小为4KB,可计算出共享内存为:4*页面数=内存大小(KB)dom
为了防止某个虚拟机无节制地使用内存资源,致使其余虚拟机没法正常使用,就须要对内存的使用进行限制
ide
virsh memtune cc2 查看虚拟机内存状态 virsh memtune cc2-hard-limit 1024000 --live #限制内存使用 在线状态
大页后端内存工具
在逻辑地址向物理地址转换时,CPU保持一个翻译后备缓冲器TLB,用来缓存转换结果,而TLB容量很小,因此若是page很小,TLB很容易就充满,这样就容易致使cache miss,相反page很大,TLB须要保存的缓存项就变小,就会减小cache miss。经过为客户机提供大页后端内存,就能减小客户机消耗的内存并提升TLB命中率,从而提高KVM性能。性能
使用大页,KVM的虚拟机的页表将使用更少的内存,而且提升CPU的效率优化
cat /proc/meminfo HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0
指定大页须要的内存页面数量
echo 25000 > /proc/sys/vm/nr_hugepages //临时生效
永久生效
sysctl -w vm.nr_hugepages=25000 或者 vim /etc/sysctl.conf vm.nr_hugepages=25000 //添加行,执行sysctl -p 当即生效
关闭虚拟机,编辑虚拟机XML配置文件使用大页来分配内存。
<domain type='kvm'> <name>c1</name> <uuid>3a629211-b4f4-4484-9832-897fd082e621</uuid> <memory unit='KiB'>2097152</memory> <currentMemory unit='KiB'>2097152</currentMemory> <memoryBacking><hugepages/></memoryBacking> #添加使用大页 <vcpu placement='static'>1</vcpu>
重启KVM服务,打开虚拟机,查看大页内存是否生效。
systemctl restart libvirtd.service virsh start c1 cat /proc/meminfo | grep HugePage
在实际的生产环境中,为了不过分消耗磁盘资源而对其余的虚拟机形成影响,咱们但愿每台虚拟机对磁盘资源的消耗是能够控制的。就能够调整I/O的权重weight,权重越高写入磁盘的优先级越高。
一、总体的权重,范围在100-1000
二、限制具体的I/O
tuned是服务端程序,用来监控收集系统各个组件的数据,并依据数据提供的信息动态调整系统设置,达到动态优化系统的目的
yum install tuned -y service tuned start tuned-adm active tuned-adm list
virtual-guest:企业级服务器配置中使用这个profile,其中包括电池备份控制程序、缓存保护以及管理磁盘缓存 latency-performance:延迟性能调试的服务器配置 enterperise-storage:企业存储服务器优化方案 default:默认节点配置,是最基本的节点配置,只启用磁盘和CPU插件 virtual-host:根据enterperise-storage配置,virtual-host还可减小可置换的虚拟内存,并启用更多集合脏页写回。同时推荐在虚拟化主机中使用这个配置,包括KVM和红帽企业版Linux虚拟化主机 throughput-performance:吞吐性能调整的服务器profile。若是系统没有企业级存储,建议使用这个profile