como determinar o valor máximo do processo do usuário?

4

Qual valor está correto? (ou estão todos corretos, mas qual deles terá efeito?)

$ cat /proc/sys/kernel/pid_max 
32768
$ ulimit -a |grep processes
max user processes              (-u) 77301
$ cat /proc/1/limits |grep processes
Max processes             77301                77301                p
    
por schemacs 10.04.2014 / 08:02

1 resposta

8

Todos os valores estão corretos e têm significados diferentes. /proc/sys/kernel/pid_max é o valor máximo para PID , ulimit -u é o valor máximo para number of processes .

De man 5 proc :

/proc/sys/kernel/pid_max (since Linux 2.5.34)
              This  file  specifies the value at which PIDs wrap around (i.e.,
              the value in this file is one greater  than  the  maximum  PID).
              The  default  value  for  this  file, 32768, results in the same
              range of PIDs as on earlier kernels.  On 32-bit platforms, 32768
              is  the  maximum  value for pid_max.  On 64-bit systems, pid_max
              can be set to any value up to 2^22 (PID_MAX_LIMIT, approximately
              4 million).

De man bash :

ulimit [-HSTabcdefilmnpqrstuvx [limit]]
              .....
              -u     The maximum number of processes available to a single user
              .....

Nota

Quando um novo processo é criado, é atribuído o próximo número disponível do contador de processos do kernel. Quando ele chegar em pid_max , o kernel reiniciará o contador de processos para 300. Do código fonte do linux, pid.c file:

....
#define RESERVED_PIDS       300
....
static int alloc_pidmap(struct pid_namespace *pid_ns)                           
{                                                                               
    int i, offset, max_scan, pid, last = pid_ns->last_pid;                      
    struct pidmap *map;                                                         

    pid = last + 1;                                                             
    if (pid >= pid_max)                                                         
        pid = RESERVED_PIDS;
    
por 10.04.2014 / 08:27