最大ユーザープロセス値を決定する方法は?

最大ユーザープロセス値を決定する方法は?

どんな値が正しいですか? (または両方が正しいですが、どちらが適用されますか?)

$ 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はい最大値ですPIDulimit -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;

関連情報