Отключите THP и дефрагментацию THP на экземпляре CentOS 7 EC2

Я хочу отключить transparent_hugepage (THP) на экземпляре CentOS 7 EC2, который включен по умолчанию:

# 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.local и cloud.cfg файлы, но это не работало.

Я также пытался добавить установку transparent_hugepage=never к строке ядра /etc/grub.conf (как объяснено там), но это не работало лучше.

Так..., как я могу отключить THP на CentOS 7, работающем на экземпляре AWS EC2?

править: измененный заголовок... Я должен отключить дефрагментация THP и THP

9
задан 4 May 2015 в 17:48
5 ответов

Решение находится в настроенном , как указал @ 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

Обратите внимание, что этот профиль наследуется от виртуального гостя , который был моим активным профилем, действительно выглядел подходящим для виртуализированного сервера (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]

Он сохранится после перезагрузки.

13
ответ дан 2 December 2019 в 22:27

Помимо настройки командной строки 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
2
ответ дан 2 December 2019 в 22:27

РЕДАКТИРОВАТЬ: ответ выше неверен , потому что прозрачные ручки огромных страниц отсутствуют в sysctl в настоящий момент. Извините за шум.


Вы можете поместить желаемые значения в /etc/sysctl.conf .

Из справочной страницы sysctl.conf (5):

SYSCTL.CONF(5)                                                                                 File Formats                                                                                 SYSCTL.CONF(5)

NAME
       sysctl.conf - sysctl preload/configuration file

DESCRIPTION
       sysctl.conf is a simple file containing sysctl values to be read in and set by sysctl.  The syntax is simply as follows:

              # comment
              ; comment

              token = value

       Note  that  blank  lines  are ignored, and whitespace before and after a token or value is ignored, although a value can contain whitespace within.  Lines which begin with a # or ; are considered
       comments and ignored.

EXAMPLE
              # sysctl.conf sample
              #
                kernel.domainname = example.com
              ; this one has a space which will be written to the sysctl!
                kernel.modprobe = /sbin/mod probe
-2
ответ дан 2 December 2019 в 22:27

Spróbuj także tego

nano / 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

1
ответ дан 2 December 2019 в 22:27

Вы можете отредактировать файл /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.

0
ответ дан 28 December 2019 в 15:47

Теги

Похожие вопросы