Linux 에서 커널 Hugepage 활성화 여부 확인 방법

LinuxBeginner
지금 연습하기

소개

이 랩에서는 Linux 시스템에서 커널 Hugepage 가 활성화되고 구성되었는지 확인하는 방법을 배우게 됩니다. Hugepage 는 더 큰 메모리 페이지를 사용하여 메모리 집약적인 애플리케이션의 성능을 향상시킬 수 있는 커널 기능입니다.

일련의 실용적인 단계를 통해 Hugepage 설정을 확인하는 다양한 방법을 탐색합니다. 먼저 /proc/meminfo 파일을 검사하여 총, 사용 가능, 예약된 Hugepage 및 Hugepage 크기를 포함한 현재 Hugepage 통계를 확인합니다. 다음으로, sysctl 명령을 사용하여 원하는 Hugepage 수를 나타내는 vm.nr_hugepages 커널 매개변수를 확인합니다. 마지막으로, 커널의 메모리 관리 하위 시스템 내의 Hugepage 구성을 더 자세히 파악하기 위해 /sys/kernel/mm 디렉토리를 검사합니다. 이러한 단계를 완료함으로써 Linux 시스템에서 Hugepage 상태를 확인하는 방법에 대한 확실한 이해를 얻게 됩니다.

/proc/meminfo 에서 Hugepage 확인

이 단계에서는 Linux 시스템에서 현재 Hugepage 구성을 확인하는 방법을 살펴보겠습니다. Hugepage 는 Linux 커널의 기능으로, 시스템이 기본 4KB 크기보다 더 큰 메모리 페이지를 사용할 수 있도록 합니다. 이는 데이터베이스 및 가상화 소프트웨어와 같이 많은 양의 메모리를 사용하는 애플리케이션의 성능을 향상시킬 수 있습니다.

/proc/meminfo 파일에서 Hugepage 에 대한 정보를 찾을 수 있습니다. 이 파일에는 시스템과 관련된 다양한 메모리 관련 통계가 포함되어 있습니다.

아직 열지 않았다면 터미널을 엽니다. 데스크탑 왼쪽의 Xfce 터미널 아이콘을 클릭하여 터미널을 열 수 있습니다.

이제 cat 명령을 사용하여 /proc/meminfo의 내용을 살펴보겠습니다. cat 명령은 파일의 내용을 표시하는 데 사용됩니다.

터미널에 다음 명령을 입력하고 Enter 키를 누릅니다.

cat /proc/meminfo

이 명령은 /proc/meminfo 파일의 전체 내용을 터미널에 출력합니다. 시스템 메모리에 대한 많은 정보를 볼 수 있습니다.

특히 Hugepage 정보를 찾기 위해 grep 명령을 사용하여 cat의 출력을 필터링할 수 있습니다. grep 명령은 특정 패턴과 일치하는 줄을 검색합니다.

다음 명령을 입력하고 Enter 키를 누릅니다.

cat /proc/meminfo | grep HugePages

| 기호는 파이프라고 합니다. 왼쪽 명령 (cat /proc/meminfo) 의 출력을 가져와 오른쪽 명령 (grep HugePages) 에 입력으로 보냅니다. 이렇게 하면 grepcat의 출력 내에서만 검색합니다.

다음과 유사한 줄이 표시되어야 합니다 (정확한 숫자는 다를 수 있습니다).

HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

이 줄의 의미를 자세히 살펴보겠습니다.

  • HugePages_Total: 시스템에 구성된 총 Hugepage 수입니다.
  • HugePages_Free: 현재 사용 가능하고 사용 가능한 Hugepage 수입니다.
  • HugePages_Rsvd: 향후 사용을 위해 예약된 Hugepage 수입니다.
  • HugePages_Surp: vm.nr_hugepages 설정보다 많은 Hugepage 수입니다 (다음 단계에서 살펴보겠습니다).
  • Hugepagesize: 각 Hugepage 의 크기입니다. 대부분의 시스템에서 이 값은 2048 kB (2MB) 입니다.

이 환경에서는 기본적으로 총 Hugepage 가 0 개일 가능성이 높으며, 이는 범용 시스템에서 일반적입니다.

다음 단계로 진행하려면 계속을 클릭하십시오.

sysctl vm.nr_hugepages 로 Hugepage 설정 확인

이전 단계에서는 /proc/meminfo를 살펴 현재 Hugepage 사용량을 확인했습니다. 이제 sysctl 명령을 사용하여 총 Hugepage 수를 제어하는 커널 매개변수를 확인해 보겠습니다.

sysctl 명령은 런타임에 커널 매개변수를 보고 수정하는 데 사용됩니다. 커널 매개변수는 Linux 커널의 동작 방식에 영향을 미치는 설정입니다.

우리가 관심 있는 특정 매개변수는 vm.nr_hugepages입니다. 이 매개변수는 커널이 예약해야 하는 총 Hugepage 수를 결정합니다.

터미널에 다음 명령을 입력하고 Enter 키를 누릅니다.

