pid上限问题,linux进程pid达到最大值,linux进程数最大值修改方法

本文探讨了影响Linux系统进程数上限的三个关键因素:threads_max、pid_max和RLIMIT_NPROC,并通过实验展示了它们如何限制进程创建数量。当pid_max设置为不同值时,系统允许创建的进程数有所变化,揭示了这些参数的实际影响。
摘要由CSDN通过智能技术生成

实际的系统进程数上限受到3个配置项的影响:

1、threads-max (/proc/sys/kernel/threads_max)

这个值表示物理内存决定的系统进程数上限,fork_init中有:

max_threads = mempages / (THREAD_SIZE/PAGE_SIZE) / 8

2、pid_max (/proc/sys/kernel/pid_max)

这个值表示进程ID的上限。为了兼容旧版,默认为32768(即两个字节)。

echo 4194303 > /proc/sys/kernel/pid_max

3、RLIMIT_NPROC (ulimit -u 或者 getrlimit)

这个值表示单个用户允许的最大进程数上限。系统默认为threads-max的一半:

init_task.rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;

init_task.rlim[RLIMIT_NPROC].rlim_max = max_threads/2;

实验:

某环境上:

threads-max = 139264;

pid_max = 32768

RLIMIT_NPROC = 69632

1、此时,使用根用户不断创建进程,最终创建了约32378,考虑到原有的进程数,比较接近pid_max这个值;

2、改pid_max为18000时,最终创建了17612个进程;

3、修改pid_max为80000,换成普通用户,最终创建了67913个进程

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
pid算法全称为进程标识符算法,是操作系统中用于区分不同进程的一种算法。每个进程都有一个唯一的标识符称为pid,通过pid可以在操作系统中找到该进程并对其进行控制和管理。 pid算法的设计目的是保证每个进程都具有唯一的标识符,且具备较大的标识符范围以应对复杂的系统环境。常见的pid算法是通过分配递增的整作为进程的标识符,从1开始递增直到最大的整值。 在操作系统中,我们可以使用C语言来实现pid算法。以下是一个简单的C语言实现示例: ``` #include <stdio.h> #include <unistd.h> int main() { int pid = 1; // 初始pid为1 while (1) { // 运行一段时间的进程 sleep(1); // 输出当前进程pid printf("当前进程pid为:%d\n", pid); // 增加pid的值 pid++; } return 0; } ``` 上述代码演示了一个简单的进程,它会每秒钟输出一个递增的pid值。通过使用`sleep`函来模拟进程的运行时间,可以看到pid值会逐渐增加。 当我们运行这段代码时,会不断输出当前进程pid值,直到达到系统定义的pid范围上限。由于上述代码中没有对pid的范围进行处理,因此在达到pid范围上限后会导致pid溢出的问题。 综上所述,pid算法是用于区分不同进程的一种标识符算法,通过分配递增的整实现。我们可以使用C语言来实现pid算法,以便在操作系统中对进程进行控制和管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

k8s小王

你的鼓励是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值