OS에서 대용량 페이지를 활성화하는 방법
Windows
Windows에서 대용량 페이지를 사용하려면
SeLockMemoryPrivilege 보안
정책을 활성화해야 합니다. 이 작업은 Windows API를 통해 프로그래밍
방식으로 수행할 수도 있고, 보안 정책 GUI를 통해 수행할 수도
있습니다(아래 안내 참조).
- 시작 -> "secpol.msc"를 검색하여 실행하십시오.
- 왼쪽에서 "Local Policies"(로컬 정책) -> "User Rights Assignment"(사용자 권한 과제)를 선택한 다음, "Lock pages in memory"(메모리에 페이지 잠금)를 더블 클릭하십시오.

- 사용자를 추가하고 컴퓨터를 재부팅하십시오.

- RAMMap으로 실행 중에 대용량 페이지가 사용되는지 확인하십시오.
Linux
명시적 대용량 페이지
고정된 개수의 대용량 페이지를 명시적으로 할당하려면 libhugetlbfs를 사용할 수 있습니다:
$ sudo apt install libhugetlbfs-bin
$ sudo hugeadm --create-global-mounts
$ sudo hugeadm --pool-pages-min 2M:128이는 libhugetlbfs가 필요 없는 다음 명령을 실행하는 것과 거의 같습니다(커널 문서 참조):
$ echo 128 > /proc/sys/vm/nr_hugepages
$ mount -t hugetlbfs \
-o uid=<value>,gid=<value>,mode=<value>,pagesize=<value>,size=<value>,\
min_size=<value>,nr_inodes=<value> none /mnt/huge/proc/meminfo에서 그 효과를 확인할 수 있습니다:
$ watch -n1 "cat /proc/meminfo | grep huge -i"
AnonHugePages: 2048 kB
ShmemHugePages: 0 kB
FileHugePages: 0 kB
HugePages_Total: 128 <== 128 huge pages allocated
HugePages_Free: 128
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 262144 kB <== 256MB of space occupied투명 대용량 페이지
Linux에서 애플리케이션이 투명 대용량 페이지(Transparent Huge Pages)를
사용할 수 있게 하려면
/sys/kernel/mm/transparent_hugepage/enabled가
always 또는 madvise인지 확인해야 합니다.
시스템 전역 모드(always)에서는 커널이 일반 페이지를
자동으로 병합하여 대용량 페이지로 승격합니다. 이 방식은 THP를 인식하지
못하는 애플리케이션에서도 작동하므로 코드를 직접 변경할 필요가 없습니다.
다음 명령으로 시스템 전역 모드를 활성화하십시오:
echo "always" | sudo tee /sys/kernel/mm/transparent_hugepage/enabledmadvise 옵션을 사용하면 madvise 시스템
호출을 통해 MADV_HUGEPAGE 속성이 지정된 메모리 영역
안에서만 THP가 활성화됩니다. 예를 들면 다음과 같습니다:
void ptr = mmap(nullptr, size, PROT_READ | PROT_WRITE | PROT_EXEC,
MAP_PRIVATE | MAP_ANONYMOUS, -1 , 0);
madvise(ptr, size, MADV_HUGEPAGE);
// use the memory region `ptr`
munmap(ptr, size);애플리케이션이 madvise와 mmap을 통해 대용량
페이지를 할당하면 /proc/meminfo의
AnonHugePages 항목에서 그 효과를 확인할 수 있습니다.