5.2. Huge Pages 및 Transparent Huge Pages

메모리는 페이지 (pages)라는 블록에서 관리됩니다. 한 페이지는 4096 바이트입니다. 1MB 메모리는 256 페이지에 상응하며 1GB 메모리는 256,000 페이지에 상응합니다. CPU에는 이러한 페이지 목록이 포함된 내장 메모리 관리 장치가 있고 각 페이지는 페이지 테이블 엔트리를 통해 참조됩니다.
대량의 메모리를 관리하기 위해 시스템을 활성화할 수 있는 다음과 같은 두 가지 방법이 있습니다:
  • 하드웨어 메모리 관리 장치에서 페이지 테이블 엔트리 수를 늘림
  • 페이지 크기를 확대함
현재 프로세서에 있는 하드웨어 메모리 관리 장치는 수백에서 수천 페이지 테이블 엔트리만을 지원하므로 첫 번째 방법은 비용이 많이 듭니다. 또한 수천 페이지 (메가바이트 메모리)에서 잘 작동하는 하드웨어 및 메모리 관리 알고리즘은 수백만 (심지어 수십억) 페이지에서는 실행에 어려움이 있을 수 있습니다. 이러한 경우 성능 문제를 일으킬 수 있습니다. 애플리케이션이 메모리 관리 장치가 지원하는 것 보다 많은 메모리 페이지를 사용해야 할 경우 시스템은 더 느린 소프트웨어 기반 메모리 관리로 폴백하여 시스템 전체가 더 느리게 실행됩니다.
Red Hat Enterprise Linux 6에서는 huge pages를 사용하여 두 번째 방법을 구현하고 있습니다.
간단하게 말하면 huge pages는 2MB 및 1GB 크기의 메모리 블록입니다. 2MB 페이지를 사용하는 페이지 테이블은 여러 기가 바이트의 메모리 관리에 적합한 반면 1GB 페이지의 페이지 테이블은 테라바이트 메모리 까지의 확장에 가장 적합합니다.
Huge pages는 부팅시 할당해야 합니다. 이는 수동으로 관리하기 어려우므로 효과적으로 사용하기 위해 코드를 크게 변경해야 할 경우가 많습니다. 이를 위해 Red Hat Enterprise Linux 6에서는 THP (transparent huge pages)의 사용을 구현하고 있습니다. THP는 huge pages의 생성, 관리, 사용의 대부분을 자동화하는 추상화 계층입니다.
THP는 huge pages 사용에 있어서 복잡성을 시스템 관리자 및 개발자로 부터 제거합니다. THP의 목적은 성능 개선에 있으므로 개발자 (커뮤니티 및 Red Hat 모두)는 다양한 시스템, 설정, 애플리케이션, 워크로드에 걸쳐 THP를 테스트 및 최적화합니다. 이는 THP의 기본 설정이 대부분의 시스템 설정의 성능을 향상시킬 수 있게 합니다.
현재 THP는 힙과 스택 영역 등과 같은 익명의 메모리 영역에서만 매핑할 수 있음에 유의합니다.

+ Recent posts