KVM虚拟机按需优化实例

一、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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

栗子博客 软件 KVM虚拟机按需优化实例 https://www.lizi.tw/soft/11767.html

常见问题
  • 1、杰齐1.7仅适用于PHP5.2 2、需Zend支持 3、尽量使用宝塔面板 4、尽量使用Windows 系统,关关对Linux支持不太友好。
查看详情

相关文章

评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务

KVM虚拟机按需优化实例-海报

分享本文封面