최대 사용자 프로세스 값을 결정하는 방법은 무엇입니까?

최대 사용자 프로세스 값을 결정하는 방법은 무엇입니까?

어떤 값이 맞나요? (또는 둘 다 맞지만 어느 것이 적용됩니까?)

$ 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

답변1

모든 값은 정확하며 의미가 다릅니다. /proc/sys/kernel/pid_max예 최대값입니다 PID. ulimit -u예 최대값입니다 number of processes.

에서 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).

에서 man bash:

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

노트

새 프로세스가 생성되면 사용 가능한 다음 커널 프로세스 카운터 번호가 할당됩니다. 도달하면 pid_max커널은 프로세스 카운터를 300으로 다시 시작합니다. Linux 소스 코드에서 pid.c파일:

....
#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;

관련 정보