
Оригинальная статья -- http://openbsd.ru/docs/howto-sysctl.html
Значения некоторых параметров ядра, влияющих на работу его подсистем, можно изменять из контекста суперпользователя во время работы системы. Механизмом, реализующим доступ к переменным ядра в 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
Максимальное число семафоров, разрешенное системой в пределах одного набора семафоров.