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


Работа с sysctl(8)
Лимиты на системные ресурсы
Параметры стека TCP/IP и другие сетевые настройки
Лимиты средств межпроцессного взаимодействия в стиле UNIX System V

Значения некоторых параметров ядра, влияющих на работу его подсистем, можно изменять из контекста суперпользователя во время работы системы. Механизмом, реализующим доступ к переменным ядра в 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(9) (структуры и функции mbuf обеспечивают управление буферами памяти, используемыми сетевой подсистемой ядра), доступных системе. Каждый кластер представлен 2 Kb памяти. Посмотреть количество сетевых кластеров можно с помощью команды:

# netstat -m

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

Параметр задает значение максимальной длины очереди из пакетов, принятых из устройства. Имеет смысл увеличить значение до 500-1000.
net.inet.ip.forwarding

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

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

На размер буфера приема и передачи TCP напрямую влияет параметр размера окна TCP. Увеличенный размер окна позволит более эффективно передавать данные, особенно при интенсивной передаче, такой как FTP и HTTP. Для нагруженных серверов значение по умолчанию не является оптимальным и может быть увеличено до 32768 байт. Если вам необходим буфер больше, чем 65535 байт, перед внесением изменений обратитесь к RFC1323 и RFC2018.
Внимание! Изменение этого параметра может привести к изменению результатов анализа OS fingerprint'а такими утилитами как pf(4), tcpdump(8), p0f и т.д.
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

Обновлено: 13.03.2015