KVM虚拟化的优化

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

原文地址:http://blog.51cto.com/13660858/2157900

时间: 2024-10-08 02:12:22

KVM虚拟化的优化的相关文章

kvm虚拟化学习笔记(二十一)之KVM性能优化学习笔记

本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6.x系列操作系统下KVM优化的点,有很多都是默认支持开启了的,除了采用virtio方式的磁盘IO,与网络IO接口优化之外,其它真是无需太多优化. 1. CPU性能优化 (1) 服务器或宿主机主板BIOS中开启Intel Virtualization Technology(简称VT), 如果主板支持In

KVM虚拟化技术详解(四)--KVM的优化

目录:(4.1)KVM虚拟机性能优化思路及方案(4.2)利用tuned优化(4.3)配置KSM(4.4)通过配置大页优化guestos(4.5)配置CPU的亲和性(4.6)半虚拟化驱动 (4.1)KVM虚拟机性能优化思路及方案通过前面的学习我们已经可以正常的创建虚拟机了,当然运行虚拟机不是难点,难点在于怎样让我们创建的虚拟机运行的更高效.我们要运行的KVM虚拟机一般要从内存来考虑,考虑每台虚拟机消耗内存的大小:同时还要从CPU资源来考虑,确保每台虚拟机有足够的CPU资源使用,还要保证每台虚拟机使

KVM虚拟化技术

KVM虚拟化技术 Qemu-kvm kvm Qemu-kvm创建和管理虚拟机 1.KVM简介 KVM(名称来自英语:Kernel-basedVirtual Machine的缩写,即基于内核的虚拟机),是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor.KVM在2007年2月被导入Linux 2.6.20核心中,以可加载核心模块的方式被移植到FreeBSD及illumos上. KVM在具备Intel VT或AMD-V功能的x86平台上运行.它也被移植到S

KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机

一.KVM简介 KVM(名称来自英语:Kernel-basedVirtual Machine的缩写,即基于内核的虚拟机),是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor.KVM在2007年2月被导入Linux 2.6.20核心中,以可加载核心模块的方式被移植到FreeBSD及illumos上. KVM在具备Intel VT或AMD-V功能的x86平台上运行.它也被移植到S/390,PowerPC与IA-64平台上.在Linux内核3.9版中,加入A

美团网 KVM虚拟化公开课学习笔记

KVM优化技术,美团开放平台--邱剑 基于KVM现有选项做一些优化,视频地址:http://www.osforce.cn/course/77/learn#lesson/80 CPU调优: 1.Context switch(用户态到内核态的优化):ring0->nernel mode,ring 3->user mode; 设置:宿主机BIOS中开启intel VT-X 2.缓存优化  Cache-Node Binding 将qemu进程绑定到特定的CPU node或者core上---避免L2/L

KVM虚拟化知识的一些笔记

一.KVM介绍 KVM:运行在内核空间,提供CPU 和内存的虚级化,以及客户机的 I/O 拦截.Guest 的 I/O 被 KVM 拦截后,交给 QEMU 处理. QEMU:修改过的为 KVM 虚机使用的 QEMU 代码,运行在用户空间,提供硬件 I/O 虚拟化,通过 ioctl /dev/kvm 设备和 KVM 交互. KVM所实现的拦截虚拟机I/O请求的原理 现代CPU本身实现了对特殊指令的截获和重定向的支持. 以x86平台为例,支持虚拟化技术的CPU带有特别优化过的指令集来控制虚拟化过程.

51CTO学院《KVM虚拟化进阶与提高》视频课程上线了!

继<开源虚拟化KVM极速入门>之后,<KVM虚拟化进阶与提高>又在51CTO学院视频课程正式上线了! 访问地址:http://edu.51cto.com/course/course_id-8065.html 课程目标: 掌握构建企业级KVM虚拟化所需要的知识.本课程包括虚拟网络高级特性.虚拟机的迁移.高可用集群.嵌套虚拟化.性能监视与优化.P2V.V2V.备份与恢复.oVirt(RHEV)管理平台基本配置等. 适用人群: 虚拟化.云计算工程师. 课程简介: 假设您已经掌握了KVM的

CentOS 6.5安装KVM虚拟化

一.KVM简介 KVM(Kernel-basedVirtual Machine)即基于内核的虚拟机,是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor.KVM在2007年2月被导入Linux 2.6.20核心中,以可加载核心模块的方式被移植到FreeBSD及illumos上. KVM在具备Intel VT或AMD-V功能的x86平台上运行.它也被移植到S/390,PowerPC与IA-64平台上.在Linux内核3.9版中,加入ARM架构的支持. 关于

生产环境下戴尔 R820 kvm虚拟化部署三(centos6.6 kvm虚拟化部署)

三.kvm虚拟化部署 #安装kvm软件包 yum -y install kvm python-virtinst libvirt tunctl bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v #补充安装kvm虚拟化一些管理工具包 yum -y install libguestfs-tools #查看虚拟机运行情况并开启 [[email protected] network-scripts]# service libvirt