Updated on 2024-08-16 GMT+08:00

Changing Process ID Limits (kernel.pid_max)

Context

Process IDs (PIDs) are a fundamental resource on nodes. It is trivial to hit the task limit without hitting any other resource limits, which can then cause instability to a host machine.

You can adjust the PID limit (kernel.pid_max) according to service requirements.

kernel.pid_max Defaults

Starting from January 2022, CCE changes the default value of kernel.pid_max to 4194304 for EulerOS 2.5, CentOS 7.6, and Ubuntu 18.04 nodes in clusters of v1.17 or later. Specific conditions:

  • Cluster version: v1.17.17 or later
  • Node creation: after January 30, 2022

If the preceding two conditions are not met, kernel.pid_max on EulerOS 2.5, CentOS 7.6, and Ubuntu 18.04 nodes defaults to 32768.

Table 1 kernel.pid_max defaults

OS

Clusters of 1.17.9 and Earlier

Clusters of 1.17.17 and Later

Nodes Created on or Before January 30, 2022

Nodes Created After January 30, 2022

EulerOS 2.5

32768

32768

4194304

CentOS 7.6

32768

32768

4194304

Ubuntu 18.04

N/A

32768

4194304

EulerOS 2.3

57344

57344

57344

EulerOS 2.9

N/A

4194304

4194304

Change Suggestion

Viewing kernel.pid_max

Log in to the node and run the following command to obtain the value of kernel.pid_max:

sysctl kernel.pid_max

# sysctl kernel.pid_max
kernel.pid_max = 32768

Change kernel.pid_max, if necessary, as instructed in Changing kernel.pid_max of a Node.

Checking Node PIDs

Log in to the node and run the following command to check how many PIDs are in use:

ps -eflL | wc -l

# ps -eflL | wc -l
691

Changing kernel.pid_max of a Node

Log in to the node and run the following command. 4194304 indicates the value of kernel.pid_max and is used as an example here.

echo kernel.pid_max = 4194304 >> /etc/sysctl.conf && sysctl -p

echo 4194304 > /sys/fs/cgroup/pids/kubepods/pids.max

Run the following commands to check whether the returned value is the same as that you configured:

# sysctl kernel.pid_max
kernel.pid_max = 4194304
# cat /sys/fs/cgroup/pids/kubepods/pids.max
4194304

Configuring kernel.pid_max When Creating a Node Pool

EulerOS 2.3: Configuration required.

EulerOS 2.5, CentOS 7.6, and Ubuntu 18.04: Configuration required for clusters of v1.17.9 and earlier. Configuration NOT required for clusters of v1.17.17 and later because the value has been changed.

You can configure kernel.pid_max in the pre-installation script to create a node from a node pool.

When creating a node pool, choose Advanced Settings > Post-installation Command and add the following command:

echo kernel.pid_max = 4194304 >> /etc/sysctl.conf && sysctl -p

Configuring kernel.pid_max When Creating a Node

EulerOS 2.3: Configuration required.

EulerOS 2.5, CentOS 7.6, and Ubuntu 18.04: Configuration required for clusters of v1.17.9 and earlier. Configuration NOT required for clusters of v1.17.17 and later because the value has been changed.

You can configure kernel.pid_max by using the pre-installation script when creating a node.

Choose Advanced Settings > Post-installation Command and add the following command:

echo kernel.pid_max = 4194304 >> /etc/sysctl.conf && sysctl -p