kvm虚拟化的优化(代码片段)

author author     2022-12-26     570

关键词:

KVM调优 思路

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

CPU优化

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

内存优化

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

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

通过/sys/kernel/mm/ksm目录下可查看内存页共享的情况

ll /sys/kernel/mm/ksm/

技术分享图片
每个页面的大小为4KB,可计算出共享内存为:4*页面数=内存大小(KB)

  • 对内存设置限制

    为了防止某个虚拟机无节制地使用内存资源,导致其他虚拟机无法正常使用,就需要对内存的使用进行限制
    技术分享图片

virsh memtune cc2 查看虚拟机内存状态
virsh memtune cc2-hard-limit 1024000 --live #限制内存使用 在线状态

技术分享图片
大页后端内存

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

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

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配置文件使用大页来分配内存。

<domain type=‘kvm‘>
  <name>c1</name>
  <uuid>3a629211-b4f4-4484-9832-897fd082e621</uuid>
  <memory unit=‘KiB‘>2097152</memory>
  <currentMemory unit=‘KiB‘>2097152</currentMemory>
  <memoryBacking><hugepages/></memoryBacking> #添加使用大页
  <vcpu placement=‘static‘>1</vcpu>

技术分享图片
技术分享图片
技术分享图片
重启KVM服务,打开虚拟机,查看大页内存是否生效。

systemctl restart libvirtd.service
virsh start c1
cat /proc/meminfo | grep HugePage
  • I/O优化

在实际的生产环境中,为了避免过度消耗磁盘资源而对其他的虚拟机造成影响,我们希望每台虚拟机对磁盘资源的消耗是可以控制的。就可以调整I/O的权重weight,权重越高写入磁盘的优先级越高。

1、整体的权重,范围在100-1000

2、限制具体的I/O

  • 系统调优工具tuned

    tuned是服务端程序,用来监控收集系统各个组件的数据,并依据数据提供的信息动态调整系统设置,达到动态优化系统的目的

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

    技术分享图片

virtual-guest:企业级服务器配置中使用这个profile,其中包括电池备份控制程序、缓存保护以及管理磁盘缓存
latency-performance:延迟性能调试的服务器配置
enterperise-storage:企业存储服务器优化方案
default:默认节点配置,是最基本的节点配置,只启用磁盘和CPU插件
virtual-host:根据enterperise-storage配置,virtual-host还可减少可置换的虚拟内存,并启用更多集合脏页写回。同时推荐在虚拟化主机中使用这个配置,包括KVM和红帽企业版Linux虚拟化主机
throughput-performance:吞吐性能调整的服务器profile。如果系统没有企业级存储,建议使用这个profile

实操kvm虚拟机的优化历程---按需优化(代码片段)

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

kvm虚拟化技术详解--kvm的优化(代码片段)

...通过配置大页优化guestos(4.5)配置CPU的亲和性(4.6)半虚拟化驱动(4.1)KVM虚拟机性能优化思路及方案通过前面的学习我们已经可以正常的创建虚拟机了,当然运行虚拟机不是难点,难点在于怎样让我们创建的虚拟机运行的更高效... 查看详情

实操干货kvm命令管理虚拟机与性能优化(代码片段)

KVM命令管理虚拟机1、KVM基本功能管理简要介绍KVM中经常使用的基本功能管理命令(CentOS7.4是宿主机中安装的虚拟机);1)、virsh-h#查看命令帮助2)、ls/etc/libvirt/qemu#查看KVM的配置文件存放目录(虚拟机系统实例配置文件的文件... 查看详情

kvm虚拟机性能调优(代码片段)

kvm虚拟机性能调优kvm性能优化,主要集中在cpu、内存、磁盘、网络,4个方面,当然对于这里面的优化,也是要分场景的,不同的场景其优化方向也是不同的,下面具体聊聊这4个方面的优化细节。1.CPUcpu优... 查看详情

kvm性能优化(代码片段)

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

kvm性能优化(代码片段)

