Описание переменных sysctl

Материал из OpenBSD-Wiki
Перейти к навигации Перейти к поиску

Описание переменных sysctl

Данная статья 100 % копипаст с www.openbsd.ru

Значения некоторых параметров ядра, влияющих на работу его подсистем, можно изменять из контекста суперпользователя во время работы системы. Механизмом, реализующим доступ к переменным ядра в OpenBSD, является sysctl(3). Команда непосредственного управления — sysctl(8). Она способна как распечатывать текущие значения параметров, так и выставлять их.

Работа с sysctl(8)

Вывод на экран всех доступных переменных с их текущими значениями:

# sysctl -a

Чтобы узнать значение конкретной переменной:

# sysctl переменная

Для изменения значения переменной:

# sysctl переменная=значение 

Типы значений переменных sysctl могут быть числовыми и строковыми. Изменять значения требуемых переменных следует в файле /etc/sysctl.conf, чтение которого происходит при загрузке системы.

Лимиты на системные ресурсы

  • kern.maxfiles

Переменная kern.maxfiles определяет максимальное число дескрипторов файлов. Каждый открытый файл, сокет или буфер использует дескриптор файла. Нагруженному серверу может понадобиться много тысяч дескрипторов файлов, в зависимости от количества программ, одновременно выполняемых на сервере. Количество дескрипторов, используемых в данный момент, содержится в переменной kern.nfiles.

  • kern.maxvnodes

Максимальное число vnode, аллоцируемых для дисковых операций. Следует увеличить если kern.numvnodes превышает значение kern.maxvnodes в два раза. Поскольку система использует механизм повторного использования vnode, изменять это значение следует только в том случае, когда система испытывает нехватку ресурса (случается паника ядра и т. п.)

  • kern.maxproc

Максимально допустимое число одновременно запущенных процессов. Текущее количество запущенных процессов можно узнать через kern.nprocs.

Параметры стека TCP/IP и другие сетевые настройки

  • kern.maxclusters

Ограничивает количество доступных системе mbuf кластеров (буферов памяти, используемых сетевой подсистемой ядра). Посмотреть количество сетевых кластеров можно с помощью команды:

# netstat -m

Если пиковое значение близко к максимальному, его стоит увеличить.

  • net.inet.ip.ifq.maxlen

Параметр задает значение максимальной длины очереди пакетов, принятых из устройства и ожидающих обработки IP стеком. Имеет смысл увеличить значение (до ~1000) если значение net.inet.ip.ifq.drops увеличивается.

  • net.inet.ip.forwarding

Если необходимо выполнять перенаправление IPv4-пакетов между сетевыми интерфейсами, установите значение, равным 1. Применяйте только в том случае, когда система должна выступать в качестве маршрутизатора.

  • net.inet.ip.maxqueue

Устанавливает размер очереди, используемой для хранения фрагментированных IP пакетов. Количество отброшенных фрагментов отражается параметром «fragment floods» в выводе команды netstat -s -p ip.

  • net.inet.tcp.baddynamic

Список зарезервированных TCP портов. Порты с этими номерами не будут использованы ядром в качестве портов для исходящих соединений. Это может быть полезно, если используются непривилегированные процессы, прослушивающие определенные порты с номерами выше 1024. Для того, чтобы добавить номер порта в список, необходимо выполнить команду:

# sysctl net.inet.tcp.baddynamic=+52000

А чтобы удалить:

# sysctl net.inet.tcp.baddynamic=-52000 

Лимиты средств межпроцессного взаимодействия в стиле UNIX System V

Посмотреть информацию о используемых средствах System V IPC можно с помощью программы ipcs(1).

  • kern.shminfo

Иерархия переменных, относящихся к разделяемой памяти.

  • kern.shminfo.shmmax

Наибольший допустимый размер сегмента разделяемой памяти (в байтах).

  • kern.shminfo.shmmni

Максимальное количество сегментов разделяемой памяти для системы.

  • kern.shminfo.shmseg

Максимальное количество сегментов разделяемой памяти на процесс.

  • kern.shminfo.shmall

Общее количество разделяемой памяти, которое может быть использовано (в страницах оперативной памяти).

Настройки разделяемой памяти стоит изменять только в случае работы с прокси сервером Squid, который использует по одной области разделяемой памяти для каждой cachedir. Значение kern.shminfo.shmmni должно быть равно или больше значения cachedir, kern.shminfo.shmmax больше либо равно размеру cachedir и kern.shminfo.shmall должно быть не меньше kern.shminfo.shmmni, умноженной на kern.shminfo.shmmax.

  • kern.seminfo

Иерархия переменных, относящихся к семафорам.

  • kern.seminfo.semmni

Число идентификаторов семафоров в системе. Определяет максимальное число семафоров.

  • kern.seminfo.semmns

Число семафоров в системе. Каждый серверный процесс требует один семафор.

  • kern.seminfo.semmnu

Число undo-структур, которые используются для восстановления структур данных семафоров при фатальном завершении процесса.
Выставляется в максимальное число одновременных процессов в статусе runnable в системе.

  • kern.seminfo.semmsl

Максимальное число семафоров, разрешенное системой в пределах одного набора семафоров.