자체 관리 배포서버를 위한 THP(Transparent Hugepages) 비활성화
이 페이지의 내용
중요
MongoDB 8.0에서 업그레이드된 TCMalloc
MongoDB 8.0 부터 시작됩니다. MongoDB 는 Transparent Hugepages를 활성화하여 성능을 개선하는 업그레이드된 버전의 TCMalloc을 사용합니다. MongoDB 8.0 이상을 사용하는 경우 THP(Transparent Hugepages) 활성화를 참조하세요.
THP(Transparent Hugepages)는 TLB(Translation Lookaside Buffer) 조회의 오버헤드 를 줄이는 Linux 메모리 관리 시스템입니다. THP는 작은 페이지를 결합하여 애플리케이션 에 더 큰 메모리 페이지로 표시함으로써 이를 달성합니다.
실행 MongoDB 7.0 이하 버전을 Linux 하는 경우 최상의 성능을 위해 THP를 비활성화해야 합니다. 이전 버전의 MongoDB 에서는 비연속적인 메모리 액세스 패턴을 사용하는 경우가 많으므로 데이터베이스 워크로드는 THP를 활성화하면 성능이 저하되는 경우가 많습니다.
참고
시스템 수준에서 THP를 활성화 하고 프로세스 수준에서 비활성화할 수 있습니다. 단일 머신에 여러 MongoDB 프로세스가 있는 경우, 버전 8.0 의 프로세스는 THP를 활성화 하고 7.0 이전의 프로세스는 THP를 비활성화해야 합니다.
mongod
가 시작되기 전에 THP를 비활성화하려면 부팅 시 THP를 비활성화하는 운영 체제의 서비스 파일 을 만듭니다. 다음 지침에는 systemd 및 System V 초기화 시스템에 대한 예제가 모두 포함되어 있습니다.
또한 ktune
및 tuned
성능 프로필을 사용하는 RHEL 및 CentOS 시스템의 경우 사용자 지정 tuned
프로필도 만들어야 합니다.
서비스 파일 만들기
THP를 비활성화하는 서비스 파일 을 생성하려면 운영 체제 내장 초기화 시스템을 사용하세요. 최신 버전의 Linux 는 일반적으로 systemctl
명령을 사용하는 systemd 를 사용합니다. 이전 버전의 Linux 에서는 service
명령을 사용하는 System V init 를 사용합니다. 자세한 내용은 운영 체제 설명서를 참조하세요.
운영 체제에 맞는 초기화 시스템을 사용하세요.
단위 파일만들기 systemd
다음 파일을 생성하여 /etc/systemd/system/disable-transparent-huge-pages.service
에 저장하세요.
[Unit] Description=Disable Transparent Hugepages (THP) DefaultDependencies=no After=sysinit.target local-fs.target Before=mongod.service [Service] Type=oneshot ExecStart=/bin/sh -c 'echo never | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null && echo never | tee /sys/kernel/mm/transparent_hugepage/defrag > /dev/null' [Install] WantedBy=basic.target
참고
Red Hat Enterprise Linux의 일부 버전과 잠재적으로 다른 Red Hat 기반 파생 제품은 THP enabled
파일에 대해 다른 경로를 사용합니다.
/sys/kernel/mm/redhat_transparent_hugepage/enabled
시스템에서 어떤 경로가 사용 중인지 확인하고 이에 따라 disable-transparent-huge-pages.service
파일을 업데이트하세요.
서비스 시작
실행:
sudo systemctl start disable-transparent-huge-pages
관련 THP 설정이 변경되었는지 확인하려면 다음 명령을 실행합니다.
cat /sys/kernel/mm/transparent_hugepage/enabled && cat /sys/kernel/mm/transparent_hugepage/defrag
Red Hat Enterprise Linux 및 잠재적으로 다른 Red Hat 기반 파생 제품에서는 대신 다음을 사용해야 할 수 있습니다:
cat /sys/kernel/mm/redhat_transparent_hugepage/enabled && cat /sys/kernel/mm/redhat_transparent_hugepage/defrag
출력은 다음과 같아야 합니다.
never never
스크립트 만들기 init.d
다음 파일을 생성하여 /etc/init.d/disable-transparent-hugepages
에 저장하세요.
!/bin/bash ## BEGIN INIT INFO Provides: disable-transparent-hugepages Required-Start: $local_fs Required-Stop: X-Start-Before: mongod mongodb-mms-automation-agent Default-Start: 2 3 4 5 Default-Stop: 0 1 6 Short-Description: Disable Linux Transparent Hugepages Description: Disable Linux Transparent Hugepages, to improve database performance. ## END INIT INFO case $1 in start) if [ -d /sys/kernel/mm/transparent_hugepage ]; then thp_path=/sys/kernel/mm/transparent_hugepage elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then thp_path=/sys/kernel/mm/redhat_transparent_hugepage else return 0 fi echo 'never' | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null && echo 'never' | tee /sys/kernel/mm/transparent_hugepage/defrag > /dev/null unset thp_path ;; esac
스크립트 실행
실행:
sudo /etc/init.d/disable-transparent-hugepages start
관련 THP 설정이 변경되었는지 확인하려면 다음 명령을 실행합니다.
cat /sys/kernel/mm/transparent_hugepage/enabled && cat /sys/kernel/mm/transparent_hugepage/defrag
Red Hat Enterprise Linux 및 잠재적으로 다른 Red Hat 기반 파생 제품에서는 대신 다음을 사용해야 할 수 있습니다:
cat /sys/kernel/mm/redhat_transparent_hugepage/enabled && cat /sys/kernel/mm/redhat_transparent_hugepage/defrag
출력은 다음과 같아야 합니다.
never never
및 사용 tuned
ktune
중요
tuned
또는 ktune
을 사용하는 경우 서비스 파일 을 만든 후 이 섹션의 단계를 수행합니다.
tuned
및 ktune
은 시스템의 Transparent Hugepages 설정에 영향을 줄 수 있는 커널 조정 유틸리티입니다. mongod
를 실행 하는 동안 RHEL 또는 CentOS 시스템에서 tuned
또는 ktune
를 사용하는 경우 사용자 지정 tuned
프로필을 생성하여 THP가 비활성화된 상태로 유지되도록 해야 합니다.