KVM性能优化

  

一、KVM为什么要调优

  

性能的损耗是关键.KVM采用全虚拟化技术,全虚拟化要由一个软件来模拟硬件,故有一定的损耗,特别是I/O,因此需要优化。
KVM性能优化主要在CPU、内存,I/O这几方面。当然对于这几方面的优化,也是要分场景的,不同的场景其优化方向也是不同的。

  

二,KVM优化思路及步骤

  

KVM的性能已经很不错了,但还有一些微调措施可以进一步提高KVM的性能
<强> 1,CPU的优化
要考虑CPU的数量问题,所有guestcpu的总数目不要超过物理机CPU的总数目。如果超过,则将对性能带来严重影响,建议选择复制主机CPU配置。
<强> 2,内存的优化
(1) KSM(内核Samepage合并,相同页合并)
内存分配的最小单位是页页(面),默认大小是4 KB,可以将宿主机内容相同的内存合并,以节省内存的使用,特别是在虚拟机操作系统都一样的情况下,肯定会有很多内容相同的内存值,开启了KSM,则会将这些内存合并为一个,当然这个过程会有性能损耗,所以开启与否,需要考虑使用场景。
而KSM对KVM环境有很重要的意义,当KVM上运行许多相同系统的客户机时,客户机之间将有许多内存页是完全相同的,特别是只读的内核代码页完全可以在客户机之间共享,从而减少客户机占用的内存资源,能同时运行更多的客户机。
KSM会稍微影响系统性能,以效率换空间,如果系统的内存很宽裕,则无须开启KSM,如果想尽可能多地并行运行KVM客户机,则可以打开KSM。
<代码>我/sys/Kernel/mm/KSM///查看内核信息
 KVM性能优化”> <br/> pages_shared合并的页面数<br/> pages_sharing正在共享单个页面的虚拟页面数<br/> page_unshared作为共享候选者但当前未共享的页数<br/> page_volatile作为共享候选者但频繁更改的页数,KSM服务不会合并这个页面<br/> full_scan为重复内容扫描KSM的次数<br/> merge_across_nodes是否允许在NUMA节点中执行合并<br/> pages_to_scan一次扫描的页数,该数字会影响系统性能<br/> sleep_milisecs扫描之间的时间间隔<br/> <em>每个页面的大小为4 KB,可计算出共享内存为:4页面数=内存大小(KB) </em> </p>
  <pre> <代码> cd/sys/kernel/mm/ksm/猫跑//是否开启KSM, 0是不开启,1是开启
  回声1比;//临运行时开启KSM,只能使用重定向,不支持第六编辑器
  vi/etc/rc.本地//添加回声1比;/sys/kernel/mm/ksm/运行,让ksm开启自启
  猫pages_to_scan//定期扫描相同页,sleep_millisecs决定多长时间,pages_to_scan决定每次查看多少个页面,默认为100年,越大越好,超过2000无效,需要开启两个服务ksmtuned和调谐支持更过页面</代码> </pre>
  <p>(2)对内存设置限制<br/>如果我们有多个虚拟机,为了防止某个虚拟机无节制地使用内存资源,导致其他虚拟机无法正常使用,就需要对内存的使用进行限制。<br/> <代码> virsh memtune c01//查看当前虚拟机c01内存的限制,单位为KB </代码> <br/> <img src=

  
 <代码> virsh memtune c01——硬限制1024000生活//设置强制最大内存并且在线生效
  virsh memtune c01//查看 
  

 KVM性能优化”> <br/>(3)大页后端内存(大页面支持内存)<br/>在逻辑地址向物理地址转换时,CPU保持一个翻译后备缓冲器TLB,用来缓存转换结果,而TLB容量很小,所以如果页面很小,TLB很容易就充满,这样就容易导致缓存小姐,相反页面变大,TLB需要保存的缓存项就变少了,就会减少缓存小姐通过为客户机提供大页后端内存,就能减少客户机消耗的内存并提高TLB命中率,从而提升KVM性能。<br/>英特尔的x86处理器通常使用4 kb内存页,但是经过配置,也能够使用大页(巨大的页面):x86_32是4 mb, x86_64和x86_32 PAE是2 mb,这是KVM虚拟机的又一项优化技术。<br/>使用大页,KVM的虚拟机的页表将使用更少的内存,并且将提高CPU的效率。<br/> <代码>猫/proc/meminfo//查看内存信息,无可用大页</代码> <br/> <img src=KVM性能优化