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

半兽人 发表于: 2019-03-16   最后更新时间: 2019-03-16  

让我们了解一个进程和一个线程之间的区别。根据此链接.

典型的区别在于同一进程的线程在a中运行,共享内存空间。

而进程则在不同的内存空间中运行

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强制执行软限制。



您需要解锁本帖隐藏内容请: 点击这里
本帖隐藏的内容





发表于: 5月前   最后更新时间: 5月前   游览量:359
上一条: ulimit命令介绍 - linux
下一条: linux history命令显示时间