Na inicialização, o kernel ajusta o padrão, pid_maxdependendo do número de CPUs disponíveis. Quando o número é baixo, o 32768 usual é selecionado. Caso contrário, o cálculo é feito da seguinte maneira (mostrando aqui um kernel 3.10 para ser semelhante ao RHEL, mas, além de algumas variações, é o mesmo para qualquer kernel Linux recente):
include/linux/threads.h:
/ *
* Isso controla o pid máximo padrão alocado para um processo
* /
#define PID_MAX_DEFAULT (CONFIG_BASE_SMALL? 0x1000: 0x8000)
0x8000 = 32768 é o valor usual usado em sistemas com menos de 32 threads de CPU disponíveis.
e depois:
#define PIDS_PER_CPU_DEFAULT 1024
Esses valores são usados em kernel/pid.c:
int pid_max = PID_MAX_DEFAULT;
e depois :
/ * bump padrão e mínimo pid_max com base no 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: padrão:% u mínimo:% u \ n", pid_max, pid_max_min);
Portanto, no OP, isso significa um total de 458752/1024 = 448 threads simultâneos disponíveis: bastante. O outro sistema provavelmente não possui tantas CPUs / núcleos / threads, etc., portanto, possui um padrão mais baixo pid_max.
kernel_pid_maxno seusysctl.confporque deveria serkernel.pid_max.