sysctl vm.nr_hugepages

이 명령은 vm.nr_hugepages 커널 매개변수의 현재 값을 표시합니다.

다음과 유사한 출력이 표시되어야 합니다.

vm.nr_hugepages = 0

이 출력은 총 Hugepage 수에 대한 현재 설정이 0 임을 확인합니다. 이는 /proc/meminfo에서 HugePages_Total이 0 이었던 것과 일치합니다.

sysctl 명령은 커널 동작의 여러 측면을 검사하고 변경하는 강력한 도구입니다. 여기서는 vm.nr_hugepages만 살펴보고 있지만, sysctl -a를 사용하여 다른 많은 매개변수를 탐색할 수 있습니다.

vm.nr_hugepages와 같은 커널 매개변수를 이해하는 것은 특정 워크로드에 대한 시스템 성능을 조정하는 데 중요합니다.

다음 단계로 이동하려면 계속을 클릭하십시오.

/sys/kernel/mm 에서 Hugepage 설정 검토

이 마지막 단계에서는 Hugepage 구성 정보를 사용할 수 있는 또 다른 위치인 /sys 파일 시스템을 살펴보겠습니다. /sys 파일 시스템은 커널 데이터 구조에 대한 인터페이스를 제공하여 커널 객체를 검사하고 때로는 수정할 수 있도록 합니다.

Hugepage 관련 정보는 /sys/kernel/mm/transparent_hugepage에서 찾을 수 있습니다. Transparent Hugepages (THP) 는 애플리케이션의 명시적인 구성 없이 자동으로 Hugepage 를 사용하려는 기능입니다.

cd 명령을 사용하여 이 디렉토리로 이동해 보겠습니다. cd는 "change directory"를 의미합니다.

다음 명령을 입력하고 Enter 키를 누릅니다.

cd /sys/kernel/mm/transparent_hugepage

이제 /sys/kernel/mm/transparent_hugepage 디렉토리에 있으므로 ls 명령을 사용하여 이 디렉토리의 파일을 나열해 보겠습니다. ls 명령은 디렉토리의 내용을 나열합니다.

다음 명령을 입력하고 Enter 키를 누릅니다.

ls

다음과 유사한 출력이 표시되어야 합니다.

defrag  enabled  khugepaged  numa_defrag  shmem_enabled  split_huge_pmd_size  split_huge_pte_size

이 파일들은 Transparent Hugepages 에 대한 다양한 구성 옵션과 상태 표시기를 나타냅니다.

cat 명령을 사용하여 enabled 파일의 내용을 살펴보겠습니다. 이 파일은 Transparent Hugepages 가 활성화, 비활성화 또는 'madvise' 모드 (애플리케이션이 Hugepage 사용에 대해 커널에 조언할 수 있는 모드) 인지 여부를 보여줍니다.

다음 명령을 입력하고 Enter 키를 누릅니다.

cat enabled

다음과 유사한 출력이 표시되어야 합니다.

[always] madvise never

출력은 현재 설정을 나타냅니다. [always]는 THP 가 현재 모든 매핑에 대해 활성화되어 있음을 의미합니다.

이제 defrag 파일을 살펴보겠습니다. 이 파일은 커널이 Hugepage 를 사용할 수 있도록 메모리 조각 모음을 시도해야 하는지 여부를 제어합니다.

다음 명령을 입력하고 Enter 키를 누릅니다.

cat defrag

다음과 유사한 출력이 표시되어야 합니다.

[always] defer defer+madvise madvise never

다시, [always]는 THP 와 관련된 메모리 조각 모음에 대한 현재 설정을 나타냅니다.

/sys 파일 시스템은 커널의 내부 상태 및 구성을 이해하는 데 유용한 리소스입니다. /sys/kernel/mm과 같은 디렉토리를 탐색하면 메모리 관리에 대한 깊은 통찰력을 얻을 수 있습니다.

이제 /proc/meminfo, sysctl/sys 파일 시스템의 세 가지 다른 방법을 사용하여 Hugepage 정보를 성공적으로 탐색했습니다.

랩을 완료하려면 계속을 클릭하십시오.

요약

이 랩에서는 Linux 시스템에서 커널 Hugepage 가 활성화되고 구성되었는지 확인하는 방법을 배웠습니다. 이를 달성하기 위해 세 가지 방법을 탐구했습니다. 먼저, catgrep을 사용하여 /proc/meminfo 파일을 검사하여 HugePages_Total, HugePages_Free, Hugepagesize와 같은 주요 Hugepage 통계를 확인했습니다.

다음으로, 일반적으로 sysctl vm.nr_hugepages를 사용하여 Hugepage 설정을 확인하고 /sys/kernel/mm 디렉토리 내에서 Hugepage 구성을 검사합니다. 비록 이러한 방법에 대한 자세한 단계가 제공된 내용에 완전히 제공되지는 않았지만 말입니다. 이러한 단계들은 Linux 시스템에서 Hugepage 의 현재 상태 및 구성을 결정하는 방법을 종합적으로 보여줍니다.