如何查看 1GB 巨大表的数量(以及我应该遵循哪些文档)?

如何查看 1GB 巨大表的数量(以及我应该遵循哪些文档)?

我正在尝试找出 Ubuntu 20.04 下 KVM 使用的大页面。如果我更改 2048 KiB(默认大小)页面的数量,我会看到这反映在/proc/meminfo

:~$ echo 0 |sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
0
:~$ cat /proc/meminfo | grep Huge
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:        50331648 kB
:~$ echo 512 |sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
512
:~$ cat /proc/meminfo | grep Huge
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:         0 kB
HugePages_Total:     512
HugePages_Free:      512
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:        51380224 kB
:~$ 

但是,当我更改 1GB 页面的数量时,我没有看到任何反映这一点的内容。

:~$ echo 0 | sudo tee /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
0
:~$ cat /proc/meminfo | grep Huge
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:         0 kB
HugePages_Total:     512
HugePages_Free:      512
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:        51380224 kB
:~$ echo 16 | sudo tee /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
16
:~$ cat /proc/meminfo | grep Huge
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:         0 kB
HugePages_Total:     512
HugePages_Free:      512
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:        51380224 kB

据我了解,这意味着我的系统支持 1GB 大页面,对吧?

ls /sys/kernel/mm/hugepages
hugepages-1048576kB  hugepages-2048kB

1Gb 页面是否在其他地方列出?我可以查看他们的状态吗?

编辑:感谢@Krackout,我可以看到我的 1GB 大页面,但我仍然对我应该遵循哪些文档感到困惑:

我对设置和监视大页面的不同过程感到困惑。我似乎已经让他们工作了,但仍然有很多我不清楚的地方。

主要资源:

上述每个链接都描述了部分重叠的过程。似乎差异基于内核和发行版,但我不清楚它们到底是什么,而且我似乎无法在任何地方找到明确的说明。

在我的 Ubuntu 20.04 设置中,对我有用的是将以下内容放入crontab -e

@reboot echo 64 | sudo tee /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
@reboot mount -t hugetlbfs -o pagesize=1G none /dev/hugepages

之后,我可以在 virt-manager 中启动包含以下 XML 的 KVM 虚拟机:

<memoryBacking>
  <hugepages>
    <page size='1048576' unit='KiB'/>
  </hugepages>
</memoryBacking>

所以我能够做的方式并不完全是任何指南所说的。

答案1

在 Debian Linux 中,需要插入内核参数hugepagesz=1G(当然还要重新启动)。您还可以libhugetlbfs-bin使用命令安装包并查看信息hugeadmHugepades 上的 Debian wiki 页面应该适用于基于 Debian 的 Ubuntu。

答案2

  1. 在您的主机上运行virsh capabilities,​​它将显示该主机上启用的大页面:

    # virsh capabilities
        <topology>
              <cells num='2'>
                <cell id='0'>
                  <memory unit='KiB'>16088120</memory>
                  <pages unit='KiB' size='4'>3382030</pages>
                  <pages unit='KiB' size='2048'>1250</pages>
                  <pages unit='KiB' size='1048576'>0</pages>
                  ----to be continued-----
         <cell id='1'>
                  <memory unit='KiB'>16466052</memory>
                  <pages unit='KiB' size='4'>2427937</pages>
                  <pages unit='KiB' size='2048'>1250</pages>
                  <pages unit='KiB' size='1048576'>4</pages>
                  <distances> 
    
  2. 检查系统文件以了解每个节点的使用情况和当前状态:

    # cat /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/free_hugepages
    0
    # cat /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages
    0
    # cat /sys/devices/system/node/node1/hugepages/hugepages-1048576kB/nr_hugepages
    4
    # cat /sys/devices/system/node/node1/hugepages/hugepages-1048576kB/free_hugepages
    3
    

    (节点0没有1G的hugepage页;节点1有4个1G的hugepage,其中3个是空闲的)

相关内容