Linux:top

top是一個經(jīng)常用的命令,平時只是留意一下哪個進(jìn)程用得比較高CPU或者內(nèi)存,但這里還是有一些小學(xué)問:

Top命令截圖

Tasks

Tasks 任務(wù)(進(jìn)程),系統(tǒng)現(xiàn)在共有627個進(jìn)程,其中處于運(yùn)行中的有1個,626個在休眠(sleep),stoped狀態(tài)的有0個,zombie狀態(tài)(僵尸)的有0個。

CPU(s)

top開始顯示的是總的CPU使用的狀況,而想看每一個邏輯CPU的狀態(tài),可按“1”。

關(guān)于us/sy/ni/id/wa/hi/si/st的含義:

us:用戶空間(user)占用CPU的百分比。
sy:內(nèi)核空間(system)占用CPU的百分比。
ni:改變過優(yōu)先級的進(jìn)程占用CPU的百分比
id:空閑(idle)CPU百分比
wa:IO等待(wait)占用CPU的百分比
hi:硬中斷(Hardware IRQ)占用CPU的百分比
si:軟中斷(Software Interrupts)占用CPU的百分比
st:(Steal Time)當(dāng)hypervisor服務(wù)另一個虛擬處理器的時候,虛擬 CPU 等待實際 CPU 的時間的百分比。

Load Average

Load Averge:系統(tǒng)負(fù)載,即任務(wù)隊列的平均長度。 三個數(shù)值分別為 1分鐘、5分鐘、15分鐘前到現(xiàn)在的平均值。

Load Averge是怎么觀察比較合適呢?其定義為:單個邏輯CPU滿載為1.0,超過1.0即為過載運(yùn)行。一個穩(wěn)定運(yùn)行的系統(tǒng)一般是不會一直過載負(fù)荷運(yùn)行的,因此最好觀察的是5分鐘和15分鐘的值。如果這個值除以邏輯CPU數(shù)大于1.0的話,可能系統(tǒng)就需要優(yōu)化才能繼續(xù)運(yùn)行。

如何看邏輯CPU的數(shù)量?給出Shell代碼:

grep 'model name' /proc/cpuinfo | wc -l  

Mem

Mem:系統(tǒng)內(nèi)存的狀態(tài)

total:交換區(qū)總量(64GB)
used:使用的交換區(qū)總量(62GB)
free:空閑交換區(qū)總量(448MB)
buffers:緩沖的交換區(qū)總量(4GB)

Swap

Swap:虛擬內(nèi)存的狀態(tài)

total:交換區(qū)總量(2GB)
used:使用的交換區(qū)總量(0)
free:空閑交換區(qū)總量(2GB)
cached:緩存的交換區(qū)總量(54GB)

再說多一點:Mem的buffer和Swap的cached

之前在微博很熱的一條面試問題:buffer和cached的區(qū)別是什么?正好在top的命令出現(xiàn)了,也想多說一點。

buffers:出現(xiàn)在Mem,實際上是要從內(nèi)存寫入硬盤的數(shù)據(jù),由于內(nèi)存和硬盤的IO速度不一樣,解決的是寫效率的問題;
cached:出現(xiàn)在Swap,實際上是要從硬盤讀入內(nèi)存的數(shù)據(jù),由于再讀一次硬盤速度會很慢,虛擬內(nèi)存就將一些次重要的文件放在cached,讓二次讀取同樣數(shù)據(jù)時間會更快一點。

PID USER PR NI VIRT RES SHR %CPU %Mem Time+ COMMAND

標(biāo)題夠長的,實際要弄清楚的是各種標(biāo)記的意義。

PID:進(jìn)程id
USER:運(yùn)行的用戶
PR:進(jìn)程優(yōu)先權(quán),代表這個進(jìn)程可被執(zhí)行的優(yōu)先級,其值越小,優(yōu)先級就越高,越早被執(zhí)行
NI:進(jìn)程N(yùn)ice值,代表這個進(jìn)程的優(yōu)先值,越小,優(yōu)先值越高(負(fù)值表示高優(yōu)先級,正值表示低優(yōu)先級)
VIRT:進(jìn)程使用的虛擬內(nèi)存總量,單位kb。VIRT=SWAP+RES
RES:進(jìn)程使用的、未被換出的物理內(nèi)存大小,單位kb。RES=CODE+DATA
SHR:共享內(nèi)存大小,單位kb
%CPU:上次更新到現(xiàn)在的CPU時間占用百分比
%Mem:進(jìn)程使用的物理內(nèi)存百分比
Time+:進(jìn)程使用的CPU時間總計,單位1/100秒
COMMAND:進(jìn)程名稱(命令名/命令行)

重點看看PR和NI的關(guān)系:

進(jìn)程優(yōu)先級:PRI(new)=PRI(old)+NICE

也就是進(jìn)程最后的優(yōu)先級是由PR和NIC共同決定的。

對nice值一個形象比喻,假設(shè)在一個CPU輪轉(zhuǎn)中,有2個runnable的進(jìn)程A和B,如果他們的nice值都為0,假設(shè)內(nèi)核會給他們每人分配1k個cpu時間片。但是假設(shè)進(jìn)程A的為0,但是B的值為-10,那么此時CPU可能分別給A和B分配1k和1.5k的時間片。故可以形象的理解為,nice的值影響了內(nèi)核分配給進(jìn)程的cpu時間片的多少,時間片越多的進(jìn)程,其優(yōu)先級越高,其優(yōu)先級值(PRI)越低。%nice,就是改變過優(yōu)先級的進(jìn)程的占用CPU的百分比,如上例中就是0.5k/2.5k=1/5=20%。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Top命令顯示內(nèi)容詳細(xì)解析 1.1. 第一行是任務(wù)隊列 顯示的結(jié)果等同于命令uptime的顯示結(jié)果,主要關(guān)心...
    EVANMORE閱讀 4,657評論 0 0
  • 操作實例: 在命令行中輸入 “top” 即可啟動 top top 的全屏對話模式可分為3部分:系統(tǒng)信息欄、命令輸入...
    jadn閱讀 296評論 0 1
  • top top - display Linux tasks 第一行是任務(wù)隊列信息同 uptime 命令的執(zhí)行結(jié)果...
    BlackChen閱讀 810評論 0 1
  • 不吃咀嚼的食物,將咖啡進(jìn)行到底4days
    Rita童閱讀 304評論 0 0
  • 如果換一種生活,你打算做什么? 很感謝大家的評論??粗u論,有時被樂到,然后提醒自己原來我也有這樣的技能,比如有朋...
    落晚沙閱讀 21,119評論 109 173

友情鏈接更多精彩內(nèi)容