1- 为什么要调优

___ KVM采用全虚拟化技术,全虚拟化要由一个软件来模拟硬件,故有一定的损耗,特别是I/O,因此需要优化。

___ KVM性能优化主要在CPU、内存、I/O这几方面。当然对于这几方面的优化,也是要分场景的,不同的场景其优化方向也是不同的。

2- 优化

2.1- cpu

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

2.2- 内存

2.2.1- KSM(Kernel Samepage Merging,相同页合并)

___ 内存分配的最小单位是page(页面),默认大小是4KB,可以将host机内容相同的内存合并,以节省内存的使用,特别是在虚拟机操作系统都一样的情况下,肯定会有很多内容相同的内存值,开启了KSM,则会将这些内存合并为一个,当然这个过程会有性能损耗,所以开启与否,需要考虑使用场景。

___ 而KSM对KVM环境有很重要的意义,当KVM上运行许多相同系统的客户机时,客户机之间将有许多内存页是完全相同的,特别是只读的内核代码页完全可以在客户机之间共享,从而减少客户机占用的内存资源,能同时运行更多的客户机。

___ KSM会稍微影响系统性能,以效率换空间,如果系统的内存很宽裕,则无须开启KSM,如果想尽可能多地并行运行KVM客户机,则可以打开KSM。

ll /sys/kernel/mm/ksm/ //查看内核信息
pages_shared #合并的页面数
pages_sharing #正在共享单个页面的虚拟页面数
page_unshared #作为共享候选者但当前未共享的页数
page_volatile #作为共享候选者但频繁更改的页数,KSM服务不会合并这个页面
full_scan #为重复内容扫描KSM的次数
merge_across_nodes #是否允许在NUMA节点中执行合并
pages_to_scan #一次扫描的页数,该数字会影响系统性能
sleep_milisecs #扫描之间的时间间隔
每个页面的大小为4KB,可计算出共享内存为:4页面数=内存大小(KB) cat /sys/kernel/mm/ksm/run //是否开启KSM,0是不开启,1是开启
echo 1 > run //临时开启KSM,只能使用重定向,不支持VI编辑器
vi /etc/rc.local //添加echo 1 > /sys/kernel/mm/ksm/run,让KSM开启自启 cat /sys/kernel/mm/ksm/pages_to_scan //定期扫描相同页,sleep_millisecs决定多长时间,
pages_to_scan决定每次查看多少个页面,默认为100,越大越好,超过2000无效,
需要开启两个服务ksmtuned和tuned支持更过页面

2.2.2- 对内存设置限制

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

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

virsh memtune vm_name ##查看虚拟机内存限制,单位为KB
hard_limit : unlimit ## 强制最大内存
soft_limit : unlimit ## 可用最大内存
swap_hard_limit : unlimit ## 强制最大swap使用大小 例如:
virsh memtune vm_name --hard-limit 1024000 --live //设置强制最大内存并且在线生效

2.2.3- 大页后端内存(Huge Page Backed Memory)

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

___ Intel的x86 CPU通常使用4KB内存页、但是经过配置,也能够使用大页(huge page): x86_32是4MB,x86_64和x86_32 PAE是2MB,这是KVM虚拟机的又一项优化技术。

使用大页,KVM的虚拟机的页表将使用更少的内存,并且将提高CPU的效率。

cat /proc/meminfo ## 查看内存信息,无可用最大页
AnonHugePages: 292864 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages:Surp: 0 echo 25000 > /proc/sys/vm/nr_hugepages //指定大页需要的内存页面数量(临时生效) cat /proc/meminfo ## 查看内存信息,无可用最大页
AnonHugePages: 292864 kB
HugePages_Total: 510
HugePages_Free: 510
HugePages_Rsvd: 0
HugePages:Surp: 0 sysctl -w vm.nr_hugepages=25000 //指定大页需要的内存页面数永久生效,
或者在/etc/sysctl.conf中添加vm.nr_hugepages=2500来持久设定大页文件系统需要的内存页面数。

2.2.4- I/O的优化

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

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

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

2 限制具体的I/O.

virsh blkiotune vm_name ##查看vm_name的I/O参数
weight : 0
virsh blkiotune vm_name --weight 500 ##设置权重为500
virsh blkiotune vm_name ##再次查看
weight : 500 virsh edit vm_name ##也可编辑虚拟机的XML配置文件
<blkiotune>
<weight>500</weight>
</blkiotune>

2.2.5- 系统调优工具tuned/tuned-adm

___ tuned是服务端程序,用来监控和收集系统各个组件的数据,并依据数据提供的信息动态调整系统设置,达到动态优化系统的目的;tuned-adm是客户端程序,用来和tuned打交道,用命令行的方式管理和配置tuned/tuned-adm,提供了一些预先配置的优化方案可供直接使用。当然不同的系统和应用场景有不同的优化方案,tuned-adm预先配置的优化策略不是总能满足要求,这时候就需要定制,tuned-adm允许用户自己创建和定制新的调优方案。

安装:

yum install tuned -y #安装和启动tuned工具
systemctl start tuned
tuned-adm active ##查看当前优化方案
Current active profile: virtual-guest ##最佳级别,无需优化 tuned-adm list ##查看预先设定好的优化方案 tuned-adm profile virtual-host ##修改优化方案为virtual-host

