Maximální hodnota PID v Linuxu je konfigurovatelná. Můžete se k němu dostat přes /proc/sys/kernel/pid_max
soubor. Tento soubor (nový v Linuxu 2.5) určuje hodnotu, při které se PID obtáčí (tj. hodnota v tomto souboru je o jednu větší než maximální PID). Výchozí hodnota pro tento soubor, 32768, má za následek stejný rozsah PID jako na dřívějších jádrech. Hodnotu v tomto souboru lze nastavit na libovolnou hodnotu až do 2^22 (PID_MAX_LIMIT, přibližně 4 miliony).
Z hlediska programování musíte použít pid_t
zadejte pro práci s ID procesu. Můžete dokonce přistupovat k jeho minimálním / maximálním hodnotám pomocí celočíselných vlastností. Zde je příklad, jak to udělat pomocí C++ a Boost na Linuxu 2.6.X běžícím na platformě x86_64:
$ 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
Z proc(5)
manuálová stránka:
/proc/sys/kernel/pid_max
(od Linuxu 2.5.34)Tento soubor určuje hodnotu, při které se PID obtáčí (tj. hodnota v tomto souboru je o jednu větší než maximální PID). PID větší než tato hodnota se nepřidělují; hodnota v tomto souboru tedy také funguje jako celosystémové omezení celkového počtu procesů a vláken. Výchozí hodnota pro tento soubor, 32768, má za následek stejný rozsah PID jako na dřívějších jádrech. Na 32bitových platformách je 32768 maximální hodnota pro pid_max. Na 64bitových systémech
pid_max
lze nastavit na libovolnou hodnotu až do 2^22 (PID_MAX_LIMIT
, přibližně 4 miliony).
Ve výchozím nastavení je to 32768, hodnotu ve vašem systému můžete přečíst v /proc/sys/kernel/pid_max
.
A můžete nastavit vyšší hodnotu na 64bitových systémech (až 2 =4 194 304) pomocí:
echo 4194304 > /proc/sys/kernel/pid_max
Přečtěte si více zde:
http://www.cs.wisc.edu/condor/condorg/linux_scalability.html (přes archive.org)