검색

7.3. HugeTLB Huge Pages 구성

download PDF
Red Hat Enterprise Linux 7.1부터는 부팅 시와 런타임 시 대규모 페이지를 예약하는 두 가지 방법이 있습니다. 부팅 시 예약은 메모리가 아직 많이 조각화되어 있지 않으므로 성공할 가능성이 높습니다. 그러나 NUMA 시스템에서 페이지 수는 NUMA 노드 간에 자동으로 분할됩니다. 런타임 방법을 사용하면 NUMA 노드당 대규모 페이지를 예약할 수 있습니다. 부팅 프로세스에서 런타임 예약이 가능한 한 빨리 수행되면 메모리 조각화 가능성이 낮습니다.

7.3.1. 부팅 시 대규모 페이지 구성

부팅 시 대규모 페이지를 구성하려면 커널 부팅 명령줄에 다음 매개변수를 추가합니다.
hugepages
부팅 시 커널에 구성된 영구 대규모 페이지 수를 정의합니다. 기본값은 0입니다. 시스템에 물리적으로 연속된 무료 페이지가 충분한 경우에만 대규모 페이지를 할당할 수 있습니다. 이 매개변수로 예약된 페이지는 다른 용도로 사용할 수 없습니다.
이 값은 부팅 후 /proc/sys/vm/nr_hugepages 파일의 값을 변경하여 조정할 수 있습니다.
NUMA 시스템에서 이 매개변수로 할당된 대규모 페이지는 노드 간에 동일하게 나뉩니다. 노드의 /sys/devices/node/node/node_id/hugepages-1048576kB/nr_hugepages 파일의 값을 변경하여 런타임 시 대규모 페이지를 할당할 수 있습니다.
자세한 내용은 기본적으로 /usr/share/doc/kernel-doc-kernel_version/Documentation/vm/hugetlbpage.txt 에 설치된 관련 커널 문서를 참조하십시오.
hugepagesz
부팅 시 커널에 구성된 영구 대규모 페이지의 크기를 정의합니다. 유효한 값은 2MB 및 1GB입니다. 기본값은 2MB입니다.
default_hugepagesz
부팅 시 커널에 구성된 영구 대규모 페이지의 기본 크기를 정의합니다. 유효한 값은 2MB 및 1GB입니다. 기본값은 2MB입니다.
커널 부팅 명령줄에 매개변수를 추가하는 방법에 대한 자세한 내용은 Chapter 3을 참조하십시오. Red Hat Enterprise Linux 7 커널 관리 가이드의 커널 매개변수 및 값 나열.

절차 7.1. 조기 부팅 중 1GB 페이지 예약

HugeTLB 하위 시스템에서 지원하는 페이지 크기는 아키텍처에 따라 다릅니다. AMD64 및 Intel 64 아키텍처에서는 2MB의 대규모 페이지 및 1GB gigantic 페이지가 지원됩니다.
  1. /etc/default/grub 파일의 커널 명령줄 옵션에 다음 행을 추가하여 1GB 페이지용 HugeTLB 풀을 root로 생성합니다.
    default_hugepagesz=1G hugepagesz=1G
    
  2. 편집된 기본 파일을 사용하여 GRUB2 설정을 다시 생성합니다. 시스템에서 BIOS 펌웨어를 사용하는 경우 다음 명령을 실행합니다.
    # grub2-mkconfig -o /boot/grub2/grub.cfg
    
    UEFI 펌웨어가 있는 시스템에서 다음 명령을 실행합니다.
      # grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
    
  3. 다음 콘텐츠를 사용하여 /usr/lib/systemd/system/hugetlb-gigantic-pages.service 라는 파일을 만듭니다.
    [Unit]
    Description=HugeTLB Gigantic Pages Reservation
    DefaultDependencies=no
    Before=dev-hugepages.mount
    ConditionPathExists=/sys/devices/system/node
    ConditionKernelCommandLine=hugepagesz=1G
    
    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/usr/lib/systemd/hugetlb-reserve-pages.sh
    
    [Install]
    WantedBy=sysinit.target
    
  4. 다음 콘텐츠를 사용하여 /usr/lib/systemd/hugetlb-reserve-pages.sh 파일을 만듭니다.
    #!/bin/sh
    
    nodes_path=/sys/devices/system/node/
    if [ ! -d $nodes_path ]; then
    	echo "ERROR: $nodes_path does not exist"
    	exit 1
    fi
    
    reserve_pages()
    {
    	echo $1 > $nodes_path/$2/hugepages/hugepages-1048576kB/nr_hugepages
    }
    
    reserve_pages number_of_pages node
    마지막 줄에서 number_of_pages 를 예약할 1GB 페이지 수와 node 를 해당 페이지를 예약할 노드 이름으로 바꿉니다.

    예 7.1. node0node1에 페이지 예약

    예를 들어 node0 에 1GB페이지를 2개 예약하고 1GB페이지를 node1 에 예약하려면 마지막 행을 다음 코드로 교체합니다.
    reserve_pages 2 node0
    reserve_pages 1 node1
    
    필요에 따라 수정하거나 다른 노드에서 메모리를 예약하기 위해 더 많은 행을 추가할 수 있습니다.
  5. 스크립트를 실행 가능하게 만듭니다.
    # chmod +x /usr/lib/systemd/hugetlb-reserve-pages.sh
    
  6. 초기 부팅 예약을 활성화합니다.
    # systemctl enable hugetlb-gigantic-pages
    
참고
언제든지 nr_hugepages 에 작성하여 런타임 시 더 많은 1GB 페이지를 예약할 수 있습니다. 그러나 메모리 조각화로 인한 실패를 방지하려면 부팅 프로세스 중에 초기에 1GB 페이지를 예약하십시오.

7.3.2. 실행 시 대규모 페이지 구성

다음 매개변수를 사용하여 런타임에 대규모 페이지 동작에 영향을 미칩니다.
/sys/devices/system/node/node_id/hugepages/hugepages-size/nr_hugepages
지정된 NUMA 노드에 할당된 지정된 크기의 대규모 페이지 수를 정의합니다. 이는 Red Hat Enterprise Linux 7.1에서 지원됩니다. 다음 예제는 20개의 2048 kB 대규모 페이지를 node2 에 추가합니다.
# numastat -cm | egrep 'Node|Huge'
                 Node 0 Node 1 Node 2 Node 3  Total add
AnonHugePages         0      2      0      8     10
HugePages_Total       0      0      0      0      0
HugePages_Free        0      0      0      0      0
HugePages_Surp        0      0      0      0      0
# echo 20 > /sys/devices/system/node/node2/hugepages/hugepages-2048kB/nr_hugepages
# numastat -cm | egrep 'Node|Huge'
                 Node 0 Node 1 Node 2 Node 3  Total
AnonHugePages         0      2      0      8     10
HugePages_Total       0      0     40      0     40
HugePages_Free        0      0     40      0     40
HugePages_Surp        0      0      0      0      0
/proc/sys/vm/nr_overcommit_hugepages
메모리 과다 할당을 통해 시스템에서 생성하고 사용할 수 있는 최대 대규모 페이지 수를 정의합니다. 이 파일에 0이 아닌 값을 작성하면 영구적인 대규모 페이지 풀이 소진되면 시스템이 커널의 일반 페이지 풀에서 대규모 페이지 수를 얻을 수 있음을 나타냅니다. 이 서한 대규모 페이지가 사용되지 않으면 해제되고 커널의 일반 페이지 풀로 돌아갑니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.