pid_max,ulimit -u和thread_max之间的区别

半兽人 发表于: 2019-03-16   最后更新时间: 2021-01-06 09:57:15  
{{totalSubscript}} 订阅, 8,158 游览

让我们了解一个进程和一个线程之间的区别,可以先查看进程和线程之由来

典型的区别在于:

  • 同一进程的线程共享内存空间。
  • 而进程则在不同的内存空间中运行

pid_max

cat /proc/sys/kernel/pid_max
32768

所以上面的命令返回32768,这意味着我可以在我的系统中同时执行32768个进程,这些进程可以在不同的内存空间中运行。

threads-max

cat /proc/sys/kernel/threads-max
126406

上面的命令将输出返回为126406,这意味着我可以在共享内存空间中拥有126406个线程

ulimit -u

ulimit -u
63203

现在,让我们使用第三个参数ulimit -u,它表示用户在特定时间可以拥有的总进程数。上面的命令将输出返回为63203。这意味着用户可以在某个时间点创建的所有进程都可以运行63203进程。

假设案例

假设2个用户同时运行2个进程,并且每个进程大量消耗内存,则这2个用户中的进程将有效地使用63203个线程(进程的限制)。因此,这种情况,那么2个用户将有效地用完整个 126406(threads-max)的大小。

现在,我需要确定用户可以在任何时间点运行的进程数。这可以从文件/etc/security/limits.conf中确定。因此,此文件中基本上有2个设置,如下所述。

软限制类似于警告,硬限制是实际最大限制。例如,以下内容将阻止学生组中的任何人拥有超过50个进程,并且将在30个进程中发出警告。

@student        hard    nproc           50
@student        soft    nproc           30

内核维护硬限制,而shell强制执行软限制。

更新于 2021-01-06
在线,1小时前登录

查看Linux更多相关的文章或提一个关于Linux的问题,也可以与我们一起分享文章