APP開(kāi)發(fā)Linux系統(tǒng)對(duì)于top命令的使用以及他們之間的這關(guān)系博納網(wǎng)絡(luò)在前面的怎掌中與各位APP開(kāi)發(fā)愛(ài)好者進(jìn)行過(guò)詳細(xì)分析,幾天本文主要節(jié)前面top命令使用的未完部分繼續(xù)詳解。top命令作為常用性能分析命令,APP開(kāi)發(fā)人員務(wù)必要了解輸出結(jié)果中每項(xiàng)的具體含義。
top命令顯示的前5行是統(tǒng)計(jì)信息,第一行是基本信息。
第二行是任務(wù)信息

深圳APP開(kāi)發(fā)工程師在這里解析下僵尸進(jìn)程,對(duì)于僵尸進(jìn)程這個(gè)概念可能很多APP開(kāi)發(fā)愛(ài)好者都不太了解。僵尸進(jìn)程指的是那些已經(jīng)終止,但仍然保留些信息的
進(jìn)程.等待父進(jìn)程為其調(diào)用wait()系統(tǒng)闊用來(lái)獲取子進(jìn)程的退出狀態(tài)和其他的信息(即為其掃尾)。當(dāng)調(diào)用父進(jìn)程為其調(diào)用wait()后,僵尸進(jìn)程就完全從內(nèi)存中移除。僵尸進(jìn)程無(wú)法使用kill清理。如果APP開(kāi)發(fā)者需要手動(dòng)清理僵尸進(jìn)程,要找到其父進(jìn)程,把父進(jìn)程kill掉后Linux的init將接管其子進(jìn)程Linux中任何一個(gè)子進(jìn)程都必須要有父進(jìn)程,當(dāng)父進(jìn)程被kill后,其所有子進(jìn)程過(guò)繼給Linux的init進(jìn)程,init進(jìn)程成為僵尸進(jìn)程的新父進(jìn)程init進(jìn)程隔段時(shí)間去調(diào)用wait()系統(tǒng)調(diào)用來(lái)清除僵尸進(jìn)程。
第三行是CPU利用率的統(tǒng)計(jì)信息

