今日、私のプロセスIDが400,000(例:449624)で非常に高いことを確認しました。私は走っていたときにps -ef | more
これを見つけました。これは正常ですか、それとも問題があることを示していますか?それ以外の場合、スクリプトは正常に実行されます。
私はRedhat 7.3 x64ビットを使用しています。
私が気づいたもう一つのことは、Redhat 7.2もあり、pidがそれほど高くなく、最新のOSでのみ可能であるということです。なぜですか?これはOSに関連していて正常であることを意味しますか?
kernel_pid_max
私のものにはそのようなものはありませんsysctl.conf
。私は猫を走り/proc/sys/kernel/pid_max
、それを得た458752
。
ベストアンサー1
起動時に、カーネルはpid_max
使用可能なCPUの数に基づいてデフォルト値を調整します。数値が小さい場合は、一般的な32768が選択されます。そうでない場合、計算は次のようになります(ここに示されている3.10カーネルはRHELに似ていますが、いくつかの変更を除けば最近のLinuxカーネルと同じです)。
/* *これはプロセスに割り当てられるデフォルトの最大PIDを制御します。 */ #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 = 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
。