En el arranque, el núcleo ajusta el valor predeterminado pid_max
según la cantidad de CPU disponibles. Cuando el número es bajo, se selecciona el 32768 habitual. De lo contrario, el cálculo se realiza de la siguiente manera (mostrando aquí que un kernel 3.10 es similar a RHEL, pero además de algunas variaciones es el mismo para cualquier kernel de Linux reciente):
include/linux/threads.h
:
/ *
* Esto controla el pid máximo predeterminado asignado a un proceso
* /
#define PID_MAX_DEFAULT (CONFIG_BASE_SMALL? 0x1000: 0x8000)
0x8000 = 32768 es el valor habitual utilizado en sistemas con menos de 32 subprocesos de CPU disponibles.
y después:
#define PIDS_PER_CPU_DEFAULT 1024
Esos valores luego se usan en kernel/pid.c
:
int pid_max = PID_MAX_DEFAULT;
y más adelante :
/ * valor predeterminado y mínimo pid_max basado en el número de 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: predeterminado:% u mínimo:% u \ n", pid_max, pid_max_min);
Entonces, desde OP esto debería significar un total de 458752/1024 = 448 hilos simultáneos disponibles: bastante. El otro sistema probablemente no tiene tantas CPU / núcleos / hilos, etc., por lo que tiene un valor predeterminado más bajo pid_max
.
kernel_pid_max
en tusysctl.conf
porque debería serkernel.pid_max
.