linux進(jìn)程堆棧分析 linux線程默認(rèn)棧多大?
linux線程默認(rèn)棧多大?Linux線程堆棧大小可以使用ulimit-S查看。對于Ubuntu 2.6內(nèi)核線程堆棧,默認(rèn)大小為8mLinux系統(tǒng),請按照以下步驟進(jìn)行檢查:top-C,顯示系統(tǒng)運(yùn)行的進(jìn)程
linux線程默認(rèn)棧多大?
Linux線程堆棧大小可以使用ulimit-S查看。對于Ubuntu 2.6內(nèi)核線程堆棧,默認(rèn)大小為8m
Linux系統(tǒng),請按照以下步驟進(jìn)行檢查:
top-C,顯示系統(tǒng)運(yùn)行的進(jìn)程信息,輸入大寫P,進(jìn)程將根據(jù)利用率進(jìn)行排序,您可以可以看到第一列是進(jìn)程ID,如圖所示,占用CPU最多的進(jìn)程ID是5986:
top-HP 5986,顯示進(jìn)程的線程運(yùn)行信息列表,繼續(xù)輸入大寫p按CPU利用率排序,可以看到第一行,進(jìn)程5986中占用CPU最多的線程ID是6021:
接下來,讓我們看看您的應(yīng)用程序做了什么。如果是Java應(yīng)用程序,要獲得更多與線程相關(guān)的信息,可以將上面的進(jìn)程ID轉(zhuǎn)換為十六進(jìn)制,因為在堆棧中的Jav中,存儲線程的ID是十六進(jìn)制的。您可以直接命令“printf”%Xn“6021”,輸出:1785:
接下來,您可以通過線程ID(十六進(jìn)制)查看堆棧信息。有許多工具可以查看堆棧信息。這里我使用jstack命令“jstack 5986 | grep ”0x1785 “-C5--輸出如下:
通過以上步驟,您可以知道當(dāng)前系統(tǒng)中占用CPU最多的線程以及該線程在做什么,希望能夠解決這個問題。
如何定位消耗CPU最多的線程?
Linux系統(tǒng)中單個進(jìn)程的最大線程數(shù)有其最大限制pthread threads Max
此限制可設(shè)置為/usr/include/bits/local Lim。H要看Linux命令的介紹,請看“這是如何學(xué)習(xí)Linux”,具體介紹本章地址3W(DOT)linuxprobe/chapter-02(DOT)HTML
對于linuxthreads,值一般是1024,對于NPTL,沒有硬性限制,只受系統(tǒng)資源限制
系統(tǒng)資源主要是線程堆棧占用的內(nèi)存,使用ulimit-S可以檢查默認(rèn)的線程堆棧大小。一般來說,這個值是8m
非常基礎(chǔ)的Linux知識,請遵循“這是如何學(xué)習(xí)Linux的”!