在linux中檢視執行緒數的三種方法

2021-06-18 03:31:19 字數 1598 閱讀 9428

在linux中檢視執行緒數的三種方法

最大執行緒數:cat /proc/sys/kernel/threads-max

1、top -h

手冊中說:-h : threads toggle

加上這個選項啟動top,top一行顯示乙個執行緒。否則,它一行顯示乙個程序。

2、ps xh

手冊中說:h show threads as if they were processes

這樣可以檢視所有存在的執行緒。

3、ps -mp

手冊中說:m show threads after processes

這樣可以檢視乙個程序起的執行緒數。

1.根據程序號進行查詢:

# pstree -p 程序號

# top -hp 程序號

2.根據程序名字進行查詢:

# pstree -p `ps -e | grep server | awk ''`

# pstree -p `ps -e | grep server | awk ''` | wc -l

這裡利用了管道和命令替換,

關於命令替換,我也是今天才了解,就是說用``括起來的命令會優先執行,然後以其輸出作為其他命令的引數,

上述就是用 ps -e | grep server | awk '' 的輸出(程序號),作為 pstree -p 的引數

管道和命令替換的區別是:

管道:管道符號"|"左邊命令的輸出作為右邊命令的輸入

命令替換:將命令替換符"``"中命令的輸出作為其他命令相應位置的引數

1. cat /proc/$/status

2. pstree -p $

3. top -p $ 再按h

cat /proc/`ps -e | grep server | awk ''`/status | grep threads | awk ''

乙個程序同時擁有的執行緒數目有最大限制嗎??

3)執行緒總數問題

linuxthreads將每個程序的執行緒最大數目定義為1024,但實際上這個數值還受到整個系統的總程序數限制,這又是由於執行緒其實是核心程序。

在kernel 2.4.x中,採用一套全新的總程序數計算方法,使得總程序數基本上僅受限於物理記憶體的大小,計算公式在kernel/fork.c的fork_init()函式中:

max_threads = mempages / (thread_size/page_size) / 8

在i386上,thread_size=2*page_size,page_size=2^12(4kb),mempages=物理記憶體大小/page_size,對於256m的記憶體的機器,mempages=256*2^20/2^12=256*2^8,此時最大執行緒數為4096。

但為了保證每個使用者(除了root)的程序總數不至於占用一半以上物理記憶體,fork_init()中繼續指定:

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

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

這些程序數目的檢查都在do_fork()中進行,因此,對於linuxthreads來說,執行緒總數同時受這三個因素的限制。

在linux中檢視執行緒數的三種方法

在linux中檢視執行緒數的三種方法 在linux中檢視執行緒數的三種方法 www.2cto.com 1 top h 手冊中說 h threads toggle 加上這個選項啟動top,top一行顯示乙個執行緒。否則,它一行顯示乙個程序。2 ps xh 手冊中說 h show threads as ...

檢視linux版本的三種常用方法

1 登入到伺服器執行 lsb release a 即可列出所有版本資訊,例如 root 3.5.5biz 46 lsb release a lsb version 1.3 distributor id redhatenterpriseas description red hat enterprise...

檢視linux版本的三種常用方法

1 登入到伺服器執行 lsb release a 即可列出所有版本資訊,例如 root 3.5.5biz 46 lsb release a lsb version 1.3 distributor id redhatenterpriseas description red hat enterprise...