$ top
top - 17:15:58 up 33 days, 4:53, 3 users, load average: 2.16, 1.75, 1.46
Tasks: 76 total, 3 running, 73 sleeping, 0 stopped, 0 zombie
%Cpu(s): 99.5 us, 0.5 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1883724 total, 53948 free, 794396 used, 1035380 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 916476 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21207 root 20 0 859688 703220 1124 S 99.2 37.3 70:41.21 bwa
5543 root 10 -10 127472 7616 4408 S 0.6 0.4 395:08.35 AliYunDun
5478 root 10 -10 32716 2904 1244 S 0.1 0.2 10:16.20 AliYunDunUpdate
21640 root 20 0 0 0 0 R 0.1 0.0 0:00.03 kworker/0:2
top結(jié)果解讀
- 第一行:系統(tǒng)狀況
top - 17:15:58 # 當(dāng)前系統(tǒng)時(shí)間
up 33 days, 4:53 # 系統(tǒng)已經(jīng)運(yùn)行了這么長時(shí)間(在這期間沒有重啟過)
3 users # 當(dāng)前有2個(gè)用戶登錄系統(tǒng)
load average: 2.16, 1.75, 1.46 # 分別是1分鐘、5分鐘、15分鐘的負(fù)載情況
load average數(shù)據(jù)是每隔5秒鐘檢查一次活躍的進(jìn)程數(shù),然后按特定算法計(jì)算出的數(shù)值。如果這個(gè)數(shù)除以邏輯CPU的數(shù)量,結(jié)果高于5的時(shí)候就表明系統(tǒng)在超負(fù)荷運(yùn)轉(zhuǎn)了。
- 第二行:運(yùn)行進(jìn)程統(tǒng)計(jì)
Tasks: 76 total, # 系統(tǒng)現(xiàn)在共有76個(gè)進(jìn)程,
3 running, # 其中處于運(yùn)行中的有3個(gè),
73 sleeping, # 73個(gè)在休眠,
0 stopped, # stoped狀態(tài)的有0個(gè),
0 zombie # zombie(僵尸)狀態(tài)的有0個(gè)
第三行:cpu狀態(tài)
%Cpu(s): 99.5 us, # 用戶空間占用CPU的百分比。
0.5 sy, # 內(nèi)核空間占用CPU的百分比。
0.0 ni, # 改變過優(yōu)先級(jí)的進(jìn)程占用CPU的百分比。
0.0 id, # 空閑CPU百分比。
0.0 wa, # IO等待占用CPU的百分比。
0.0 hi, # 硬中斷(Hardware IRQ)占用CPU的百分比。
0.0 si, # 軟中斷(Software Interrupts)占用CPU的百分比
0.0 st
Linux CPU的使用比率和windows概念不同
用戶空間
內(nèi)核空間
- 第四行:內(nèi)存狀態(tài)
KiB Mem : # 內(nèi)存狀態(tài)
1883724 total, # 物理內(nèi)存總量(2GB)
53948 free, # 空閑內(nèi)存總量
794396 used, # 使用中的內(nèi)存總量
1035380 buff/cache # 緩存的內(nèi)存量
使用中的內(nèi)存總量(used)指的是現(xiàn)在系統(tǒng)內(nèi)核控制的內(nèi)存數(shù);
空閑內(nèi)存總量(free)是內(nèi)核還未納入其管控范圍的數(shù)量。
納入內(nèi)核管理的內(nèi)存不見得都在使用中,還包括過去使用過的現(xiàn)在可以被重復(fù)利用的內(nèi)存,內(nèi)核并不把這些可被重新使用的內(nèi)存交還到free中去,因此在linux上free內(nèi)存會(huì)越來越少,但不用為此擔(dān)心。
- 第五行:swap交換分區(qū)
KiB Swap:
0 total, # 交換區(qū)總量
0 free, # 空閑交換區(qū)總量
0 used. # 使用的交換區(qū)總量
916476 avail Mem
注:不能用windows的內(nèi)存概念理解linux系統(tǒng)。
對(duì)于內(nèi)存監(jiān)控,在top里我們要時(shí)刻監(jiān)控第五行swap交換分區(qū)的used,如果這個(gè)數(shù)值在不斷的變化,說明內(nèi)核在不斷進(jìn)行內(nèi)存和swap的數(shù)據(jù)交換,這是真正的內(nèi)存不夠用了。
第六行:空行
第七行以下:各進(jìn)程(任務(wù))的狀態(tài)監(jiān)控
PID # 進(jìn)程id
USER # 進(jìn)程所有者
PR # 進(jìn)程優(yōu)先級(jí)
NI # nice值。負(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
S # 進(jìn)程狀態(tài)。D=不可中斷的睡眠狀態(tài) R=運(yùn)行 S=睡眠 T=跟蹤/停止 Z=僵尸進(jìn)程
%CPU # 上次更新到現(xiàn)在的CPU時(shí)間占用百分比
%MEM # 進(jìn)程使用的物理內(nèi)存百分比
TIME+ # 進(jìn)程使用的CPU時(shí)間總計(jì),單位1/100秒
COMMAND # 進(jìn)程名稱(命令名/命令行)
提煉自龜仙人的博客