저희 팀과 저는 최근 가상 머신에서 Redis를 실행하면 다음과 같은 경고가 발생하는 것을 확인했습니다. "커널에서 THP(Transparent Huge Pages) 지원을 활성화했다는 경고입니다. 이로 인해 Redis에 대기 시간 및 메모리 사용 문제가 발생합니다."
이 주제에 대해 조사한 결과 대부분의 데이터베이스 공급업체에서는 THP를 비활성화할 것을 권장합니다(필요하지 않은 경우). 몇가지 말하자면:
또한 많은 배포판에서 기본적으로 이 기능을 활성화하는 것으로 나타났습니다.
- 빨간 모자
- 중앙 운영 체제
- 우분투
- 핵심 운영체제
질문은 다음과 같습니다.
- 기본적으로 활성화되어 있는 이유는 무엇입니까?
- 클러스터 VM(다양한 Docker 컨테이너를 실행하는 CoreOS 기반 Kubernetes 클러스터)에서 THP를 비활성화할 때 발생할 수 있는 단점/위험은 무엇입니까?
답변1
THP는 애플리케이션 성능을 향상시키기 위해 일부 Linux 배포판에서 기본적으로 활성화되는 Linux 기능입니다. 그러나 일부 운영 체제 데이터베이스 공급업체에서는 제품 성능을 저하시키기 때문에 이를 권장하지 않습니다.
~에서Red-HAT 문서(THP가 활성화된 이유):
THP의 목표는 성능 향상이기 때문에 해당 개발자(커뮤니티 및 Red Hat)는 다양한 시스템, 구성, 애플리케이션 및 워크로드에서 THP를 테스트하고 최적화했습니다. 이를 통해 THP의 기본 설정이 대부분의 시스템 구성에서 성능을 향상시킬 수 있습니다. 그러나 데이터베이스 워크로드에는 THP가 권장되지 않습니다.
에서:오라클 문서(THP를 비활성화하는 이유는 무엇입니까?)
불행하게도 투명한 대용량 페이지는 Oracle 데이터베이스에서 제대로 작동하지 않으며 RAC 설치 시 노드 다시 시작 및 단일 인스턴스 및 RAC 설치 시 성능 문제와 관련이 있습니다. 따라서 Oracle은 Oracle 데이터베이스를 실행하는 모든 서버에서 투명 대용량 페이지를 비활성화할 것을 권장합니다.
클러스터링된 VM에서 THP를 비활성화하면 발생할 수 있는 단점/위험은 무엇입니까?
THP를 활성화하는 것은 다음을 방지하는 보안 기능입니다.mmap
홍수 공격.
mmap
그러나 이 기능을 활용하도록 애플리케이션을 더욱 최적화할 수 있습니다. 예를 들어 이전에는 malloc(4k)당 많은 수의 시스템 호출을 방지하도록 최적화되었습니다 . 현재로서는 사용자 공간 최적화가 필수는 아니며, khugepaged는 대용량 메모리를 처리하는 hugepage 인식 애플리케이션의 경우에도 이미 장기 페이지 할당을 처리할 수 있습니다.