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