투명한 거대 페이지를 동적으로 비활성화할 수 있습니까?

투명한 거대 페이지를 동적으로 비활성화할 수 있습니까?

비활성화하기 위해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 값을 얻게 됩니다.

관련 정보