1GBの大容量テーブルの数をどのように確認できますか(そしてどの文書に従うべきですか?)

1GBの大容量テーブルの数をどのように確認できますか(そしてどの文書に従うべきですか?)

Ubuntu 20.04では、KVMがどのhugepagesを使用しているかを調べたいと思います。 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

その後、次のXMLを使用してvirt-managerで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つは無料です。)

関連情報