2つのLinuxシステムを確認しましたが、どちらも64ビットですが、PID_MAXは異なります。
システムへ
cat /proc/sys/kernel/pid_max
32768
別の側面では、
cat /proc/sys/kernel/pid_max 65536
手順マニュアルページから。
proc/sys/kernel/pid_max このファイル (Linux 2.5 の新機能) は PID ラップ値を指定します (つまり、このファイルの値は最大 PID より 1 大きい)。このファイルのデフォルト値である32768は、以前のカーネルと同じPID範囲を生成します。 32ビットプラットフォームでは、32768はpid_maxの最大値です。 64ビットシステムでは、pid_maxは最大2^22(PID_MAX_LIMIT、約400万)の値に設定できます。
どちらのシステムも同じLinuxカーネルを持っています。
今私の質問はpid_maxが変わる要因ですか?よろしくお願いします。
答え1
私が正確に覚えている場合、デフォルト値は最大潜在的なCPU数(rhel)に基づいて計算されます。
各システムでこのコマンドを実行してください。
dmesg | grep -i smp.*allow
または、管理者が以前に制限を変更した可能性があります。
答え2
実際のLinuxボックスではなくドッカーにアクセスしたり、VZコンテナを開くことはできますか?この場合、ホストはPID_MAXを任意の値に制限できます。これはCgroup pidコントローラと呼ばれる比較的新機能です。コンテナが無限にフォークするプロセスを防ぎ、短時間ホストを使用できなくするアンチフォーク爆弾ソリューションです。