Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스에서 HugePages를 구성하고 싶습니다.
해결 방법
참고: HugePages를 프로덕션에 배포하기 전에 테스트 환경에서 HugePages를 구성하고 성능을 벤치마킹하는 것이 가장 좋습니다. x86_64 시스템에서 HugePage 크기는 2MB 또는 1GB에 불과할 수 있습니다. HugePages에 대한 자세한 내용은 Oracle 웹 사이트의 Configuring HugePages on Linux를 참조하십시오.
사전 요구 사항: 애플리케이션 또는 데이터베이스가 HugePages를 지원하는지 확인하려면 벤더에 문의하십시오. 또한 사용 가능한 메모리의 양을 확인하려면 다음 명령을 실행하여 EC2 인스턴스의 총 메모리를 확인하십시오.
free -m
Linux 인스턴스에서 HugePages를 구성하려면 다음 단계를 완료하십시오.
-
다음 명령을 실행하여 커널에 HugePages가 활성화되어 있지 않은지 확인합니다.
sudo cat /proc/sys/vm/nr_hugepages
명령 출력이 0이면 HugePages가 활성화되어 있지 않은 것입니다.
-
필요한 HugePages 수를 계산하려면 다음 공식을 사용하십시오.
HugePages 수 = 필요한 메모리/HugePages 크기
참고: 충분한 페이지를 만들 수 있도록 결과를 모으십시오.
-
다음 명령을 실행하여 HugePages를 활성화하고 커널 파라미터 값을 설정합니다.
sudo sysctl -w vm.nr_hugepages=2048
참고: 2048을 본인이 계산한 HugePages 수로 바꾸십시오.
출력 예시:
vm.nr_hugepages = 2048
-
재부팅 후 시스템이 HugePages를 할당하는지 확인하려면 /etc/sysctl.conf 파일에 다음 항목을 추가합니다.
sudo echo "vm.nr_hugepages=2048" >> /etc/sysctl.conf
참고: 2048을 본인이 계산한 HugePages 수로 바꾸십시오.
-
변경 사항을 확인하려면 다음 명령을 실행합니다.
sudo cat /etc/sysctl.conf
명령 출력에 vm.nr_hugepages 값이 있는지 확인합니다.
출력 예시:
# sudo cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
vm.zone_reclaim_mode=1
vm.nr_hugepages=2048
-
인스턴스를 재부팅합니다.
-
다음 명령을 다시 실행하여 HugePages 값 및 구성을 확인합니다.
sudo cat /proc/sys/vm/nr_hugepages
출력이 본인이 계산한 HugePages 수라면 HugePages가 활성화됩니다.
출력 예시:
# sudo cat /proc/sys/vm/nr_hugepages
2048
-
/proc/meminfo에서 사용 가능한 HugePages를 확인하려면 다음 명령을 실행하십시오.
sudo grep Huge /proc/meminfo
출력 예시:
# sudo grep Huge /proc/meminfo
HugePages_Total: 2048
HugePages_Free: 2048
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
각 HugePages 값의 정의는 kernel.org의 HugePages를 참조하십시오.
HugePages를 비활성화하려면 다음 단계를 완료하십시오.
-
다음 명령을 실행하여 nr_hugepages를 0으로 재설정합니다.
sudo sysctl -w vm.nr_hugepages=0
-
sysctl.conf에서 다음 항목을 제거합니다.
sudo echo "vm.nr_hugepages=2048" >> /etc/sysctl.conf
-
인스턴스를 재부팅합니다.