5

Which value is correct?(or they are all correct, but which one will take effect?)

$ 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 Answer 1

12

All values is correct and have different meanings./proc/sys/kernel/pid_max is maximum value for PID, ulimit -u is maximum value for number of processes.

From 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). 

From man bash:

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

Note

When a new process is created, it is assigned next number available of kernel processes counter. When it reached pid_max, the kernel restart the processes counter to 300. From linux source code, 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; 
8
  • 1
    But why my max user processes(77301) is greater than pid_max(32768)? Commented Apr 10, 2014 at 6:45
  • Because the PID will be reset when it reached pid_max, updated my answer for more details. Commented Apr 10, 2014 at 7:09
  • So How can I run 77301 process while pid has only 32768 position? Commented Apr 10, 2014 at 7:22
  • 1
    No, you can not run 77301 processes simulately. If you have processes > pid_max, you get error message like "No more processes...". If you have processes < pid_max, you will get "Resource temporarily unavailable". Commented Apr 10, 2014 at 7:42
  • @schemacs Because you could increase kernel.pid_max if you wanted (assuming your architecture supports it). Commented Apr 10, 2014 at 21:33

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.