導航:首頁 > 操作系統 > 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最大線程數及最大進程數相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:758
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:383
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151
伊克塞爾文檔怎麼進行加密 瀏覽:893
app轉賬是什麼 瀏覽:163