导航:首页 > 操作系统 > linux最大线程数及最大进程数

linux最大线程数及最大进程数

发布时间:2022-11-03 12:28:56

linux正常进程数是多少.

不同发行版是不同的,而且同一发行版的不同安装(工作站、服务器、自定义等)默认启动的进程数也是不同的。

linux 系统中单个进程的最大线程数有其最大的限制 PTHREAD_THREADS_MAX
这个限制可以在 /usr/include/bits/local_lim.h 中查看
对 linuxthreads 这个值一般是 1024,对于 nptl 则没有硬性的限制,仅仅受限于系统的资源。
这个系统的资源主要就是线程的 stack 所占用的内存,用 ulimit -s 可以查看默认的线程栈大小,一般情况下,这个值是 8M。
可以写一段简单的代码验证最多可以创建多少个线程。

试验显示,在 linuxthreads 上最多可以创建 381 个线程,之后就会返回 EAGAIN
在 nptl 上最多可以创建 382 个线程,之后就会返回 ENOMEM
这个值和理论完全相符,因为 32 位 linux 下的进程用户空间是 3G 的大小,也就是 3072M,用 3072M 除以 8M 得 384,但是实际上代码段和数据段等还要占用一些空间,这个值应该向下取整到 383,再减去主线程,得到 382。
那为什么 linuxthreads 上还要少一个线程呢?这可太对了,因为 linuxthreads 还需要一个管理线程。
为了突破内存的限制,可以有两种方法:
1) 用 ulimit -s 1024 减小默认的栈大小
2) 调用 pthread_create 的时候用 pthread_attr_getstacksize 设置一个较小的栈大小
要注意的是,即使这样的也无法突破 1024 个线程的硬限制,除非重新编译 C 库<=此处值得讨论,我在ubuntu 7.04+3G内存上用ulimit -s 1024,则可以得到3054个线程。

Ⅱ linux最多可以有多少个进程

LINUX中进程的最大理论数计算:
每个进程的局部段描述表LDT都作为一个独立的段而存在,在全局段描述表GDT中要有一个表项指向这个段的起始地址,并说明该段的长度以及其他一些 参数。除上之外,每个进程还有一个TSS结构(任务状态段)也是一样。所以,每个进程都要在全局段描述表GDT中占据两个表项。那么,GDT的容量有多大 呢?段寄存器中用作GDT表下标的位段宽度是13位,所以GDT中可以有8192个描述项。除一些系统的开销(例如GDT中的第2项和第3项分别用于内核 的代码段和数据段,第4项和第5项永远用于当前进程的代码段和数据段,第1项永远是0,等等)以外,尚有8180个表项可供使用,所以理论上系统中最大的 进程数量是4090。

Ⅲ 32位linux最大线程数是多少

主线程+辅助线程 +<253个自己的线程<=255
含主线程和一个辅助线程,最多255个,即一个用户只能生成253个线程。
Linux最大线程数限制及当前线程数查询:
1、总结系统限制有:
/proc/sys/kernel/pid_max #查系统支持的最大线程数,一般会很大,相当于理论值
/proc/sys/kernel/thread-max
max_user_process(ulimit -u) #系统限制某用户下最多可以运行多少进程或线程
/proc/sys/vm/max_map_count
硬件内存大小
2、java虚拟机本身限制:
-Xms #intial java heap size
-Xmx #maximum java heap size
-Xss #the stack size for each thread
3、查询当前某程序的线程或进程数
pstree -p `ps -e | grep java | awk '{print $1}'` | wc -l 或 pstree -p 3660 | wc -l
4、查询当前整个系统已用的线程或进程数
pstree -p | wc -l
1、 cat /proc/${pid}/status
2、pstree -p ${pid}
3、top -p ${pid} 再按H 或者直接输入 top -bH -d 3 -p ${pid}
top -H
手册中说:-H : Threads toggle
加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。
4、ps xH
手册中说:H Show threads as if they were processes
这样可以查看所有存在的线程。
5、ps -mp <PID>
手册中说:m Show threads after processes
这样可以查看一个进程起的线程数。

Ⅳ 怎么能得到当前linux系统所能创建的最大进程数量

1、Linux 系统的最大进程数和最大文件打开数限制:
vi /etc/security/limits.conf
# 添加如下的行
* soft noproc 11000
* hard noproc 11000
* soft nofile 4100
* hard nofile 4100
2、说明:* 代表针对所有用户
noproc 是代表最大进程数
nofile 是代表最大文件打开数
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
3、重新登录
ulimit -a查看配置结果
4、为立刻生效,可以执行
ulimit -n 10240
ulimit -n 10240

Ⅳ linux最多可以有多少个进程

以下是对在linux环境下一个进程最多能有多少个线程进行了介绍,需要的朋友可以过来参考下 默认情况下: 主线程+辅助线程 +<253个自己的线程<=255 含主线程和一个辅助线程,最多255个,即你自己只能生成253个线程。 据说可以设置线程数目: 据说是可以设置的,但本人还没有验证!不知道可否。 在你的shell中键入limit命令,里面有descriptor的数目,就是你的进程可以创建的最大线程数目。可以通过修改内核文件更改该数目。

