Beim Booten passt der Kernel den Standard pid_max
abhängig von der Anzahl der verfügbaren CPUs an. Wenn die Zahl niedrig ist, wird das übliche 32768 ausgewählt. Andernfalls wird die Berechnung wie folgt durchgeführt (hier wird ein 3.10-Kernel gezeigt, der RHEL ähnelt, aber abgesehen von einigen Variationen ist er für jeden neueren Linux-Kernel gleich):
include/linux/threads.h
:
/ *
* Dies steuert die Standard-Maximal-PID, die einem Prozess zugewiesen ist
* /
#define PID_MAX_DEFAULT (CONFIG_BASE_SMALL? 0x1000: 0x8000)
0x8000 = 32768 ist der übliche Wert, der auf Systemen mit weniger als 32 verfügbaren CPU-Threads verwendet wird.
und später:
#define PIDS_PER_CPU_DEFAULT 1024
Diese Werte werden dann verwendet in kernel/pid.c
:
int pid_max = PID_MAX_DEFAULT;
und später :
/ * Bump Default und Minimum pid_max basierend auf der Anzahl der CPU * /
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: default:% u minimum:% u \ n", pid_max, pid_max_min);
Ab OP sollten also insgesamt 458752/1024 = 448 gleichzeitige Threads verfügbar sein: ziemlich viel. Das andere System hat wahrscheinlich nicht so viele CPUs / Kerne / Threads usw., hat also einen niedrigeren Standard pid_max
.
kernel_pid_max
in Ihrem,sysctl.conf
weil es sein solltekernel.pid_max
.