Learning
토픽 41 / 85·메모리 관리

Huge Page / Large Page (대용량 페이지)

Huge Page / Large Page (대용량 페이지)

기본 4KB보다 큰 페이지 크기(2MB, 1GB)를 사용하여 TLB 엔트리 하나가 더 넓은 메모리 영역을 커버하게 함으로써 TLB 미스를 줄이고 주소 변환 성능을 향상시키는 기법

목적: TLB 커버리지 확대, TLB 미스율 감소, 대규모 메모리 워크로드 성능 향상

페이지 크기: 2MB(x86-64 PD 레벨에서 직접 매핑), 1GB(PDPT 레벨에서 직접 매핑), 페이지 테이블 단계 축소 효과

TLB 커버리지 비교: 4KB×512엔트리=2MB vs 2MB×512엔트리=1GB → 512배 확대

구현 방식

  • 명시적 할당(hugetlbfs): Linux에서 hugetlbfs 파일시스템 마운트, 부팅 시 예약, 애플리케이션이 명시적으로 사용
  • THP(Transparent Huge Pages): OS가 자동으로 연속된 4KB 페이지를 2MB로 병합(khugepaged), 애플리케이션 수정 불필요
  • Windows Large Pages: VirtualAlloc + MEM_LARGE_PAGES 플래그, SeLockMemoryPrivilege 필요

장점: TLB 미스 감소, 페이지 워크 단계 축소, 대규모 메모리 접근 성능 향상

단점: 내부 단편화 증가(최대 2MB-1), 메모리 낭비 가능, THP의 지연·CPU 오버헤드(compaction), 실시간 시스템에서 THP 비활성화 권장

적용사례: 데이터베이스(Oracle/PostgreSQL), JVM 대용량 힙, 가상화(KVM/QEMU), HPC/과학 계산, Redis/Memcached

비교: 4KB(유연/단편화적음/TLB압력높음) vs 2MB(TLB효율적/내부단편화증가) vs 1GB(최대커버리지/할당경직)

연관: TLB, 페이징, 가상 메모리, MMU, 다단계 페이지 테이블