Під час завантаження ядро регулює за замовчуванням pid_max
залежно від кількості доступних процесорів. Коли кількість низька, вибирається звичайне 32768. В іншому випадку обчислення робиться наступним чином (показуючи тут ядро 3,10, схоже на RHEL, але, крім деяких варіантів, це те саме для будь-якого недавнього ядра Linux):
include/linux/threads.h
:
/ *
* Це контролює максимальний під за замовчуванням, призначений для процесу
* /
#define PID_MAX_DEFAULT (CONFIG_BASE_SMALL? 0x1000: 0x8000)
0x8000 = 32768 - це звичайне значення, яке використовується в системах, що мають менше 32 процесорних потоків.
і пізніше:
#define PIDS_PER_CPU_DEFAULT 1024
Ці значення потім використовуються в kernel/pid.c
:
int pid_max = PID_MAX_DEFAULT;
і пізніше :
/ * bump за замовчуванням та мінімальний pid_max залежно від кількості cpus * /
pid_max = min (pid_max_max, max_t (int, pid_max,
PIDS_PER_CPU_DEFAULT * num_possible_cpus ()));
pid_max_min = max_t (int, pid_max_min,
PIDS_PER_CPU_MIN * num_possible_cpus ());
pr_info ("pid_max: за замовчуванням:% u мінімум:% u \ n", pid_max, pid_max_min);
Отже, з ОП це повинно означати загальну кількість 458752/1024 = 448 одночасних потоків: досить багато. Інша система, мабуть, має не так багато процесорів / ядер / потоків тощо, тому за замовчуванням є нижчий pid_max
.
kernel_pid_max
своїх,sysctl.conf
тому що це має бутиkernel.pid_max
.