Ⅵ linux 一个进程 最多开多少线程

32为linux系统最大内存地址4G,0-3GB的给用户进程(User Space)使用,3-4GB给内核使用
stack size (kbytes, -s) 10240表示线程堆栈大小
3G/10M=最大线程数,但实际会比这个数小一点,因为程序本身占内存,还有些管理线程
可以使用ulimit -s来设置stack size,设置的小一点开辟的线程就多。

同时/usr/include/bits/local_lim.h中的PTHREAD_THREADS_MAX限制了进程的最大线程数
/proc/sys/kernel/threads-max中限制了系统的最大线程数

你自己写个简单的代码就能测试出自己系统最大可以开多少线程

#include <unistd.h>
#include <stdlib.h>
#include <pthread.h>
#include <stdio.h>

void *foo(void *param)
{
}

int main()
{
int i = 0;
pthread_t thread;
while(1)
{
if(pthread_create(&thread,NULL,foo,NULL) != 0)
break;
i++;
}
printf("i=%d\n",i);
return 0;
}

Ⅶ Linux 怎么增大可以创建的最大线程数

检查ulimit -a 的结果,查看stack size:

stack size (kbytes, -s) 8192

8192KB 就是栈的大小。不能超过这个栈的数目,因此上面2)分配的buf大小超过了栈限制,得到了setmentation fault。

LInux上,最大线程数目是:

number of threads = total virtual memory / (stack size*1024*1024)

在32位系统上,进程空间是4G,其中0-3G是用户空间(0x0-0xBFFFFFFF), 3G-4G是内核空间。
因此理论上讲,用户空间大小/栈大小=最大线程数。3072M/8M=384,考虑到系统的占用,主线程等,我的系统上是380. 也许在你的系统上是382.

我们可以减小栈限制或者增大虚拟内存使得线程的数目增加。
检查虚拟内存: ulimit -v
检查栈大小: ulimit -s

设置虚拟内存:ulimit -v 新值
设置栈大小: ulimit -s 新值

Ⅷ linux中一个进程的最大线程数量是多少

linux 系统中单个进程的最大线程数有其最大的限制 PTHREAD_THREADS_MAX
这个限制可以在 /usr/include/bits/local_lim.h 中查看关于Linux命令的介绍,看看《linux就该这么学》,具体关于这一章地址3w(dot)linuxprobe/chapter-02(dot)html
对 linuxthreads 这个值一般是 1024,对于 nptl 则没有硬性的限制,仅仅受限于系统的资源
这个系统的资源主要就是线程的 stack 所占用的内存,用 ulimit -s 可以查看默认的线程栈大小,一般情况下,这个值是 8M
很基础的linux知识,跟着《linux就该这么学》学吧!

Ⅸ linux中一个进程的最大线程数量是多少

linux 系统中单个进程的最大线程数有其最大的限制 PTHREAD_THREADS_MAX
这个限制可以在 /usr/include/bits/local_lim.h 中查看关于Linux命令的介绍,看看《linux就该这么学》,具体关于这一章地址3w(dot)linuxprobe/chapter-02(dot)html
对 linuxthreads 这个值一般是 1024,对于 nptl 则没有硬性的限制,仅仅受限于系统的资源
这个系统的资源主要就是线程的 stack 所占用的内存,用 ulimit -s 可以查看默认的线程栈大小,一般情况下,这个值是 8M

Ⅹ 浅析linux环境下一个进程最多能有多少个线程

默认情况下: 主线程+辅助线程 +<253个自己的线程<=255 含主线程和一个辅助线程,最多255个,即你自己只能生成253个线程。 据说可以设置线程数目: 据说是可以设置的,但本人还没有验证!不知道可否。 在你的shell中键入limit命令,里面有descriptor的数目,就是你的进程可以创建的最大线程数目。可以通过修改内核文件更改该数目。

阅读全文

与linux最大线程数及最大进程数相关的资料

热点内容
pdf转jpgmac 浏览:799
65压缩机多少钱 浏览:120
同类型服务app如何脱颖而出 浏览:762
mtm月线金叉选股预警公式源码 浏览:227
javasapwebservice 浏览:709
程序员老了去做什么 浏览:404
linux小括号 浏览:773
已加密的u盘怎么清空 浏览:433
怎么拿到服务器权限 浏览:192
延时摄影app如何保存 浏览:195
程序员转正申请职级怎么写 浏览:874
closelinuxsocket 浏览:268
程序员0基础该怎么学 浏览:276
android支付宝支付原理 浏览:729
股票指标加密可以导入 浏览:935
怎样算法排卵期 浏览:803
小米如何加密第三方软件 浏览:232
安卓工程师有什么证书 浏览:788
小米相册截屏文件夹目录 浏览:552
scum怎么查看服务器的ip地址 浏览:457