El valor máximo del PID en Linux es configurable. Puede acceder a través de /proc/sys/kernel/pid_max
expediente. Este archivo (nuevo en Linux 2.5) especifica el valor en el que se ajustan los PID (es decir, el valor en este archivo es uno mayor que el PID máximo). El valor predeterminado para este archivo, 32768, da como resultado el mismo rango de PID que en kernels anteriores. El valor de este archivo se puede establecer en cualquier valor hasta 2^22 (PID_MAX_LIMIT, aproximadamente 4 millones).
Desde la perspectiva de la programación, debe usar pid_t
tipo para trabajar con ID de proceso. Incluso puede acceder a sus valores mínimos/máximos utilizando rasgos enteros. Aquí hay un ejemplo de cómo hacerlo usando C++ y Boost en Linux 2.6.X ejecutándose en la plataforma 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
Desde el proc(5)
página man:
/proc/sys/kernel/pid_max
(desde Linux 2.5.34)
Este archivo especifica el valor en el que se ajustan los PID (es decir, el valor en este archivo es uno mayor que el PID máximo). Los PID superiores a este valor no se asignan; por lo tanto, el valor en este archivo también actúa como un límite de todo el sistema en el número total de procesos y subprocesos. El valor predeterminado para este archivo, 32768, da como resultado el mismo rango de PID que en kernels anteriores. En plataformas de 32 bits, 32768 es el valor máximo para pid_max. En sistemas de 64 bits, pid_max
se puede establecer en cualquier valor hasta 2^22 (PID_MAX_LIMIT
, aproximadamente 4 millones).
Es 32768 por defecto, puede leer el valor en su sistema en /proc/sys/kernel/pid_max
.
Y puede establecer un valor más alto en sistemas de 64 bits (hasta 2 =4 194 304) con:
echo 4194304 > /proc/sys/kernel/pid_max
Lea más aquí:
http://www.cs.wisc.edu/condor/condorg/linux_scalability.html (a través de archive.org)