비활성화하기 위해THP
우리는 모든 635 머신에서 다음을 수행했습니다 RHEL
(우리는 rhel 7.5
해당 버전을 갖고 있었습니다).
이 줄은 우리가 모든 컴퓨터에서 실행하는 bash 스크립트에서 가져온 것입니다.
1 단계
[[ -f /sys/kernel/mm/transparent_hugepage/enabled ]] && echo never > /sys/kernel/mm/transparent_hugepage/enabled
[[ -f /sys/kernel/mm/transparent_hugepage/defrag ]] && echo never > /sys/kernel/mm/transparent_hugepage/defrag
확인하다:
cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
그러나 이 단계를 고려하지 않고 기계가 실행되는 것으로 알려져 있습니다.restarted/rebooted
2 단계
그래서 우리는 동일한 작업을 수행하여 다음 줄을 추가했습니다./etc/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
문제는 다음과 같습니다
step 1
위에서 언급했듯이 정말 즉각적인가요 disabled
?THP
참고 - 일반적인 기계의 추가 정보가 있습니다.
sysctl -a | grep hugepage
vm.hugepages_treat_as_movable = 0
vm.nr_hugepages = 0
vm.nr_hugepages_mempolicy = 0
vm.nr_overcommit_hugepages = 0
인용하다 -투명한 거대한 페이지 구성.
답변1
위에서 언급한 1단계에서 실제로 THP가 즉시 비활성화됩니까?
예, 당신이 하는 모든 일은 sysfs
즉시 완료됩니다. 커널 문서에 문서화되어 있습니다/transhuge.html
하지만, 인용https://access.redhat.com/solutions/46111
노트:위 명령을 실행하면 새 THP 생성 및 사용만 중지됩니다. 위 명령을 실행할 때 생성되고 사용된 THP는 일반 메모리 페이지로 분해되지 않습니다. THP를 완전히 제거하려면 시스템을 재부팅하고 부팅 시 THP를 비활성화해야 합니다.
하나 있다우편 엽서당신과 같은 문제입니다. 거기,ub3rst4r/etc/rc.local
모든 서비스가 시작된 후에 실행되기 때문에 이것이 그의 사용 사례에서는 작동하지 않는다고 설명합니다.
따라서 동일한 커널 문서에 언급된 공식 방식을 따르는 것이 좋습니다.transhuge.html
...transparent_hugepage=never 매개변수를 커널 명령줄에 전달하여 투명한 hugepage 지원을 위한 sysfs 시작 시간 기본값을 변경할 수 있습니다.
물론 /etc/default/grub
. 또한 재부팅 후 테스트를 권장합니다
grep AnonHugePages /proc/meminfo
AnonHugePages: 0 kB
올바르게 비활성화하면 0 값을 얻게 됩니다.