Параметры ядра не изменяются навсегда для RHEL7.

Вопрос или проблема

Пытаясь постоянно изменить некоторые параметры ядра vm, я создал файл конфигурации /etc/sysctl.d/01-custom.conf, как описано в статье базы знаний Red Hat. Вот его содержимое:

# cat /etc/sysctl.d/01-custom.conf
vm.swappiness=10
vm.dirty_ratio=20
vm.vfs_cache_pressure=200

Однако после перезагрузки только vm.vfs_cache_pressure изменился, а swappiness и dirty_ratio имеют предыдущие значения.

# sysctl vm.swappiness
vm.swappiness = 30
# sysctl vm.dirty_ratio
vm.dirty_ratio = 30

В файле /etc/sysctl.conf никаких изменений для параметра vm.dirty_ratio нет, а vm.swappiness также установлен на 10. Значит ли это, что система берет эти значения откуда-то еще? В каталоге /etc/sysctl.d нет других конфигурационных файлов, кроме моего, и ссылки на /etc/sysctl.conf:

# ll /etc/sysctl.d/
total 4
-rw-r--r--  1 root root 147 May 30 04:40 01-custom.conf
lrwxrwxrwx. 1 root root  14 Apr  3 15:00 99-sysctl.conf -> ../sysctl.conf

Обновление:
sysctl --system показывает, что значения из моей конфигурации были приняты. Ничего для vm.swappiness и vm.dirty_ratio установлено на 30.

Если вы запускаете tuned, он будет иметь преимущество над sysctl: Параметры sysctl.conf могут быть переопределены Tuned

Проверьте, запущен ли tuned:

systemctl status tuned

Если он запущен, проверьте, какой профиль активен:

tuned-adm active

Профили Tuned можно найти в /usr/lib/tuned/:

# grep -ri '^vm.swappiness' /usr/lib/tuned/
/usr/lib/tuned/latency-performance/tuned.conf:vm.swappiness=10
/usr/lib/tuned/throughput-performance/tuned.conf:vm.swappiness=10
/usr/lib/tuned/virtual-guest/tuned.conf:vm.swappiness = 30

В стандартном файле /etc/sysctl.conf на сервере CentOS 7 есть комментарий:

# Параметры sysctl определяются через файлы в

# /usr/lib/sysctl.d/, /run/sysctl.d/, и /etc/sysctl.d/.

#

# Настройки поставщиков находятся в /usr/lib/sysctl.d/.

# Чтобы переопределить целый файл, создайте новый файл с таким же именем

# в /etc/sysctl.d/ и поместите новые настройки туда. Чтобы переопределить

# только конкретные настройки, добавьте файл с лексически более поздним

# именем в /etc/sysctl.d/ и поместите новые настройки туда.

Вы можете искать эти каталоги для конкретных настроек.

Ответ или решение

При попытке постоянного изменения параметров ядра в RHEL7, многие администраторы сталкиваются с проблемой, когда выставленные значения не сохраняются после перезагрузки системы. В данном случае, было создано конфигурационное файл /etc/sysctl.d/01-custom.conf, содержащий настройки для некоторых параметров управления памятью. Однако, несмотря на это, после перезагрузки системы значения vm.swappiness и vm.dirty_ratio остались прежними. В данном ответе будет рассмотрено, как выявить причины данной проблемы и что можно сделать для их устранения.

Основные параметры

Вот содержимое созданного конфигурационного файла:

# cat /etc/sysctl.d/01-custom.conf
vm.swappiness=10
vm.dirty_ratio=20
vm.vfs_cache_pressure=200

После перезагрузки система не применяет значения для параметров vm.swappiness (30 вместо 10) и vm.dirty_ratio (30 вместо 20). Данный факт указывает на возможность наличия других конфигураций, которые переопределяют эти значения.

Проверка других конфигураций

Первым шагом является проверка системы на наличие других файлов конфигурации, которые могут переопределять ваши значения. В стандартной конфигурации Flux 2 (CentOS/RHEL 7) параметры ядра идут из нескольких мест:

  1. /usr/lib/sysctl.d/
  2. /run/sysctl.d/
  3. /etc/sysctl.d/

В этих директориях могут находиться файлы с настройками от поставщиков или системные настройки, которые могут переопределять ваши значения. Вы можете просмотреть файлы иgrep для параметров swappiness и dirty_ratio:

grep -r 'vm.swappiness' /usr/lib/sysctl.d/ /etc/sysctl.d/
grep -r 'vm.dirty_ratio' /usr/lib/sysctl.d/ /etc/sysctl.d/

Влияние Tuned

Также возможно, что запущенный сервис tuned может влиять на значения параметров sysctl. Tuned – это инструмент для динамической настройки параметров системы в соответствии с профилем производительности. Чтобы проверить, активно ли управление Tuned, выполните следующую команду:

systemctl status tuned

Если сервис запущен, то посмотрите, какой профиль в данный момент активен:

tuned-adm active

При активном Tuned, вы можете проверить, какие значения параметров swappiness и dirty_ratio указаны в текущем профиле. Например, просмотрев файлы конфигурации в /usr/lib/tuned/, можно найти строки, которые определяют параметры управления памятью.

Изменение параметров Tuned

Если Tuned действительно переопределяет ваши настройки, у вас есть несколько вариантов:

  1. Изменить активный профиль Tuned на более подходящий:

    tuned-adm profile throughput-performance
  2. Создать собственный профиль Tuned и указать в нём необходимые параметры.

  3. Отключить Tuned, если он вам не нужен:

    systemctl stop tuned
    systemctl disable tuned

Заключение

В третьем шаге вы также можете редактировать файл /etc/sysctl.conf, если хотите, чтобы ваши параметры находились в одном месте. Важно помнить, что при изменении конфигурации параметров ядра через Tuned, следует анализировать, как это повлияет на производительность системы или приложений. Понимание взаимодействия между разными конфигурациями и способами их применения поможет вам обеспечить стабильность и производительность вашего серверного окружения.

Правильное определение и конфигурирование параметров системы позволяет оптимизировать её работу и избежать нежелательных проблем после перезагрузки.

Оцените материал
Добавить комментарий

Капча загружается...