首页 > 其他分享 >kvm guest 设置hugepages

kvm guest 设置hugepages

时间:2023-01-04 16:02:01浏览次数:38  
标签:guest mount kvm hugepages hugetlbfs virsh rhel 1G dev

Host支持两种大小的hugepage:2 MiB, 1 GiB. 默认使用的页面大小是4 KiB. Hugepage会立即分配,并不会swap out。

2MiB 的hugepage

  1. 设置host的大页,使用virsh命令即可,然后guest就可以启动了:
# virsh allocpages 2M 1024

如果不指定node,此命令会将这1024个hugepage平均分配到host的每个node; 因为默认HugeTLB filesystem已经mount到host,所以不用再做mount。

# mount | grep -i huge
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel,pagesize=2M)

启动虚拟机。hugepage size不指定的话,默认使用2M大小的大页:

# virsh dumpxml test --xpath //memoryBacking
<memoryBacking>
  <hugepages/>
  <access mode="shared"/>
</memoryBacking>  ## 没有numa node的设置
# virsh start test 
Domain 'test' started

qemu 命令行:

-object '{"qom-type":"memory-backend-file","id":"pc.ram","mem-path":"/dev/hugepages/libvirt/qemu/1-test","share":true,"x-use-canonical-path-for-ramblock-id":false,"prealloc":true,"size":2147483648}' \

1GiB 的hugepage

  1. 设置host的大页,并尝试启动虚拟机(失败):
# virsh allocpages 1G 3
## 查看每个node的1G大页的情况,也可以用virsh capabilities来看:
# virsh freepages  0 1G
1048576KiB: 2
# virsh freepages  1 1G
1048576KiB: 1
# virsh dumpxml rhel --xpath //memoryBacking
<memoryBacking>
  <hugepages>
    <page size="1048576" unit="KiB"/>
  </hugepages>
</memoryBacking>
# virsh start rhel
error: Failed to start domain 'rhel'
error: internal error: Unable to find any usable hugetlbfs mount for 1048576 KiB
## 说明系统默认mount的HugeTLB filesystem只是针对2M的大页,对1G的大页,需要手动设置
  1. 设置1G hugepage的mount point,并restart libvirtd,guest就可以启动了:
# mkdir /dev/hugepages1G
# mount -t hugetlbfs -o pagesize=1G hugetlbfs /dev/hugepages1G
# mount | grep huge
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel,pagesize=2M)
hugetlbfs on /dev/hugepages1G type hugetlbfs (rw,relatime,seclabel,pagesize=1024M)
# virsh start rhel
error: Failed to start domain 'rhel'
error: internal error: Unable to find any usable hugetlbfs mount for 1048576 KiB
# systemctl restart virtqemud
# virsh start rhel
Domain 'rhel' started

### qemu 命令行:
-m 2048 \
-overcommit mem-lock=off \
-smp 8,sockets=8,cores=1,threads=1 \
-object '{"qom-type":"memory-backend-file","id":"ram-node0","mem-path":"/dev/hugepages1G/libvirt/qemu/1-rhel","prealloc":true,"size":2147483648}' \
-numa node,nodeid=0,cpus=0-7,memdev=ram-node0 \
###

标签:guest,mount,kvm,hugepages,hugetlbfs,virsh,rhel,1G,dev
From: https://blog.51cto.com/u_15288977/5988668

相关文章

  • KVM虚拟机迁移
    说明一下背景:本次迁移主要采取的是冷机迁移,热机迁移太复杂,这个可以根据自己实际业务选择相应的方案,我们可以短暂的宕机,所以以简单和不出错成为本此迁移的主要知道思想。1......
  • 44-KVM虚拟化-存储管理和磁盘扩容
    KVM存储模式基于文件系统的存储dir:FilesystemDirectory需要有挂载点的文件系统fs:Pre-FormattedBlockDevice无需挂载的文件系统,如:位于SAN存储的文件系统,可支持多......
  • 43-KVM虚拟化-利用libvirt服务进行KVM虚拟机管理
    半虚拟化驱动virtio的工作原理为了提高内存、硬盘、网络的性能,需要支持半虚拟化virtio是一种I/O半虚拟化解决方案,是一套通用I/O设备虚拟化的程序,是对半虚拟化Hypervis......
  • CS5280H 无网络安装KVM虚拟机的过程
    背景信创海光机器想进行虚拟化自带了银河麒麟V10SP1的操作系统.但是没有安装virt-manager等工具会议室里面的网口又都坏了.所以准备挑战一下无网络安装KVM.过程1......
  • 懂了!VMware/KVM/Docker原来是这么回事儿
    原文链接云计算时代,计算资源如同小马哥当年所言,已经成为了互联网上的水和电。 虚拟主机、web服务器、数据库、对象存储等等各种服务我们都可以通过各种各样的云平台来......
  • KVM下安装操作系统
    本文假设已安装完成kvm,如果未安装。KVM安装查看文章来源,翻译自http://www.linux-kvm.org/page/HOWTO1为用户创建系统空间/usr/local/kvm/bin/qemu-imgcreate-fqcow2vdis......
  • 配置KVM虚拟化
    安装KVM虚拟化服务器控制KVM服务KVM管理控制台安装虚拟机使用命令行管理KVM虚拟机实验步骤:一、配置KVM虚拟化服务器控制KVM服务1、配置centos01支持虚拟化功能(1)设置内存大小......
  • guestfish修改镜像
    guestfish修改镜像keywords:imgqcow2安装:sudoyuminstalllibguestfs-tools#Fedora/RHEL/CentOSsudoapt-getinstalllibguestfs-tools#Debian/Ubuntu......
  • kvm之virbr0
    创建完kvm虚拟机后,宿主机上会自动创建一个默认网桥(Bridge)virbr0其作用是给其上的虚机网卡提供NAT访问外网的功能virbr0默认IP一般为192.168.122.1/24,并为连接其上的......
  • centos8 kvm启用 virsh console
    新建一个centos8的虚拟机,使用virshconsole连接失败,查阅一通资料后发现了解决方法虚拟机中执行以下命令:grubby--update-kernel=ALL--args="console=ttyS0"&&init6......