Linux の PID の最大値は構成可能です。 /proc/sys/kernel/pid_max
からアクセスできます ファイル。このファイル (Linux 2.5 の新機能) は、PID がラップアラウンドする値を指定します (つまり、このファイルの値は最大 PID より 1 大きい値です)。このファイルのデフォルト値 32768 は、以前のカーネルと同じ範囲の PID になります。このファイルの値は、2^22 (PID_MAX_LIMIT、約 400 万) までの任意の値に設定できます。
プログラミングの観点からは、 pid_t
を使用する必要があります プロセス ID を操作するためのタイプ。整数の特性を使用して最小/最大値にアクセスすることもできます。以下は、x86_64 プラットフォームで実行されている Linux 2.6.X で C++ と Boost を使用して実行する例です:
$ cat test.cpp
#include <sys/types.h>
#include <iostream>
#include <boost/integer_traits.hpp>
using namespace std;
int main ()
{
cout << "pid_t max = " << boost::integer_traits<pid_t>::const_max << endl;
}
$ ./test
pid_t max = 2147483647
proc(5)
から マニュアルページ:
/proc/sys/kernel/pid_max
(Linux 2.5.34 以降)
このファイルは、PID がラップアラウンドする値を指定します (つまり、このファイルの値は最大 PID より 1 大きい値です)。この値より大きい PID は割り当てられません。したがって、このファイルの値は、プロセスとスレッドの総数に対するシステム全体の制限としても機能します。このファイルのデフォルト値 32768 は、以前のカーネルと同じ範囲の PID になります。 32 ビット プラットフォームでは、pid_max の最大値は 32768 です。 64 ビット システムでは、pid_max
2^22 (PID_MAX_LIMIT
までの任意の値に設定できます) 、約 400 万)
デフォルトでは 32768 です。システムの値は /proc/sys/kernel/pid_max
で読み取ることができます .
また、64 ビット システムでは値を高く設定できます (最大 2 =4,194,304)。
echo 4194304 > /proc/sys/kernel/pid_max
詳細はこちら:
http://www.cs.wisc.edu/condor/condorg/linux_scalability.html (archive.org 経由)