簡介
top命令顯示系統(tǒng)上正在運(yùn)行的進(jìn)程,用來監(jiān)視服務(wù)的負(fù)載宰睡。
輸出
系統(tǒng)運(yùn)行時間和平均負(fù)載
top |uptime
顯示:
11:03:34 up 12 days, 20:16, 2 users, load average: 0.02, 0.11, 0.16
字段分別表示:
- 當(dāng)前時間
- 系統(tǒng)已經(jīng)運(yùn)行的時間
- 當(dāng)前登錄用戶的數(shù)量
- 最近5分鐘、10分鐘气筋、15分鐘的平均負(fù)載
load average數(shù)據(jù)是每隔5秒鐘檢查一次活躍的進(jìn)程數(shù),然后按特定算法計算出的數(shù)值旋圆。如果這個數(shù)除以邏輯CPU的數(shù)量宠默,結(jié)果高于5的時候就表明系統(tǒng)在超負(fù)荷運(yùn)轉(zhuǎn)了。
任務(wù)
該行顯示的是任務(wù)或者進(jìn)程的總結(jié)灵巧。會顯示全部進(jìn)程的數(shù)量搀矫。
Tasks: 76 total, 1 running, 75 sleeping, 0 stopped, 0 zombie
字段表示:
- total 全部數(shù)量
- running 正在運(yùn)行
- sleeping 休眠
- stopped 停止
- zombie 僵尸進(jìn)程
CPU狀態(tài)
Cpu(s): 2.7%us, 0.9%sy, 0.0%ni, 96.2%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st
該行顯示的是CPU的狀態(tài)
- us(user) 用戶空間占用的CPU百分比
- sy(system) 內(nèi)核空間占用的CPU百分比
- ni(niced) 改變過優(yōu)先級的進(jìn)程占用的CPU百分比
- id 空閑占用的CPU百分比
- wa(IO wait) IO等待占用的CPU百分比
- hi 硬中斷占用的CPU百分比
- si 軟中斷占用的百分比
- st 這個虛擬機(jī)被hypervisor偷去的CPU時間
在top視圖下按1會顯示每個邏輯CPU的狀況:
Cpu0 : 16.3%us, 4.8%sy, 0.0%ni, 77.5%id, 0.0%wa, 0.0%hi, 1.4%si, 0.0%st
Cpu1 : 3.3%us, 1.3%sy, 0.0%ni, 95.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 1.0%us, 0.7%sy, 0.0%ni, 98.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 1.0%us, 0.7%sy, 0.0%ni, 98.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
如果不按1 則在top視圖里面顯示的是所有cpu的平均值。
查看CPU的相關(guān)信息
cat /proc/cpuinfo
輸出:
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 62
model name : Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
stepping : 4
microcode : 1
cpu MHz : 2593.746
cache size : 20480 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good unfair_spinlock pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm xsaveopt
bogomips : 5187.49
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
總核數(shù) = 物理CPU個數(shù) X 每顆物理CPU的核數(shù)
總邏輯CPU數(shù) = 物理CPU個數(shù) X 每顆物理CPU的核數(shù) X 超線程數(shù)
物理CPU個數(shù):
cat /proc/cpuinfo |grep "physical id" |sort |uniq |wc -l
每個物理CPU的核心數(shù)
cat /proc/cpuinfo |grep "cpu cores" |uniq
查看邏輯CPU的個數(shù)
cat /proc/cpuinfo |grep "processor" |wc -l
查看CPU信息
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
查看CPU波動情況 尤其是多核機(jī)器
mpstat -P ALL 10 // 該命令會10s采樣CPU的使用情況
內(nèi)存使用
接下來兩行顯示內(nèi)存的使用情況 輸出類似free命令
Mem: 8061236k total, 7587396k used, 473840k free, 155740k buffers
Swap: 0k total, 0k used, 0k free, 6170164k cached
物理內(nèi)存
字段表示:
- total 物理內(nèi)存總量(K)
- used 使用中的內(nèi)存總量(K)
- free 空閑內(nèi)存總量(K)
- buffers 緩存的內(nèi)存總量(K)
used使用中的內(nèi)存重量指現(xiàn)在系統(tǒng)內(nèi)核控制的內(nèi)存數(shù)刻肄,free空間內(nèi)存指內(nèi)核還未納入其管理范圍的數(shù)量瓤球。used中納入內(nèi)核管理的內(nèi)存不見得都在使用中,還包括過去使用過的現(xiàn)在還可以被重復(fù)使用的內(nèi)存敏弃,這些可以重新使用的內(nèi)存還未交還到free中卦羡。
粗略計算可用內(nèi)存數(shù) 計算公式: 第四行free + 第四行buffers + 第五行cached
交換分區(qū)
交換分區(qū)字段和物理內(nèi)存字段含義相同。
內(nèi)存不夠的現(xiàn)象
在top命令下如果swap分區(qū)的used的值在不斷發(fā)生變化麦到,說明內(nèi)核不斷進(jìn)行內(nèi)存和swap的數(shù)據(jù)交換绿饵,表示內(nèi)存真正的不夠用。
進(jìn)程
字段顯示
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
- PID 進(jìn)程號 進(jìn)程的唯一標(biāo)識符
- USER 進(jìn)程的所有者
- PR 進(jìn)程的調(diào)度優(yōu)先級 RT表示進(jìn)程運(yùn)行在實(shí)時態(tài)
- NI nice值 負(fù)值表示高優(yōu)先級 正值表示低優(yōu)先級 越小的值意味著越高的優(yōu)先級瓶颠。
- VTRT 進(jìn)程使用的虛擬內(nèi)存總量(Kb) VTRT = SWAP + RES
- RES 進(jìn)程使用的拟赊、未被換出的物理內(nèi)存大小
- SHR 共享內(nèi)存的大小
- S 進(jìn)程的狀態(tài) D=不可中斷的睡眠狀態(tài) R=運(yùn)行 S=睡眠 T=跟蹤/停止 Z=僵尸進(jìn)程
- %CPU 占用CPU時間百分比
- %MEM 進(jìn)程使用的物理內(nèi)存百分比
- TIME+ 進(jìn)程使用的CPU時間總計
- COMMAND 進(jìn)程名稱
命令使用
監(jiān)控指定的進(jìn)程
top -p PID
設(shè)置top的顯示間隔
top -d 1 //1s顯示一次 默認(rèn)3s
顯示完成的進(jìn)程命令/名稱
top -c // 適用于查看進(jìn)程比如java的啟動命令
顯示指定進(jìn)程下的線程
top -Hp <PID>