ブート時に、カーネルpid_max
は使用可能なCPUの数に応じてデフォルトを調整します。数が少ない場合、通常の32768が選択されます。それ以外の場合、計算は次のように実行されます(ここでは3.10カーネルがRHELに似ていることを示していますが、いくつかのバリエーションは最近のLinuxカーネルでも同じです)。
include/linux/threads.h
:
/ *
*これは、プロセスに割り当てられるデフォルトの最大pidを制御します
* /
#define PID_MAX_DEFAULT(CONFIG_BASE_SMALL?0x1000:0x8000)
0x8000 = 32768は、32 CPUスレッド未満のシステムで使用される通常の値です。
以降:
#define PIDS_PER_CPU_DEFAULT 1024
これらの値は次で使用されkernel/pid.c
ます。
int pid_max = PID_MAX_DEFAULT;
そして、後:
/ * cpusの数に基づいてデフォルトおよび最小pid_maxをバンプ* /
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:デフォルト:%u最小:%u \ n"、pid_max、pid_max_min);
したがって、OPからこれは、合計458752/1024 = 448の同時スレッドが使用可能であることを意味するはずです。もう一方のシステムには、おそらくそれほど多くのCPU /コア/スレッドなどがないため、デフォルト値が低くなりますpid_max
。
kernel_pid_max
あなたにsysctl.conf
それがあるべきためkernel.pid_max
。