第四行是內(nèi)存使用信息
第五行是交換區(qū)使用的信息
APP開(kāi)發(fā)需要注意關(guān)于第四、第五行的內(nèi)存和交換區(qū)的信息,下面兩點(diǎn)需要注意
1.什么是交換區(qū)(Swap)
Linux的交換區(qū)(Swap):交換區(qū)是硬盤上的塊空間。在內(nèi)存不足的情況下.操作系統(tǒng)先把內(nèi)存中暫時(shí)不用的數(shù)據(jù)存到硬盤的交換區(qū),騰出內(nèi)存來(lái)讓別的程序運(yùn)行。
阿里云服務(wù)器上的Linux系統(tǒng)默認(rèn)是沒(méi)有設(shè)置Swap。由于開(kāi)啟Swap分區(qū)會(huì)導(dǎo)致硬盤10性能下降,因此阿里云服務(wù)器初始狀態(tài)未配置Swap如果某些應(yīng)用需要開(kāi)啟Swap分區(qū),也可通過(guò)相應(yīng)的命令開(kāi)啟。
如圖4.2所示是UCloud上top命令的截圖,由圖上可獲知UCloud上的Liuux系統(tǒng)是設(shè)置了Swap分區(qū),Linux系統(tǒng)在內(nèi)存不足的情況下會(huì)使用Swap分區(qū),這時(shí)整個(gè)系統(tǒng)的性能急降。如果使用top命令觀察到Swap上used值不用為0,那運(yùn)維人員需要小心了,used值不用為。意味著內(nèi)存已經(jīng)不足。這時(shí)運(yùn)維人員先排查有沒(méi)有不正常使用內(nèi)存的程序,如果沒(méi)找到的程序就意味內(nèi)存已經(jīng)不足以應(yīng)對(duì)業(yè)務(wù)的發(fā)展,需要升級(jí)內(nèi)存。
APP開(kāi)發(fā)示例圖4-2UClouditop命令的截圖
2.cached和huffers區(qū)別
cached和buffers都是內(nèi)存中存放的數(shù)據(jù),簡(jiǎn)單來(lái)說(shuō)Ucached足存放從磁盤中讀取出的數(shù)據(jù).buffers是存放準(zhǔn)備寫入磷盤的數(shù)據(jù)cached是Linux把文件從硬盤中讀取后在內(nèi)存中保存的數(shù)據(jù),下次要讀取這些數(shù)據(jù)時(shí)若在cached命中(找到數(shù)據(jù)),則不去讀硬盤的數(shù)據(jù),否則讀硬盤的數(shù)據(jù)。cached中的數(shù)據(jù)按照讀取的頻率組織起來(lái),最頻繁讀取的數(shù)據(jù)放在最快讀取到的地方,把不再讀取的數(shù)據(jù)往后排,直到因為cached空間不足而刪除。如果其他應(yīng)用面臨內(nèi)存不足的情形,Linux會(huì)把cached中的文件清理,多騰出給其他應(yīng)用使用。cached實(shí)際緩存的是塊而不是文件,塊在Liuux中是磁盤I/O操作的最少單位(在Linux中,默認(rèn)是1KB),這時(shí)cached就能保存文件、設(shè)備和其他非文件系統(tǒng)的數(shù)據(jù)。
Linux中的緩存是沒(méi)有固定大小的,Linux動(dòng)使用空閑內(nèi)存作為cached,當(dāng)內(nèi)存空間變小時(shí),為了避免內(nèi)存空間不足而使用Swap,Linux會(huì)自動(dòng)釋放部分cached的內(nèi)存空間。buffers是為磁盤的讀寫設(shè)計(jì)的,把分散的磁盤操作集中起來(lái),減少了磁盤尋道的時(shí)間和磁盤碎片.從而提高系統(tǒng)性能。在Linux中有個(gè)守護(hù)進(jìn)程會(huì)定期把buffers中的數(shù)據(jù)寫入到磁盤,也可以通過(guò)命令syne手動(dòng)把buffers數(shù)據(jù)刷到磁盤中。
cached和buffers都是由操作系統(tǒng)管理,只要Swap分區(qū)沒(méi)有被使用,即使cached和buffers占用了很多內(nèi)存,運(yùn)維人員都不需要太擔(dān)心。運(yùn)維人員可以使用如下的命令手動(dòng)清理cached中的數(shù)據(jù)。
繼續(xù)返回top命令的講解,下面這行是進(jìn)程統(tǒng)計(jì)信息區(qū),顯示了各個(gè)進(jìn)程的詳細(xì)信息,如圖4.3所示。
APP開(kāi)發(fā)實(shí)操示意圖4.3進(jìn)程統(tǒng)計(jì)信息區(qū)
開(kāi)發(fā)者請(qǐng)注意上面各列的含義如下。
這一欄中常用的列有5個(gè):PID(進(jìn)程的ID),USER(進(jìn)程所有者的用戶名)%CPU(上次更新到現(xiàn)在的CPU時(shí)間占用百分比),%MEM(進(jìn)程使用的物理內(nèi)存百分比),COMMAND(命令名/命令行)。注意top命令是有交互操作,例如.在top命令中按下數(shù)字“l(fā)”,可以顯示CPU每個(gè)核的使用情況,如圖4-4所示的下畫線。
APP開(kāi)發(fā)實(shí)操示意圖4-4顯示CPU的核運(yùn)行情況
在top命令中輸入“h”,可看到top命令的詳細(xì)幫助,如圖4-5所示。
APP開(kāi)發(fā)實(shí)操示意圖4-5top命令的幫助
由于top命令是動(dòng)態(tài)顯示全部進(jìn)程的使用情況,如果只需要觀察某個(gè)進(jìn)程的資源使用情況,用如下的命令。
top-p進(jìn)程id
如圖4-6所示是用top命令顯示MySQL進(jìn)程(進(jìn)程id:7967)的資源使用情況。
APP開(kāi)發(fā)實(shí)操示意圖4-6用top命令MySOL進(jìn)程的資源使用情況。好了,深圳APP開(kāi)發(fā)公司對(duì)于程序員在開(kāi)中對(duì)于Linux系統(tǒng)中top命令是用的詳細(xì)操作實(shí)例分享本文就寫到這里。喜歡本站的朋友請(qǐng)持續(xù)關(guān)注我們下期關(guān)于top命令使用的進(jìn)程顯示實(shí)操經(jīng)驗(yàn)介紹。深圳APP開(kāi)發(fā)博納網(wǎng)絡(luò)編輯整理。