Каков максимальный предел количества процессов, доступных в системе Linux? Как мы можем его найти?
Максимальное количество процессов в Linux
Ответ 1
Ядро должно экспортировать эту информацию в procfs
:
cat /proc/sys/kernel/pid_max
Это максимальное количество уникальных идентификаторов процессов, которые может поддерживать ваша система.
Так как это файл, /proc/sys/kernel/pid_max
может быть проверен с любого способного языка программирования.
Ответ 2
sysctl kernel.pid_max
или
cat/proc/sys/kernel/pid_max
Как было предложено Ninefingers.
Для полноты вы можете временно изменить его, написав в /proc/syskernel/pid _max или навсегда, добавив:
kernel.pid_max = 4194303
в/etc/sysctl.conf. 4194303 - максимальный предел для x86_64 и 32767 для x86.
Ответ 3
Короткий ответ на ваш вопрос: количество процессов, возможных в системе linux, НЕОГРАНИЧЕННОЕ.
Но существует ограничение на количество процессов на пользователя (кроме root, у которого нет ограничений).
И вы можете проверить свои пользовательские ограничения с помощью команды ниже (apposite для "максимальных пользовательских процессов" ).
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 256447
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 128000
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 500000
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
Если вы хотите увеличить лимит на количество процессов для определенного пользователя (например, hadoop), вам нужно сделать ниже запись в /etc/security/limits.conf
hadoop - nproc 500000
Ответ 4
kernel.pid_max является ограничивающим фактором, но по крайней мере столь же важным является kernel.threads-max. Стоит отметить, что по умолчанию nproc ulimit для каждого пользователя имеет значение kernel.threads-max, разделенное на два, и что каждый поток учитывает ограничение пользователя nproc. Таким образом, "ps -u $USER" может показаться, что пользователь не исчерпал свой предел nproc, но "ps -L -u $USER" может рассказать совсем другую историю.