Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

5.4. Параметры производительности в /proc

В этой секции рассматриваются параметры, помогающие определить размер памяти и файловой системы, и риски, связанные с их использованием.
Чтобы временно изменить параметр, сохраните его новое значение в proc. Например, чтобы присвоить overcommit_memory значение 1, выполните:
# echo 1 > /proc/sys/vm/overcommit_memory
Путь зависит от изменяемого параметра.
Команда sysctl переопределяет параметры с сохранением результатов. За дальнейшей информацией обратитесь к руководству по развертыванию по адресу http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/.

Параметры памяти

Перечисленные параметры определены в /proc/sys/vm/.
overcommit_memory
Определяет условия разрешения и отказа запросов больших объемов памяти. Возможные значения:
  • 0 (по умолчанию) — ядро использует эвристический алгоритм для расчета перерасхода памяти, принимая во внимание объем доступной памяти и число неверных запросов. Но поскольку выделение памяти осуществляется на основе эвристического, а не точного алгоритма, это может привести к превышению допустимой нагрузки на память.
  • 1 — ядро не обрабатывает перерасход памяти. При этом вероятность превышения нагрузки на память возрастает, но в то же время увеличивается производительность задач, активно использующих память.
  • 2 — отказ обработки запросов, запрашивающих память, размер которой превышает суммарный размер памяти пространства подкачки и ОЗУ в соответствии с overcommit_ratio.

    Примечание

    Этот параметр должен использоваться в только в тех системах, где размер пространства подкачки превышает общий размер физической памяти.
overcommit_ratio
Если overcommit_memory равен 2, определяет процентную часть физической памяти (см. описание overcommit_memory). По умолчанию равен 50.
max_map_count
Максимальное число регионов памяти, доступных процессу. По умолчанию равно 65530.
nr_hugepages
Число страниц большого размера. По умолчанию равно 0. Выделение больших страниц возможно только при наличии достаточного числа следующих друг за другом свободных страниц. Зарезервированные этим параметром страницы не могут использоваться для других целей. За дальнейшей информацией обратитесь к документации в /usr/share/doc/kernel-doc-версия_ядра/Documentation/vm/hugetlbpage.txt

Параметры ядра

Перечисленные параметры определены в /proc/sys/kernel/.
msgmax
Максимальный размер сообщения в очереди (в байтах). По умолчанию равен 65536. Это значение не может превышает msgmnb.
msgmnb
Максимальный размер очереди сообщений (в байтах). По умолчанию равен 65536.
msgmni
Максимальное число идентификаторов очередей сообщений (число очередей). Для 64-разрядной архитектуры по умолчанию равно 1985, а для 32-разрядной — 1736.
shmall
Размер общей памяти (в байтах), которая может быть использоваться в заданный момент. Для 64-разрядной архитектуры по умолчанию равен 4294967296, а для 32-разрядной — 268435456.
shmmax
Максимальный размер сегмента общей памяти (в байтах). Для 64-разрядной архитектуры по умолчанию равен 68719476736, а для 32-разрядной — 4294967295.
shmmni
Максимальное число совместно используемых сегментов памяти. По умолчанию равно 4096.
threads-max
Максимальное число одновременно выполняемых потоков. По умолчанию эквивалентно max_threads. Формула расчета:
max_threads = mempages / (8 * РАЗМЕР_ПОТОКА / РАЗМЕР_СТРАНИЦЫ )
Минимальное значение threads-max равно 20.

Параметры файловой системы

Перечисленные параметры определены в /proc/sys/fs/.
aio-max-nr
Максимальное число событий в асинхронных контекстах ввода-вывода. По умолчанию равно 65536. При изменении этого значения размеры структур данных ядра не изменяются автоматически.
file-max
Возвращает максимальное число дескрипторов файлов в ядре. По умолчанию эквивалентно files_stat.max_files, в качестве значения которого выбирается большее из двух — (mempages * (РАЗМЕР_СТРАНИЦЫ / 1024)) / 10 или NR_FILE (8192 в Red Hat Enterprise Linux). Увеличение этого значения может уменьшить вероятность ошибок, связанных с нехваткой дескрипторов файлов.

Параметры обработки нехватки памяти

Выделение всей доступной памяти, включая пространство подкачки, может привести к панике ядра. Это можно предотвратить, присвоив параметру /proc/sys/vm/panic_on_oom значение 0, что вызовет функцию oom_killer при нехватке памяти, которая остановит несанкционированные процессы.
Ниже приведен параметр, который может быть задан для отдельных процессов, обеспечивая тем самым тонкий контроль над тем, какие процессы oom_killer будет останавливать. Он размещается в /proc/PID/ (PID — идентификатор процесса).
oom_adj
Значение в диапазоне от -16 до 15 определяет oom_score процесса. Чем больше oom_score, тем больше вероятность того, что oom_killer остановит процесс. Значение -17 отключает oom_killer для процесса.

Важно

Дочерние процессы наследуют oom_score родительского процесса. Так, например, если sshd не использует oom_killer, то процессы, запущенные в рамках его сеанса, также не будут использовать. Это может иметь отрицательный эффект, так как oom_killer не сможет освободить память таких процессов.