THP(Transpoarent Huge Pages)란
CPU가 물리적 주소를 찾는 방법
Page : 메모리를 일정한 크기로 나누어 관리하는 단위
virtual address 와 physical address 를 연결해주는 테이블 Page table
이고 이 테이블이 존재하는 위치를 담은 것이 TTB(Translation Table Base Address) 다.
CPU 가 매번 TTB를 통해서 물리메모리에 접근해서 데이터를 가져오게 되면 속도가 느리므로 virtual address 로 부터 physical addresss로의 매핑 정보를 가진(Entry를 가진) 캐시가 있다면 메모리를 거치지 않고도 바로 Physical address를 얻을 수 있게 되어 속도가 빨라진다. 이 때 캐시의 역할을 하는 것은 TLB(Translation Lookaside Buffer).
CPU가 Virtual Address로 메모리를 엑세스 하려 하면 캐시 역할을 하는 TLB 내 Virtual Address Entry 들에 매핑된 정보가 있는지 확인하고 만약 있다면(hit) 곧 바로 메모리에 엑세스해서 데이터를 가져오지만 없다면(miss) 메모리의 TTB에 1차적으로 접근하여 Physical address를 구해온 뒤 구해 온 Physical address를 이용해 메모리에 또 한 번 접근하여 데이터를 가져옴.
CPU 가 메모리의 주소를 빠르게 가져오는 전략 THP(Transparent Huge Page)
hit ratio 가 떨어진다고 하면 miss가 늘어나서 성능 저하로 이어지기 때문에 page 자체의 크기를 늘려서 개수를 줄이는 방법을 쓰는데 이것이 THP 이다.
THP는 기존 4KB 크기의 페이지 대신 2MB 혹은 1GB 크기의 페이지를 동적으로 할당하여 사용하는 기능. RHEL 6 이 후 기본으로 활성화.
THP 기능이 의도와 달리 시스템 성능이 저하되는 경우가 많아 이 옵션을 disable 시키는 것을 권함.