KVM虚拟机按需优化实例

栏目: 服务器 · 发布时间: 7年前

内容简介:cat run

一、KVM为什么要调优

  • 性能的损耗是矛盾的根源,KVM采用全虚拟化技术,全虚拟化要由一个软件来模拟硬件层,故有一定的损耗,特别是I/O输入输出。
  • KVM性能优化主要在CPU、内存、I/O这几方面,当然在这几方面也是要分场景的,不同场景优化方向也是不同的。

二、KVM优化思路及步骤

1、CPU优化

  • 要考虑CPU的数量问题,所有guestcpu的总数目不要超过物理机CPU总数目,如果超过,则将对性能带来严重影响,建议选择复制主机CPU配置。

2、内存优化

(1)KSM---kernel Samepage Merging 相同页合并

  • 内存分配的最小单位是page(页面),默认大小是4KB,可以将host主机内容相同的内存合并,以节省内存的使用。
  • 当KVM上运行许多相同系统的客户机时,客户机之间将有很多内存页是完全相同的,特别是只读的内核代码页完全可以在客户机之间共享,从而减少客户机占用的内存资源,也能同时运行更多的客户机。
ll //sys/kernel/mm/ksm/

KVM虚拟机按需优化实例

  • 查看KSM是否开启

cat run

KVM虚拟机按需优化实例

[root@bogon ksm]# cat run    //是否开启KSM,0为关闭,1为开启
0
[root@bogon ksm]# echo 1 > run  //临时开启KSM,只能使用重定向,不支持VI编辑器
                                //若想永久开启,可在/etc/rc.local中添加echo 1 > /sys/kernel/mm/ksm/run,让KSM开机自动运行
[root@bogon ksm]# cat pages_to_scan  //定期扫描相同页,sleep_millisecs决定多长时间
                                     //pages_to_scan决定每次查看多少个页面
                                     //默认是100,越大越好,超过2000无效,需要开启两个服务ksmtuned和tuned,支持更多页面

(2)对内存设置限制

  • 如果我们有多个虚拟机,为了防止某个虚拟机无节制的使用内存资源,导致其他虚拟机无法正常使用,就需要对使用的内存进行限制。

virsh memtune c7-1 //查看当前虚拟机的内存限制,单位为KB

KVM虚拟机按需优化实例

hard_limit     : 无限制       //强制最大内存
soft_limit     : 无限制       //可用最大内存
swap_hard_limit: 无限制       //强制最大swap使用大小
  • 设置强制最大内存为100MB,在线生效。
virsh memtune c7-1 --hard-limit 1024000 --live

KVM虚拟机按需优化实例

3、大页后端内存

  • 在逻辑地址想物理地址转换时,CPU保持一个翻译后备缓冲器TLB,用来缓冲转换结果,而TLB容量很小,所以如果page很小,TLB很容易就充满,这样就容易导致cache miss,相反page变大,TLB需要保存的缓存项就变少,就会减少cache miss,通过为客户端提供大页后端内存,就能减少客户机消耗的内存并提高TLB命中率,从而提高KVM性能。

  • 查看内存信息,无可用大页
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配置文件使用大页来分配内存。
virsh destroy c7-1 vim /etc/libvirt/qemu/c7-1.xml
......
<domain type='kvm'>
  <name>c7-1</name>
  <uuid>09ea8217-8943-47b1-9275-63b0357d31e2</uuid>
  <memory unit='KiB'>2097152</memory>
  <currentMemory unit='KiB'>2097152</currentMemory>
  <memoryBacking><hugepages/></memoryBacking>   //添加,使用大页
  <vcpu placement='static'>1</vcpu>
  <os>
    <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
    <boot dev='hd'/>
......

KVM虚拟机按需优化实例

  • 重启KVM服务,打开虚拟机,查看大页内存是否生效。
systemctl restart libvirtd.service virsh start c7-1 cat /proc/meminfo | grep HugePage

KVM虚拟机按需优化实例

  • 关闭虚拟机,再查看大页内存是否有变化。

4、I/O优化

  • 在实际的生产环境中,为了米面过度消耗磁盘资源而对其他的虚拟机造成影响,我们希望每台虚拟机对磁盘资源的消耗是可控的,比如多个虚拟机往硬盘中写数据,谁可以优先写,就可以调整I/O的权重weight,权重越高写入磁盘的优先级越高。

  • 对磁盘I/O控制方式有两种方式:

在整体中的权重,范围在100~1000.

限制具体的I/O.

  • 针对虚拟机权重设置

virsh blkiotune c7-1 //查看当前虚拟机权重状态

KVM虚拟机按需优化实例

virsh blkiotune c7-1 --weight 500 //通过命令修改权重为500

KVM虚拟机按需优化实例

5、系统调优工具tuned/tuned-adm

  • tuned是服务端程序,用来监控和收集系统各个组件的数据,并依据数据提供的信息动态调整系统设置,达到动态优化系统的目的。
  • tuned-adm是客户端程序,用来和tuned打交道,用命令行的管理方式和配置tuned/tuned-adm,提供了一些预先配置的优化方案可直接使用。
yum install tuned -y service tuned start tuned-adm active tuned-adm list

KVM虚拟机按需优化实例

  • 更改解决方案
tuned-adm profile desktop

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2018-10/154778.htm


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Designing for Emotion

Designing for Emotion

Aarron Walter / Happy Cog / 2011-10-18 / USD 18.00

Make your users fall in love with your site via the precepts packed into this brief, charming book by MailChimp user experience design lead Aarron Walter. From classic psychology to case studies, high......一起来看看 《Designing for Emotion》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具