Linux's Transparent Huge Page (THP)
- 연속적인 메모리(page)가 사용가능해지면 page fault 발생 시 huge page 를 할당한다.
- 연속적인 메모리 사용이 불가능하면 base page를 huge page로 promotion 한다.
- 연속적이지 않을 경우 memory compaction을 수행하기도 한다.
- fragmentation이 심한 경우 백그라운드에서 promotion을 수행한다. (khugepaged) 이때 가장 먼저 온 프로세스부터 프로세스 내의 모든 huge page promotion을 한다. (First Come First Service)
- CPU는 virtual address로 메모리 request를 한다.
- MMU (Memory Management Unit)는 page table을 참조하여 CPU 가 요청한 virtual address를 physical address로 translation을 하여 메모리에 접근한다.
- MMU의 page table 접근 속도를 향상시키기 위해 address translation 정보를 캐시한 TLB를 사용한다.
⇒ MMU의 huge page allocation overhead를 최소화하는데 초점을 맞춘다.
⇒ 프로세스가 huge page 를 할당 받았는데 일부만 사용한다면 memory bloat이 증가한다.
<-> FreeBSD : huge page만큼의 base page들이 할당되면 promotion을 수행하도록 huge page mapping을 지연시키기 때문에 memory bloat은 발생하지 않지만 성능 이점이 줄어들 수 있다.