Описание переменных sysctl: различия между версиями

Материал из OpenBSD-Wiki
Перейти к навигации Перейти к поиску
Строка 1: Строка 1:
 
 
== Описание переменных sysctl ==
 
== Описание переменных sysctl ==
  
Данная статья 100% копипаст с [http://www.openbsd.ru www.openbsd.ru]
+
Данная статья 100 % копипаст с [http://www.openbsd.ru www.openbsd.ru]
  
Значения некоторых параметров ядра, влияющих на работу его подсистем, можно изменять из контекста суперпользователя во время работы системы. Механизмом, реализующим доступ к переменным ядра в OpenBSD, является [http://www.openbsd.org/cgi-bin/man.cgi?query=sysctl&apropos=0&sektion=3&manpath=OpenBSD+Current&arch=i386 sysctl(3)]. Команда непосредственного управления - [http://www.openbsd.org/cgi-bin/man.cgi?query=sysctl&apropos=0&sektion=8&manpath=OpenBSD+Current&arch=i386&format=html sysctl(8)]. Она способна как распечатывать текущие значения параметров, так и выставлять их.
+
Значения некоторых параметров ядра, влияющих на работу его подсистем, можно изменять из контекста суперпользователя во время работы системы. Механизмом, реализующим доступ к переменным ядра в OpenBSD, является [http://www.openbsd.org/cgi-bin/man.cgi?query=sysctl&apropos=0&sektion=3&manpath=OpenBSD+Current&arch=i386 sysctl(3)]. Команда непосредственного управления — [http://www.openbsd.org/cgi-bin/man.cgi?query=sysctl&apropos=0&sektion=8&manpath=OpenBSD+Current&arch=i386&format=html sysctl(8)]. Она способна как распечатывать текущие значения параметров, так и выставлять их.
  
 
== Работа с sysctl(8) ==
 
== Работа с sysctl(8) ==
Строка 21: Строка 20:
 
== Лимиты на системные ресурсы ==
 
== Лимиты на системные ресурсы ==
  
*kern.maxfiles
+
* kern.maxfiles
  
 
Переменная kern.maxfiles определяет максимальное число дескрипторов файлов. Каждый открытый файл, сокет или буфер использует дескриптор файла. Нагруженному серверу может понадобиться много тысяч дескрипторов файлов, в зависимости от количества программ, одновременно выполняемых на сервере. Количество дескрипторов, используемых в данный момент, содержится в переменной kern.nfiles.
 
Переменная kern.maxfiles определяет максимальное число дескрипторов файлов. Каждый открытый файл, сокет или буфер использует дескриптор файла. Нагруженному серверу может понадобиться много тысяч дескрипторов файлов, в зависимости от количества программ, одновременно выполняемых на сервере. Количество дескрипторов, используемых в данный момент, содержится в переменной kern.nfiles.
  
*kern.maxvnodes
+
* kern.maxvnodes
  
Максимальное число vnode, аллоцируемых для дисковых операций. Следует увеличить если kern.numvnodes превышает значение kern.maxvnodes в два раза. Поскольку система использует механизм повторного использования vnode, изменять это значение следует только в том случае, когда система испытывает нехватку ресурса (случается паника ядра и т.п.)
+
Максимальное число vnode, аллоцируемых для дисковых операций. Следует увеличить если kern.numvnodes превышает значение kern.maxvnodes в два раза. Поскольку система использует механизм повторного использования vnode, изменять это значение следует только в том случае, когда система испытывает нехватку ресурса (случается паника ядра и т. п.)
 
   
 
   
*kern.maxproc
+
* kern.maxproc
  
Максимально допустимое число одновременно запущенных процессов. Текущее количество запущенных процессов можно узнать через kern.nprocs.  
+
Максимально допустимое число одновременно запущенных процессов. Текущее количество запущенных процессов можно узнать через kern.nprocs.
  
 
== Параметры стека TCP/IP и другие сетевые настройки ==
 
== Параметры стека TCP/IP и другие сетевые настройки ==
  
*kern.maxclusters
+
* kern.maxclusters
  
 
Ограничивает количество доступных системе mbuf кластеров (буферов памяти, используемых сетевой подсистемой ядра). Посмотреть количество сетевых кластеров можно с помощью команды:
 
Ограничивает количество доступных системе mbuf кластеров (буферов памяти, используемых сетевой подсистемой ядра). Посмотреть количество сетевых кластеров можно с помощью команды:
Строка 43: Строка 42:
 
Если пиковое значение близко к максимальному, его стоит увеличить.
 
Если пиковое значение близко к максимальному, его стоит увеличить.
  
*net.inet.ip.ifq.maxlen
+
* net.inet.ip.ifq.maxlen
  
 
Параметр задает значение максимальной длины очереди пакетов, принятых из устройства и ожидающих обработки IP стеком. Имеет смысл увеличить значение (до ~1000) если значение net.inet.ip.ifq.drops увеличивается.
 
Параметр задает значение максимальной длины очереди пакетов, принятых из устройства и ожидающих обработки IP стеком. Имеет смысл увеличить значение (до ~1000) если значение net.inet.ip.ifq.drops увеличивается.
  
*net.inet.ip.forwarding
+
* net.inet.ip.forwarding
  
 
Если необходимо выполнять перенаправление IPv4-пакетов между сетевыми интерфейсами, установите значение, равным 1. Применяйте только в том случае, когда система должна выступать в качестве маршрутизатора.
 
Если необходимо выполнять перенаправление IPv4-пакетов между сетевыми интерфейсами, установите значение, равным 1. Применяйте только в том случае, когда система должна выступать в качестве маршрутизатора.
  
*net.inet.ip.maxqueue
+
* net.inet.ip.maxqueue
  
Устанавливает размер очереди, используемой для хранения фрагментированных IP пакетов. Количество отброшенных фрагментов отражается параметром "fragment floods" в выводе команды netstat -s -p ip.
+
Устанавливает размер очереди, используемой для хранения фрагментированных IP пакетов. Количество отброшенных фрагментов отражается параметром «fragment floods» в выводе команды netstat -s -p ip.
  
*net.inet.tcp.baddynamic
+
* net.inet.tcp.baddynamic
  
 
Список зарезервированных TCP портов. Порты с этими номерами не будут использованы ядром в качестве портов для исходящих соединений. Это может быть полезно, если используются непривилегированные процессы, прослушивающие определенные порты с номерами выше 1024. Для того, чтобы добавить номер порта в список, необходимо выполнить команду:
 
Список зарезервированных TCP портов. Порты с этими номерами не будут использованы ядром в качестве портов для исходящих соединений. Это может быть полезно, если используются непривилегированные процессы, прослушивающие определенные порты с номерами выше 1024. Для того, чтобы добавить номер порта в список, необходимо выполнить команду:
Строка 69: Строка 68:
 
Посмотреть информацию о используемых средствах System V IPC можно с помощью программы ipcs(1).
 
Посмотреть информацию о используемых средствах System V IPC можно с помощью программы ipcs(1).
  
*kern.shminfo
+
* kern.shminfo
  
 
Иерархия переменных, относящихся к разделяемой памяти.
 
Иерархия переменных, относящихся к разделяемой памяти.
Строка 86: Строка 85:
 
*: kern.shminfo.shmall
 
*: kern.shminfo.shmall
  
Общее количество разделяемой памяти, которое может быть использовано (в страницах оперативной памяти).  
+
Общее количество разделяемой памяти, которое может быть использовано (в страницах оперативной памяти).
  
 
Настройки разделяемой памяти стоит изменять только в случае работы с прокси сервером Squid, который использует по одной области разделяемой памяти для каждой cachedir. Значение ''kern.shminfo.shmmni'' должно быть равно или больше значения cachedir, ''kern.shminfo.shmmax'' больше либо равно размеру cachedir и ''kern.shminfo.shmall'' должно быть не меньше ''kern.shminfo.shmmni'', умноженной на ''kern.shminfo.shmmax''.
 
Настройки разделяемой памяти стоит изменять только в случае работы с прокси сервером Squid, который использует по одной области разделяемой памяти для каждой cachedir. Значение ''kern.shminfo.shmmni'' должно быть равно или больше значения cachedir, ''kern.shminfo.shmmax'' больше либо равно размеру cachedir и ''kern.shminfo.shmall'' должно быть не меньше ''kern.shminfo.shmmni'', умноженной на ''kern.shminfo.shmmax''.
  
*kern.seminfo
+
* kern.seminfo
  
 
Иерархия переменных, относящихся к семафорам.
 
Иерархия переменных, относящихся к семафорам.

Версия 07:02, 26 мая 2013

Описание переменных 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

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