
Linux學(xué)習(xí)筆記1:CPU核數(shù)&linux進(jìn)程

一、CPU核數(shù)
1、物理cpu數(shù):physicalidid
#以下是兩個(gè)物理CPU
[root@8-20~]#cat/proc/cpuinfo|grep-i’physicalid|sort|uniq
physicalid:0
physicalid:1
2、核數(shù):看cpucores
#以下是每個(gè)物理CPU的8個(gè)核
[root@8-20~]#cat/proc/cpuinfo|grep-i’cpucores|sort|uniq
cpucores:8
3、是否支持超線程:sibling是否大于cpucores。如果大于,則表示支持超線程。超線程數(shù)為siblings/cpucores=16/8=2
4、總核數(shù):物理CPU數(shù)*核數(shù),以上例子:2*8=16核
5、CPU總邏輯數(shù)(線程數(shù)):總核數(shù)*超線程數(shù),以上例子:16*2=32線程
6、看總邏輯CPU數(shù)的方法比較簡單:top命令,然后按1
邏輯cpu的數(shù)量為32

二、linux的進(jìn)程狀態(tài)
linux進(jìn)程狀態(tài)及轉(zhuǎn)換關(guān)系
2.1R狀態(tài)(對(duì)系統(tǒng)產(chǎn)生負(fù)載)
就緒狀態(tài)(runnable):說明過程處于CPU的就緒隊(duì)列中,就緒過程
運(yùn)行狀態(tài)(running):表示過程處于CPU的就緒隊(duì)列中,運(yùn)行態(tài)的過程
2.2D狀態(tài)(對(duì)系統(tǒng)產(chǎn)生負(fù)載)
睡眠狀態(tài)不能中斷(uninterruptible):表示過程正在與硬件交互(如申請(qǐng)資源(內(nèi)存)io)或者處理硬件),此時(shí)不允許被其他過程中斷,這也是過程的自我保護(hù)機(jī)制。雖然它在短時(shí)間內(nèi)是一種不可中斷的睡眠狀態(tài),但它仍然占用資源,因此它會(huì)產(chǎn)生系統(tǒng)負(fù)載。
注:少量D狀態(tài)無關(guān)緊要,但有大量D狀態(tài):需要進(jìn)一步分析瓶頸在哪里
2.3Z狀態(tài)
僵死狀態(tài)(zombie):僵尸過程意味著過程實(shí)際上已經(jīng)結(jié)束,但父親的過程尚未恢復(fù)其資源(如過程描述符、PID等)
2.4S狀態(tài)
它可以中斷睡眠狀態(tài),這意味著該過程因等待事件而被系統(tǒng)懸掛(堵塞)。當(dāng)?shù)却^程的事件發(fā)生時(shí),它會(huì)被喚醒并進(jìn)入R狀態(tài)
2.5I狀態(tài)
空閑狀態(tài)(Idle)。用于不中斷睡眠的核心線程。由硬件交互引起的不中斷過程用D表示,但對(duì)于某些核心線程來說,在不中斷睡眠時(shí)可能沒有任何負(fù)載。
2.6T或T狀態(tài)
(Stopped或Traced)表示過程處于暫停或跟蹤狀態(tài)
2.7X狀態(tài)
過程已經(jīng)消亡

三、平均負(fù)載loadaverage
1、含義:系統(tǒng)的平均負(fù)載長度,即平均活動(dòng)過程數(shù)(R狀態(tài))【runing、runable】與D狀態(tài)(不中斷,與硬件交互,受保護(hù))
說明:R狀態(tài)和D狀態(tài)都能產(chǎn)生系統(tǒng)負(fù)載
2、平均負(fù)載怎么算高?怎么計(jì)算?
要看核數(shù),要看系數(shù)
2.1高度與否與cpu核數(shù)有關(guān)
2.1單核過去1分鐘、5分鐘、15分鐘的平均負(fù)荷>10高
2.224核過去1分鐘、5分鐘、15分鐘平均負(fù)荷>10且小于24,不高
2.2、如何計(jì)算系數(shù)?
核數(shù)為0.7*,load不高<0.7*核數(shù),load不高
大于0.7核數(shù),小于5*核數(shù),load不高,不好說,要進(jìn)一步監(jiān)控分析
>5*核數(shù),load高
3、平均負(fù)載高的原因是什么?
平均負(fù)載是將r狀態(tài)和b狀態(tài)的過程計(jì)入負(fù)載,因此平均負(fù)載高的原因肯定可以推斷出活躍過程的數(shù)量。
3.1只能推斷出過程太多,應(yīng)用是cpu密集過程。這些cpu密集過程有太多的任務(wù)(計(jì)算和統(tǒng)計(jì)),cpu滿載。這個(gè)時(shí)候需要進(jìn)一步看top和哪個(gè)過程。
4、與平均利用率相比
4.1平均負(fù)載高,cpu占用高嗎?
CPU密集過程,是的,如果平均負(fù)載高,CPU必須占用高
I/O密集型平均負(fù)載不一定高,cpu占用率高(沒有復(fù)雜的計(jì)算操作,所以不一定)
4.2cpu占用率高,平均負(fù)荷高嗎?
cpu占用率高,平均負(fù)載不一定高:java過程占90%和8核,平均負(fù)載可能是1
cpu密集型工藝比例高,工藝多。因此,cpu占用率高,平均負(fù)載可能高