Linux Process Management Concepts

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Internal

Process

The process with ID 0 is the swapper (or sched), the process responsible with paging. It is part of the kernel, rather than user-space.

The process with ID 1 is the init process, and it is responsible with starting and shutting down the system.

Threads

The number of threads for process can be read from the process' corresponding /proc/<pid>/status, as described here: "Threads:".

Maximum Number of Processes Allowed on the System

cat /proc/sys/kernel/pid_max

or

sysctl kernel.pid_max

For more details, see sysctl and kernel.pid_max.

To get the actual number of processes present in the system, see /proc/stat.

Maximum Number of Processes Available to a Single User

The current value can be read and set with ulimit -u.

For Java applications, this setting limits the number of threads a JVM can create, and it can cause the JVM to throw "java.lang.OutOfMemoryError: unable to create new native thread" exceptions when that limit is reached. For more details see

Java Threads and Linux Processes

The O/S level symptom of reaching the per-user process limit is:

-bash: fork: retry: Resource temporarily unavailable

while trying to execute an arbitrary process.