...机多次的上下文切换,势必会导致性能出现问题。对于全虚拟化,inter实现 查看详情

kvm文件管理及性能优化(代码片段)

KVM文件管理通过文件管理可以直接查看、修改、复制虚拟机的内部文件。例如:系统因为配置问题无法启动时,可以直接修改虚拟机的文件。虚拟机的磁盘文件有raw和qcow2两种格式。KVM默认格式是raw,raw格式性能最好、速度最快... 查看详情

kvm命令--优化篇(代码片段)

1-为什么要调优___KVM采用全虚拟化技术,全虚拟化要由一个软件来模拟硬件,故有一定的损耗,特别是I/O,因此需要优化。___KVM性能优化主要在CPU、内存、I/O这几方面。当然对于这几方面的优化,也是要分场景的,不同的场景其... 查看详情

kvm虚拟化平台部署(代码片段)

KVM虚拟化平台部署扩展一:遇到以下问题解决方式1、mounterror(115):Operationnowinprogress2、mounterror(13):Permissiondenied一、KVM虚拟机部署流程1、准备的环境变量2、挂载光盘,制作本地YUM仓库3、优化环境4、安装KVM基本组件5、KVM网... 查看详情

kvm虚拟化平台部署(代码片段)

KVM虚拟化平台部署扩展一:遇到以下问题解决方式1、mounterror(115):Operationnowinprogress2、mounterror(13):Permissiondenied一、KVM虚拟机部署流程1、准备的环境变量2、挂载光盘,制作本地YUM仓库3、优化环境4、安装KVM基本组件5、KVM网... 查看详情

kvm性能优化(代码片段)

优化思路及步骤CPU优化要考虑CPU的数量问题,所有guestCPU的总数目不要超过物理机CPU的总数目。如果超过,则将对性能带来严重影响,建议选择复制主机CPU配置内存优化1、KSM(相同页)内存分配的最小单位是page(页面),默认... 查看详情

kvm虚拟化(代码片段)

kvm虚拟化虚拟化简介虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操... 查看详情

kvm命令集与优化(代码片段)

(一)使用KVM命令集管理虚拟机1:KVM基本功能管理(1)查看命令帮助[[email protected]~]#virsh-hvirsh[options]...[<command_string>]virsh[options]...<command>[args...].../省略部分内容2:查看KVM的配置文件存放目录[[email protected] 查看详情

kvm虚拟化基本部署(代码片段)

...:1.KVM是Kernel-basedVirtualMachine的简称,是一个开源的系统虚拟化模块,自Linux2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM已成为学术界的主流VMM之一2.KVM的虚... 查看详情

部署kvm虚拟化平台(理论+实战)(代码片段)

...:1.KVM是Kernel-basedVirtualMachine的简称,是一个开源的系统虚拟化模块,自Linux2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM已成为学术界的主流VMM之一2.KVM的虚... 查看详情

kvm网络性能调优(代码片段)

...肯定是先走虚拟机自身的那张虚拟网卡,然后发到中间的虚拟化层,再然后是传到宿主机里的内核网桥中,最后传到物理网卡,这个过程很好理解。那么我们要做网络的优化,让虚拟机的网络运行得更加高效,我们要想的就是让... 查看详情

kvm虚拟机性能调优(代码片段)

kvm虚拟机性能调优kvm性能优化,主要集中在cpu、内存、磁盘、网络,4个方面,当然对于这里面的优化,也是要分场景的,不同的场景其优化方向也是不同的,下面具体聊聊这4个方面的优化细节。1.CPUcpu优... 查看详情

部署kvm虚拟化平台------搭建(代码片段)

一、部署KVM虚拟化平台hyper-v是windows中的虚拟化1、KVM模块直接整合在Linux内核中,kvm是内核模块,虚拟机与kvm模块之间为管理工具2、KVM组成1.KVMDriver---虚拟机创建---虚拟机内存分配---虚拟CPU寄存器读写---虚拟CPU运行2.QEMU(经过简化... 查看详情