THP를 비활성화하면 어떤 단점이 있습니까? 많은 배포판에서 기본적으로 활성화되어 있는 이유는 무엇입니까?

THP를 비활성화하면 어떤 단점이 있습니까? 많은 배포판에서 기본적으로 활성화되어 있는 이유는 무엇입니까?

저희 팀과 저는 최근 가상 머신에서 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 인식 애플리케이션의 경우에도 이미 장기 페이지 할당을 처리할 수 있습니다.

관련 정보