CentOS 7 EC2 인스턴스에서 THP 및 THP 조각 모음 비활성화


9

CentOS 7 EC2 인스턴스에서 transparent_hugepage (THP)를 비활성화하고 싶습니다. 기본적으로 활성화되어 있습니다.

# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never

이 설정은 수동으로 변경할 수 있습니다.

# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# 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]

...하지만 재부팅 후 변경 사항이 손실됩니다.

나는 으려고 echo never [...]내에 명령 rc.localcloud.cfg파일, 그러나 그것은 작동하지 않았다.

또한 transparent_hugepage=never커널 라인에 설정을 추가하려고했지만 /etc/grub.conf( 거기에 설명 된 것처럼 ) 더 잘 작동하지 않았습니다.

그렇다면 ... AWS EC2 인스턴스에서 실행되는 CentOS 7에서 THP를 비활성화하려면 어떻게해야합니까?

편집 : 제목 변경 ... THP THP 조각 모음 을 비활성화해야합니다


관심을 끌기 위해 THP를 비활성화하려는 이유를 물을 수 있습니까?
Cameron Kerr


재부트 후 "투명 _hugepage = never /ne/grub.conf의 커널 줄에 추가하지 않고"grub 파일에서이 줄을 제거하면 instasnce가 작동하지 않습니다. 이를 위해 기존 인스턴스를 새 인스턴스에 연결하고 파티션에 폴더를 마운트 할 수 있습니다
Artem.Borysov

답변:


14

@ michael-hampton이 지적한대로 솔루션이 조정 되었습니다. 까다로운 부분은 vm 플러그인이 /sys/kernel/mm/transparent_hugepage/enabled설정 만 구성 할 수 있다는 것 입니다.

/sys/kernel/mm/transparent_hugepage/defrag설정도 비활성화하려면 시작시 프로필에 의해 호출되는 스크립트를 만들어야했습니다.

결국 완전한 솔루션은 다음과 같습니다.

1 단계 : 사용자 정의 프로파일을 보유 할 디렉토리를 작성하십시오.

mkdir /etc/tuned/custom

2 단계 : 프로파일 작성 /etc/tuned/custom/tuned.conf:

[main]
include=virtual-guest

[vm]
transparent_hugepages=never

[script]
script=script.sh

이 프로파일 은 내 활성 프로파일 인 virtual-guest 에서 상속 받았으며 실제로는 가상화 된 서버 (EC2)에 적합합니다. 명령을 사용하여 활성 프로파일을 볼 수 있습니다 tuned-adm active. 궁금한 점이 있으면 사전 정의 된 프로필의 내용을 확인하십시오./usr/lib/tuned/

3 단계 : 스크립트 작성 /etc/tuned/custom/script.sh:

#!/bin/sh

. /usr/lib/tuned/functions

start() {
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    return 0
}

stop() {
    return 0
}

process $@

그것을 실행 가능하게 만드십시오 :

sudo chmod 755 /etc/tuned/custom/script.sh

4 단계 : 새 프로필을 활성화합니다 :

tuned-adm profile custom

이제 당신은 얻을 것이다 :

# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]

재부팅 후에도 지속됩니다.


우리는 이것이 AWS Redhat 7.4 VM에서 작동한다는 것을 알았습니다. 감사!
Jon Sampson

2

grub 명령 줄을 설정하는 것 외에도 tuned를 구성해야합니다. 그러나 연결된 지침을 사용하지 않으면 오류가 너무 많아서 모든 것을 설명하는 데 반나절이 걸릴 것입니다.

커스텀 튜닝 프로파일 (이하 전화 custom)을 만든 다음 프로파일을 설정하십시오. virtual-guest가상 머신에서 실행중인 경우 (EC2는 물론) 또는 throughput-performance실제 머신에있는 경우 와 같은 기존 프로파일을 기반 으로합니다.

사용자 정의 프로파일을 보유 할 디렉토리를 작성하십시오.

mkdir /etc/tuned/custom

/etc/tuned/custom/tuned.conf예를 들어 다음과 같이 사용자 정의 프로파일을 작성하십시오 .

[main]
include=virtual-guest

[vm]
transparent_hugepages=never

이제 프로파일을 설정하십시오.

tuned-adm profile custom

그 지침은 오류로 가득 차 있습니까? 설명하는 데 반나절이 걸립니까? 그것이 내가 이해하려고하는 것입니다.
vcarel

그건 그렇고 당신의 대답을 이해하지 못합니다. 왜 grub을 구성 하고 tuned를 함께 사용해야합니까?
vcarel

1
이것은 커널 설정에서 기본적으로 설정되어 있기 때문에 하고 조정 된 구성에서 기본적으로에. 완전히 효과를 발휘하려면 둘 다 변경해야합니다.
Michael Hampton

1
조정 구성이 충분 해 보입니다 ... grub 구성을 변경할 필요가 없었습니다. BTW, THP 조각 모음을 비활성화하는 또 다른 조정 설정이 있습니까?
vcarel

@vcarel 투명한 hugepages가 이미 비활성화되어 있기 때문에 필요하지 않습니다!
Michael Hampton

1

또한 이것을 시도하십시오

나노 /etc/init.d/disable-transparent-hugepages

#!/bin/sh
### 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 huge pages
# Description:       Disable Linux transparent huge pages, 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' > ${thp_path}/enabled
    echo 'never' > ${thp_path}/defrag

    unset thp_path
    ;;
esac

sudo chmod 755 /etc/init.d/disable-transparent-hugepages

sudo chkconfig --add disable-transparent-hugepages 추가


0

/etc/rc.local 파일을 편집하고 해당 파일에 다음 명령을 추가 할 수 있습니다.

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

chmod +x /etc/rc.d/rc.local부팅하는 동안 스크립트가 실행되도록 합니다. Amazon Linux 2에서 테스트되었습니다.


-2

편집 : 투명 거대한 페이지 노브가 현재 sysctl에 없기 때문에 위의 대답이 잘못 되었습니다. 소음이 유감입니다.


에 원하는 값을 넣을 수 있습니다 /etc/sysctl.conf.

sysctl.conf (5) 매뉴얼 페이지에서 :

SYSCTL.CONF (5) 파일 형식 SYSCTL.CONF (5)

이름
       sysctl.conf-sysctl 사전로드 / 구성 파일

기술
       sysctl.conf는 sysctl에 의해 읽고 설정 될 sysctl 값을 포함하는 간단한 파일입니다. 구문은 다음과 같습니다.

              댓글
              ; 논평

              토큰 = 가치

       값에 공백이 포함될 수 있지만 빈 줄은 무시되고 토큰 또는 값 앞뒤의 공백은 무시됩니다. # 또는;으로 시작하는 줄 고려된다
       의견과 무시.

예
              # sysctl.conf 샘플
              #
                kernel.domainname = example.com
              ; 이 공간에는 sysctl에 쓸 공간이 있습니다!
                kernel.modprobe = / sbin / mod 프로브

1
sysctl을 사용하여 구성 할 수 없습니다.
Michael Hampton

왜? sysctl.conf를 사용하여 / sys / knowbs를 자주 조정하는 중입니다 ... 여기에 뭔가 빠졌습니까? 편집 : 상관 없어요, RHEL 설명서에서 찾았습니다. 저를 지적 해 주셔서 감사합니다;)
shodanshok
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.