【实操】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/

  • 查看KSM是否开启

cat run

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

(2)对内存设置限制

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

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

hard_limit     : 无限制       //强制最大内存
soft_limit     : 无限制       //可用最大内存
swap_hard_limit: 无限制       //强制最大swap使用大小
  • 设置强制最大内存为100MB,在线生效。

virsh memtune c7-1 --hard-limit 1024000 --live

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服务,打开虚拟机,查看大页内存是否生效。

systemctl restart libvirtd.service
virsh start c7-1
cat /proc/meminfo | grep HugePage

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

4、I/O优化

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

在整体中的权重,范围在100~1000.
限制具体的I/O.

  • 针对虚拟机权重设置

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

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

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

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

yum install tuned -y
service tuned start
tuned-adm active
tuned-adm list

  • 更改解决方案

tuned-adm profile desktop

原文地址:http://blog.51cto.com/13659253/2155962

时间: 2024-10-06 13:23:24

【实操】KVM虚拟机的优化历程---按需优化的相关文章

打造网络营销利器-第1篇-TDK设置实操-网站优化进阶

网络营销如何做,才能从网络挖掘出大量的新业务?互联网时代你还停留于没业务就扩充销售队伍的思想,你就OUT了! 本系列文章将用通俗的语言介绍网站运营大牛们的惯用手法,网站SEO并没有你们想象那么难!重点是了解并坚持去做! 上一篇文章<中小企业网站优化技巧-1-网站的TDK>介绍了网站的TDK是什么(标题.描述.关键词),那么本文,将以具体产品为例介绍下TDK的实际操作. 首先,登录进网站系统后台,从左边菜单栏找到产品管理==>添加产品,点击打开添加产品的页面: 然后第一步,选择您产品对应的

介绍RecoveryManager Plus几个备份虚拟机的最佳实操

介绍RecoveryManager Plus几个备份虚拟机的最佳实操虚拟机的架构与传统本地环境有很大的不同,并且需要不同的数据备份技术.本篇博客为您介绍几个备份虚拟机的最佳实操. 1.采取增量备份提高备份速度块修改跟踪 (CBT)可以显著加速备份速度.CBT持续跟踪自最后一次备份后数据变动的每一个存储块.您配置的备份申请程序查询虚拟化层,查找修改的块信息,备份改动模块,促进更快的增量备份. 快照没有备份快照不会拷贝所有VM数据.管理程序创建一个不同的磁盘:一个特殊类型的虚拟硬盘,与主虚拟硬盘存在

老域名优化的好处与老域名挖掘实操技巧

在SEO这一行混的比较久的朋友,慢慢都会接触到一些比较核心的优化技巧,老域名就是其中的一种,,不知道大家有没有这样的体验,自己辛辛苦苦优化了近一年的网站,终于有了稳定的排名,可是却被一个刚刚优化两个月的新站赶超了,而且网站的内容还没有你网站的好,大家肯定会想,这还有没有天理啦! 其实很有可能这个网站是用挖掘到的老域名做的,今天大表哥就给大家来点真正的seo核心干货,seo老域名的好处与老域名挖掘实操技巧首先我们先了解一下使用老域名优化的好处 首先有一个概念我们要知道,seo优化离不开链接,挖掘老

做一次真正落地的亚马逊和独立站实操分享

当我敲了这几个大字的时候,我自己有点战战兢兢.为什么这么说呢?因为我自己还有很多需要提升的地方,我经常在群里嘚瑟,每次的分享确实是有很多欠缺,不怎么在群里活动的高手对我的分享肯定嗤之以鼻.虽然我觉得自己能力不足,但是我喜欢分享,就像咋们知无不言域名取的一样--知无不言,我喜欢把自己知道的讲给大家听. 那么,可能有些人对我这番话报以赞赏的态度.诚然,每个人都是一个独立的个体,没有必要更没有义务去分享自己所知道的,包括我也是,但是我尽量地去分享我关注亚马逊和独立站推广的实操和心得给大家方向.毕竟别人

nginx实操(2)配置文件&内核&日志说明

优化内核参数 cat /etc/sysctl.conf net.ipv4.ip_forward = 0 表示开启路由功能,0是关闭,1是开启 net.ipv4.conf.default.rp_filter = 1 开启反向路径过滤 net.ipv4.conf.default.accept_source_route = 0 处理无源路由的包 net.ipv4.tcp_max_tw_buckets = 6000 表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT

Docker 学习笔记【3】 Docker 仓库、数据卷、数据卷容器,网络基础实操。高级网络配置学习

Docker 学习笔记[4] 高级网络配置实操,实战案例实验 =========================================================================== Docker 学习笔记[2] Docker 仓库实操,创建私有仓库,实操数据卷.数据卷容器,记录开始 =========================================================================== 被格式化的脚本内容: #开头代表

linux实操常用命令总结

1. linux目录操作命令 ------目录的增.删.改.查------ cd, pwd, ls, mkdir, mv, ls(du, df, tree) 切换目录,跟window的使用类似 cd 显示目录的详细信息 ls -ld 直接切换到根目录 cd / 在根目录下创建oracle目录 mkdir /oracle ls -ld /oracle drwxr-xr-x 2 root root 4096 Jun 21 15:00 /oracle 一次创建多个目录 mkdir -p /u01/ap

KVM虚拟机存储管理

KVM的存储选项有多种,包括虚拟磁盘文件.基于文件系统的存储和基于设备的存储. 一.KVM的存储性能解析对比 1.虚拟磁盘文件 当系统创建KVM虚拟机的时候,默认使用虚拟磁盘文件作为后端存储.安装后,虚拟机认为在使用真实的磁盘,但实际上看到的是用于模拟硬盘的虚拟磁盘文件.这一额外的文件系统层会降低系统速度. 当然,基于磁盘镜像的虚拟磁盘并非全无益处,磁盘文件系统可以很轻松地用于其它的KVM虚拟化宿主机.但是如果您希望优化KVM虚拟化性能,最好考虑其它的存储方式. 2.基于文件系统的KVM存储 在

(二)Linux实操之——网络配置、进程管理、服务管理、组管理

接上段   (一)Linux实操之——权限.任务调度.磁盘分区 4.网络配置 4.1 NAT模式的网络配置 目前我们采用的网络配置是NAT模式. windows下cmd通过 ipconfig 命令可以得到本机的网络配置. linux下通过 ifconfig 可得到虚拟机的网络配置 在windows系统中运行着虚拟机中的linux系统,那么两个系统是怎么通信的呢? 实际上windows系统与本机的linux的通信是通过 VMnet8的虚拟网卡来进行的,两者形成网络,192.168.177.128