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명령을 사용하여 패키지를 설치하고 정보를 볼 수도 있습니다 hugeadm.Hugepades의 데비안 위키 페이지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개는 무료입니다.)

관련 정보