Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Huge page

From noriwiki


개요

Super Page, Huge Page, Extended Page Table이라고도 불리는 이 기술은 Page Table의 엔트리의 크기를 2MB로 늘릴 수 있는 기술이다. 이를 통해서 Page Table에 대한 Access를 줄이고 TLB 캐시 히트 정도를 늘리는 방법이다. 그러나 만약 데이터베이스처럼 메모리의 여러 공간을 광역적으로 사용하는 경우 이 기술을 사용하면, 오히려 Swap out되는 용량이 증가하여 속도가 저하 될 수도 있는 단점이 있다. 또한 이 기술을 사용하게 되면 internal fragmentation이 증가하게 되어서, 메모리를 효율적으로 사용하지 못한다는 단점과, swap-out을 하게 되면 매우 큰 용량이 swap-out되기 때문에 swapping기술을 효율적으로 사용하지 못한다는 단점이 있다. (이 이유로 리눅스의 huge page는 swap-out되지 않고 메모리에 상주하고 있다.)

단점

  • Latency: Huge page는 Memory zeroing에 요구되는 시간이 길어지기 떄문에 Tail latency가 커지는 문제가 있다.
  • Bloat: Huge page는 할당된 메모리의 많은 부분이 실제로 사용되지 않도록 하여 Internal fragmentation이 증가하는 문제가 있다. 이러한 경우에는 Memory bloating이 생기게 된다.
  • Unfainess: Huge page를 사용하게 되면, 서로 다른 process사이에 영구적이고 큰 메모리 할당의 차이를 가져와, 속도차이가 발생하게 된다.

리눅스 에서의 사용법

  • 명시적으로 hugetlbfs을 사용하는 방법이 있다.
  • Transparent Huge Page를 사용하여 암묵적으로 사용하는 방법이 있다.

Huge Page가 split되는 조건

  • Permission의 부분적인 수정
  • Unmmap의 부분적인 수정
  • Memory의 부분적인 공유