好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

KVM虚拟化内存技术总结.pdf

10页
  • 卖家[上传人]:豆浆
  • 文档编号:24902903
  • 上传时间:2017-12-08
  • 文档格式:PDF
  • 文档大小:410.07KB
  • / 10 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 一 内存限制技术可以通过 virsh 命令行限制内存,也可以编辑 xml 文件命令行格式为virsh memtune virtual_machine --parameter size可选的参数为hard_limit虚拟机可以使用的最大内存,单位为 kibibytes(blocks of 1024 bytes).soft_limit竞争时的内存,单位为 kibibytes(blocks of 1024 bytes).swap_hard_limit最大内存加 swap,单位为 kibibytes(blocks of 1024 bytes).min_guarantee最低保证给虚拟机使用的内存,单位为 kibibytes(blocks of 1024 bytes).例子:限制虚拟机 c7 最大使用 9G 内存,写到配置文件中,下次重启虚拟机进程生效memtune c7 --hard-limit 9437184 --config限制虚拟机 c7 竞争时 7G 内存memtune c7 --soft-limit 7340032 --config限制虚拟机 c7 最大内加可以使用的宿主机 swap 为不超过 10G 内存memtune c7 --swap-hard-limit 10488320 --config保证虚拟机 c7 最少可以使用 4G 内存memtune c7 --min_guarantee 4194304 --config注意点:memtune 生效方式有 3 种--config 写到配置文件中,下次重启虚拟机进程生效--live 影响正在运行的虚拟机,虚拟机进程停止后,效果消失,这个是默认的方式--current 影响停止和正在运行的虚拟机,如果虚拟机运行,虚拟机进程停止后,效果消失;如果虚拟机未运行,写入到 xml 配置文件中;对应的 xml 文件为8388608419430494371847340032419430410488320限制对宿主机 swap 的使用 标签 包含一些元素影响宿主机对虚拟内存页的支持locked 阻止宿主机将 swap 内存(交换分页内存) 分配给虚拟机设置 locked 参数,必须设置 hard_limit 在块中二 内存气球技术KVM 的内存气球技术,可以在虚拟机之间按照需要调节内存大小,提高内存的利用率。

      使用条件:虚拟机需要安装 virt balloon 的驱动,内核开启 CONFIG_VIRTIO_BALLOON,centos7默认已经开启,并且默认已经按照 virt balloon 驱动,在虚拟机中可以看到有一个 virtiomemory balloon 的 pci 设备虚拟机 xml 配置文件为balloon 有两种操作膨胀 虚拟机的内存被拿掉给宿主机压缩 宿主机的内存还给虚拟机气球技术最大的优点是内存可以超用,缺点是有可能造成内存不够使用而影响性能虚拟机气球配置查看当前内存大小virsh # qemu-monitor-command ct7 --hmp --cmd info balloonballoon: actual=4096限制内存大小为 2Gvirsh # qemu-monitor-command ct7 --hmp --cmd balloon 2048virsh # qemu-monitor-command ct7 --hmp --cmd info balloonballoon: actual=2048在虚拟机中查看限制内存大小为 4Gvirsh # qemu-monitor-command ct7 --hmp --cmd balloon 4096virsh # qemu-monitor-command ct7 --hmp --cmd info balloonballoon: actual=4096在虚拟机中查看限制内存大小为 8Gvirsh # qemu-monitor-command ct7 --hmp --cmd balloon 8192virsh # qemu-monitor-command ct7 --hmp --cmd info balloonballoon: actual=8192在虚拟机中查看要实现虚拟机内存气球的自动平衡,可以根据自己的业务情况,编写脚本来实现。

      三KSM内存合并(内存压缩)宿主机启动内存合并(压缩)及阻住个别虚拟机进行内存压缩的方法宿主机的内存压缩主要通过 ksm(Kernel SamePage Merging)技术,原理和软件压缩比较类似,就是将相同的内存分页进行合并,在 centos 默认是打开的,主要有两个服务ksmksmtuned[root@local ~]# service ksm statusRedirecting to /bin/systemctl status ksm.serviceksm.service - Kernel Samepage MergingLoaded: loaded (/usr/lib/systemd/system/ksm.service; enabled)Active: active (exited) since 四 2014-09-04 17:02:49 CST; 1 weeks 0 days agoProcess: 951 ExecStart=/usr/libexec/ksmctl start (code=exited, status=0/SUCCESS)Main PID: 951 (code=exited, status=0/SUCCESS)CGroup: /system.slice/ksm.service[root@local ~]# service ksmtuned statusRedirecting to /bin/systemctl status ksmtuned.serviceksmtuned.service - Kernel Samepage Merging (KSM) Tuning DaemonLoaded: loaded (/usr/lib/systemd/system/ksmtuned.service; enabled)Active: active (running) since 四 2014-09-04 17:02:50 CST; 1 weeks 0 days agoProcess: 975 ExecStart=/usr/sbin/ksmtuned (code=exited, status=0/SUCCESS)Main PID: 1002 (ksmtuned)CGroup: /system.slice/ksmtuned.service├─ 1002 /bin/bash /usr/sbin/ksmtuned└─31249 sleep 60关闭 ksmservice ksmtuned stopservice ksmtuned stopchkconfig ksm offchkconfig ksmtuned off关闭 ksm 对个别虚拟机的影响nosharepages 阻止宿主机将同样的内存页合并。

      查看 ksm 运行的情况, /sys/kernel/mm/ksm/pages_shared how many shared pages are being usedpages_sharing how many more sites are sharing them i.e. how much savedpages_unshared how many pages unique but repeatedly checked for mergingpages_volatile how many pages changing too fast to be placed in a treefull_scans how many times all mergeable areas have been scanned四 使用巨型页x86 默认的内存页是 4kB,但是也可以使用 2MB 的巨型页,系统的巨型页可以传输过虚拟机,kvm 虚拟机可以通过分配巨型页提高性能;打开宿主机内核巨型页设置echo never > /sys/kernel/mm/transparent_hugepage/enabled设置虚拟机 xml 文件查看当前巨型页使用情况cat /proc/sys/vm/nr_hugepages巨型页配置1 查看当前的巨型页值View the current huge pages value:# cat /proc/meminfo | grep HugeAnonHugePages: 2048 kBHugePages_Total: 0HugePages_Free: 0HugePages_Rsvd: 0HugePages_Surp: 0Hugepagesize: 2048 kB2 巨型页默认大小是 2MB,可以通过如下命令修改可以使用的巨型页数量echo 25000 > /proc/sys/vm/nr_hugepages或者sysctl vm.nr_hugepages=NN 是要设置的巨型页数量3 挂载巨型页mount -t hugetlbfs hugetlbfs /dev/hugepages4 重启 libvirtd 服务和虚拟机systemctl start libvirtdvirsh start virtual_machine5 检查cat /proc/meminfo | grep HugeAnonHugePages: 116736 kBHugePages_Total: 4887HugePages_Free: 727HugePages_Rsvd: 0HugePages_Surp: 0Hugepagesize: 2048 kB巨型页关闭sysctl vm.nr_hugepages=0umount hugetlbfs。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.