Transparent HugePages
내용
- HugePage 내용은 관련 문서 참고
- HugePage는 커널 파라미터를 지정해 필요할 때 마다 변경, 적용하거나 재부팅 등 관리 요소를 필요로 하였기에 자동으로 관리해주는 Transparent Huge Pages (THP) 가 도입
- 그러나 THP를 사용함으로서 오히려 더 성능 하락이나 충돌 등 여러 문제가 발생하는 경우가 많아짐에 따라 일부 어플리케이션에서는 THP를 사용하지 않도록 권장하고 있음
확인
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag
# 활성화가 되어 있는 경우는 always에 [] 표시가 나타남
#[always] madvise never
#[always] defer defer+madvise madvise never
# 비활성화가 되어 있는 경우는 never에 [] 표시가 나타남
#always madvise [never]
#always defer defer+madvise madvise [never]
비활성화 방법
- 서비스 생성 및 등록, 시작
vi /etc/systemd/system/disable-thp.service # 추가할 내용 [Unit] Description=Disable Transparent Huge Pages (THP) [Service] Type=simple ExecStart=/bin/sh -c "echo 'never' >/sys/kernel/mm/transparent_hugepage/enabled && echo 'never' >/sys/kernel/mm/transparent_hugepage/defrag" [Install] WantedBy=multi-user.target # 서비스 시작 systemctl daemon-reload systemctl start disable-thp systemctl enable disable-thp systemctl status disable-thp
- 커널 명령어 수정
vi /etc/default/grub # GRUB_CMDLINE_LINUX에 transparent_hugepage 파라미터 추가 GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.shell=0 selinux=1 security=selinux quiet transparent_hugepage=never" # 변경사항 적용 grub2-mkconfig -o /boot/grub2/grub.cfg