鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

虚拟机使用内存大页

目的

使用内存大页能保证虚拟机的所有内存在Host上始终以大页形式存在,并且保证物理连续,可以有效地减少TLB Miss,显著提升内存访问密集型业务的性能。

方法

  1. 在Host侧查看各个NUMA节点上的大页分配情况。
    1
    cat /sys/devices/system/node/node*/meminfo | grep Huge
    

    如果HugePages显示信息为0,说明此时系统没有配置内存大页。

  2. 配置虚拟机使用512MB内存大页。

    KVM虚拟化场景下,配置内存大页时,至少要预留总内存的15%给Host。

    以在openEuler 20.03 LTS SP1下配置4U8G规格的虚拟机为例,先在Host侧分配300个512MB内存大页。

    1. 打开“/etc/grub2-efi.cfg”文件。
      1
      vi /etc/grub2-efi.cfg
      
    2. 在Linux字段一行的最后输入以下配置。
      1
      default_hugepagesz=512M hugepagesz=512M  hugepages=256 pci=realloc
      

      如下图所示:

    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  3. 重启服务器。
    1
    reboot
    
  4. 重新进入操作系统后,确定内存大页配置情况。
    1
    cat /proc/sys/vm/nr_hugepages
    

  5. 在Host侧查看各个NUMA节点上的大页分配情况。
    1
    cat /sys/devices/system/node/node*/meminfo | grep Huge
    

    此时各个NUMA节点的HugePages显示信息为75,说明此时系统已为各个NUMA节点(numa0~numa3)配置了75个512MB内存大页。

  6. 如果需要查看某个NUMA节点上的大页配置情况,可以执行如下命令。这里以node0为例:
    1
    2
    cat /sys/devices/system/node/node0/hugepages/hugepages-524288kB/nr_hugepages  
    cat /sys/devices/system/node/node0/hugepages/hugepages-524288kB/free_hugepages
    
    • nr_hugepages显示信息为75,说明此时系统为该NUMA节点配置了75个512MB内存大页。
    • free_hugepages显示信息为75,说明此时系统剩余75个512MB内存大页。
  7. 确定hugetlbfs是否已经挂载。
    1
    mount | grep hugetlbfs
    

    如下回显信息表示hugetlbfs已经挂载。

  8. 虚拟机配置大页内存。虚拟机xml文件的配置参考如下。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <domain type = 'KVM'>  
    ...  
      <memory unit='KiB'>8388608</memory>  
      <currentMemory unit='KiB'>83886088</currentMemory>  
      <memoryBacking>  
        <hugepages/>  
      </memoryBacking>  
    ...  
    </domain>