ในการบูตเคอร์เนลจะปรับค่าเริ่มต้น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 รายการ
และหลังจากนั้น:
#define PIDS_PER_CPU_DEFAULT 1024
ค่าเหล่านั้นจะถูกใช้ในkernel/pid.c
:
int pid_max = PID_MAX_DEFAULT;
และต่อมา :
/ * bump เริ่มต้นและ pid_max ขั้นต่ำขึ้นอยู่กับจำนวน cpus * /
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 เธรดพร้อมกัน: ค่อนข้างมาก ระบบอื่น ๆ ที่มีอาจจะไม่ได้เป็นซีพียูหลาย / แกน / หัวข้ออื่น ๆ pid_max
เพื่อให้มีการเริ่มต้นที่ต่ำกว่า
kernel_pid_max
ในของคุณเพราะมันควรจะเป็นsysctl.conf
kernel.pid_max