KVM命令--优化篇(2)的更多相关文章

  1. KVM命令--使用篇(1)

    1. KVM常见使用命令: 1.1 查看命令 列出所有虚拟机 virsh list --all 显示虚拟机信息 virsh dominfo vm_name 显示虚拟机内存和cpu使用情况 virsh- ...

  2. Spring+SpringMVC+MyBatis+easyUI整合优化篇(五)结合MockMvc进行服务端的单元测试

    日常啰嗦 承接前一篇文章<Spring+SpringMVC+MyBatis+easyUI整合优化篇(四)单元测试实例>,已经讲解了dao层和service层的单元测试,还有控制器这层也不能 ...

  3. 百度APP移动端网络深度优化实践分享(二):网络连接优化篇

    本文由百度技术团队“蔡锐”原创发表于“百度App技术”公众号,原题为<百度App网络深度优化系列<二>连接优化>,感谢原作者的无私分享. 一.前言 在<百度APP移动端网 ...

  4. 百度APP移动端网络深度优化实践分享(一):DNS优化篇

    本文由百度技术团队“蔡锐”原创发表于“百度App技术”公众号,原题为<百度App网络深度优化系列<一>DNS优化>,感谢原作者的无私分享. 一.前言 网络优化是客户端几大技术方 ...

  5. HDFS集群优化篇

    HDFS集群优化篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.操作系统级别优化 1>.优化文件系统(推荐使用EXT4和XFS文件系统,相比较而言,更推荐后者,因为XF ...

  6. KVM总结-KVM性能优化之网络性能优化

    前面已经介绍了KVM CPU优化(http://blog.csdn.net/dylloveyou/article/details/71169463).内存优化(http://blog.csdn.net ...

  7. PowerDNS简单教程(4):优化篇

    目录: PowerDNS简单教程(1):安装篇 http://www.cnblogs.com/anpengapple/p/5205130.html PowerDNS简单教程(2):功能篇 http:/ ...

  8. 百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇

    本文由百度技术团队“蔡锐”原创发表于“百度App技术”公众号,原题为<百度App网络深度优化系列<三>弱网优化>,感谢原作者的无私分享. 一.前言 网络优化解决的核心问题有三个 ...

  9. 《MySQL性能优化篇》阅读笔记

    建表的时候,不要用null赋默认值,如:字符串的设置'',数据类型的设为0,不要将null设为默认值. 在MySQL中没有 full [outer] join,用union代替 各种 JOIN SQL ...

随机推荐

  1. c++IO对象不可复制

    IO类型的3个独立的头文件: iostream定义读写控制窗口的类型, fstream 定义读写已命名文件的类型,             (包含fstream类) sstream定义读写存储在内存中 ...

  2. HDU_5729_rmq+二分

    http://acm.hdu.edu.cn/showproblem.php?pid=5726 rmq修改成gcd的,关键是找个数,用二分来找,刚开始理解了好久,因为每个区间内gcd是递减的,所以可以优 ...

  3. IPsecVPN:阿里云VPN网关和深信服防火墙打通公有云和公司内网

    简介 目前许多公司网络环境为混合云(私有云,IDC,公司内网融合)的状态,通过内网ip的访问使得工作更加方便,需求也更为迫切,而本文介绍的即是实现私有云和公司内网互通的一种方法,希望对有此需求的小伙伴 ...

  4. mongodb副本集群搭建

    一.环境介绍 1.机器信息 10.40.6.68 10.40.6.108 10.40.6.110 软件环境为centos 6.x 2.mongodb 下载链接地址 https://www.mongod ...

  5. 日志框架 log4j2 全解析

    概述 logging翻译为日志记录 那问题是什么是日志? 日志实际上是日记的一种,用于记录某个时间点发生了什么事情,比如大学老师的教学日志,工作日志等 为什么要记录日志? 在实际生活中记录日志主要为了 ...

  6. Integer缓存机制-基本数据类型和包装类型-自动拆装箱

    Integer缓存机制 总结: 1.jdk1.5对Integer新增了缓存机制,范围在-128-127(这个范围的整数值使用频率最高)内的自动装箱返回的是缓存对象,不会new新的对象,所以只要在缓存范 ...

  7. Python2-Django配置阿里大于的短信验证码接口

    1.短信发送开发指南地址:https://help.aliyun.com/document_detail/55491.html?spm=a2c4g.11186623.6.568.l5zTwH 2.SD ...

  8. vue路由+vue-cli实现tab切换

    第一步:搭建环境 安装vue-cli cnpm install -g vue-cli安装vue-router cnpm install -g vue-router使用vue-cli初始化项目 vue ...

  9. ES6学习笔记(二):教你玩转类的继承和类的对象

    继承 程序中的继承: 子类可以继承父类的一些属性和方法 class Father { //父类 constructor () { } money () { console.log(100) } } c ...

  10. python3-cookbook笔记:第八章 类与对象

    python3-cookbook中每个小节以问题.解决方案和讨论三个部分探讨了Python3在某类问题中的最优解决方式,或者说是探讨Python3本身的数据结构.函数.类等特性在某类问题上如何更好地使 ...