Linux:top

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

Top命令截圖

Tasks

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

CPU(s)

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

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

us:用戶空間(user)占用CPU的百分比。
sy:內(nèi)核空間(system)占用CPU的百分比。
ni:改變過(guò)優(yōu)先級(jí)的進(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ù)另一個(gè)虛擬處理器的時(shí)候,虛擬 CPU 等待實(shí)際 CPU 的時(shí)間的百分比。

Load Average

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

Load Averge是怎么觀察比較合適呢?其定義為:?jiǎn)蝹€(gè)邏輯CPU滿載為1.0,超過(guò)1.0即為過(guò)載運(yùn)行。一個(gè)穩(wěn)定運(yùn)行的系統(tǒng)一般是不會(huì)一直過(guò)載負(fù)荷運(yùn)行的,因此最好觀察的是5分鐘和15分鐘的值。如果這個(gè)值除以邏輯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)

再說(shuō)多一點(diǎn):Mem的buffer和Swap的cached

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

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

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

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

PID:進(jìn)程id
USER:運(yùn)行的用戶
PR:進(jìn)程優(yōu)先權(quán),代表這個(gè)進(jìn)程可被執(zhí)行的優(yōu)先級(jí),其值越小,優(yōu)先級(jí)就越高,越早被執(zhí)行
NI:進(jìn)程N(yùn)ice值,代表這個(gè)進(jìn)程的優(yōu)先值,越小,優(yōu)先值越高(負(fù)值表示高優(yōu)先級(jí),正值表示低優(yōu)先級(jí))
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時(shí)間占用百分比
%Mem:進(jìn)程使用的物理內(nèi)存百分比
Time+:進(jìn)程使用的CPU時(shí)間總計(jì),單位1/100秒
COMMAND:進(jìn)程名稱(命令名/命令行)

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

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

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

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