부팅시 커널 pid_max
은 사용 가능한 CPU 수에 따라 기본값을 조정합니다 . 숫자가 낮 으면 일반적인 32768이 선택됩니다. 그렇지 않으면 계산은 다음과 같이 수행됩니다 (여기서는 3.10 커널이 RHEL과 유사하지만 일부 변형 외에도 최근 Linux 커널과 동일 함).
include/linux/threads.h
:
/ *
* 이것은 프로세스에 할당 된 기본 최대 pid를 제어합니다
* /
#define PID_MAX_DEFAULT (CONFIG_BASE_SMALL? 0x1000 : 0x8000)
0x8000 = 32768은 사용 가능한 CPU 수가 32 개 미만인 시스템에서 일반적으로 사용되는 값입니다.
그리고 나중에 :
#PIDS_PER_CPU_DEFAULT 1024 정의
이러한 값은 다음에 사용됩니다 kernel/pid.c
.
int pid_max = PID_MAX_DEFAULT;
그리고 나중에 :
/ * CPU 수에 따른 범프 기본 및 최소 pid_max * /
pid_max = 최소 (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 동시 스레드를 사용할 수 있음을 의미해야합니다. 다른 시스템에는 CPU / 코어 / 스레드 수가 많지 않으므로 기본값이 더 낮습니다 pid_max
.
kernel_pid_max
귀하 는 가지고 있지 않습니다 .sysctl.conf
kernel.pid_max