Подтвердить что ты не робот

Максимальное количество процессов в Linux

Каков максимальный предел количества процессов, доступных в системе Linux? Как мы можем его найти?

4b9b3361

Ответ 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" может рассказать совсем другую историю.