导致 pid_max 变化的因素有哪些

导致 pid_max 变化的因素有哪些

我检查了两个linux系统,都是64位的,但是它们的PID_MAX是不同的。

在一个系统上

cat /proc/sys/kernel/pid_max
32768

而在其他方面,则是

 cat /proc/sys/kernel/pid_max 65536

来自过程手册页。

proc/sys/kernel/pid_max 该文件(Linux 2.5 中的新文件)指定 PID 环绕的值(即该文件中的值比最大 PID 大 1)。该文件的默认值 32768 会产生与早期内核相同的 PID 范围。在 32 位平台上,32768 是 pid_max 的最大值。在 64 位系统上,pid_max 可以设置为最大 2^22 的任何值(PID_MAX_LIMIT,大约 400 万)。

请注意,这两个系统都具有相同的 Linux 内核。

现在,我的问题是哪些因素会导致 pid_max 的变化?先感谢您。

答案1

如果我没记错的话,默认值是根据最大潜在 CPU 数量(rhel)计算的。

在每个系统上运行此命令

dmesg | grep -i smp.*allow

或者,管理员之前可能更改了限制?

答案2

难道您正在访问 docker 或开放的 VZ 容器而不是真正的 Linux 机器?在这种情况下,主机可以将 PID_MAX 限制为任何值。这是一个相对较新的功能,称为 Cgroup pid 控制器。它是一种反分叉炸弹解决方案,可以防止容器无休止地分叉进程,从而导致主机在很短的时间内无法使用。

相关内容