При загрузке ядро корректирует настройки по умолчанию в pid_maxзависимости от количества доступных процессоров. Когда число низкое, выбирается обычный 32768. В противном случае вычисления выполняются следующим образом (здесь показано, что ядро 3.10 похоже на RHEL, но, за исключением некоторых вариантов, то же самое для любого недавнего ядра Linux):
include/linux/threads.h:
/ *
* Это контролирует максимальный pid по умолчанию, назначенный процессу
* /
#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;
и позже :
/ * увеличить значение по умолчанию и минимальное значение pid_max в зависимости от количества процессоров * /
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);
Таким образом, из OP это должно означать в общей сложности 458752/1024 = 448 одновременно доступных потоков: довольно много. Другая система, вероятно, имеет не так много процессоров / ядер / потоков и т. Д., Поэтому имеет более низкое значение по умолчанию pid_max.
kernel_pid_maxв своем,sysctl.confпотому что это должно бытьkernel.pid_max.