TOP 命令的入門總結(jié),我只服氣這篇~
top: 動態(tài)查看進程變化,監(jiān)控 linux 的系統(tǒng)狀況,是 Linux 下常用的性能分析工具,能夠?qū)崟r顯示系統(tǒng)中各個進程的資源占用狀況,類似于 Windows 的任務(wù)管理器。
下面詳細介紹它的使用方法:

統(tǒng)計信息區(qū)
前五行是系統(tǒng)整體的統(tǒng)計信息。第一行是任務(wù)隊列信息,同 uptime 命令的執(zhí)行結(jié)果。其內(nèi)容如下:

07:25:19 ? 當(dāng)前時間
up 246 days ? 系統(tǒng)運行時間
2:34
4 user ? 當(dāng)前登錄用戶數(shù)
load average: 2.51, 2.53, 2.53 ? 系統(tǒng)負(fù)載,即任務(wù)隊列的平均長度。
三個數(shù)值分別為 1分鐘、5分鐘、15分鐘前到現(xiàn)在的平均值
第二、三行為進程和 CPU 的信息。當(dāng)有多個 CPU 時,這些內(nèi)容可能會超過兩行。內(nèi)容如下:
Tasks:
total ? 進程總數(shù)
running ? 正在運行的進程數(shù)
sleeping ? 睡眠的進程數(shù)
stopped ? 停止的進程數(shù)
zombie ? 僵尸進程數(shù)
Cpu(s):?
us? ?用戶空間占用CPU百分比?
sy? ?內(nèi)核空間占用CPU百分比?
ni? ?用戶進程空間內(nèi)改變過優(yōu)先級的進程占用CPU百分比?
id? ?空閑CPU百分比?
wa? ?等待輸入輸出的CPU時間百分比?
hi? ?硬中斷(Hardware IRQ)占用CPU的百分比
si? ?軟中斷(Software Interrupts)占用CPU的百分比
st? ?(Steal time) 是當(dāng) hypervisor 服務(wù)另一個虛擬處理器的時候,虛擬 CPU 等待實際 CPU 的時間的百分比。
Mem:?
total? ?物理內(nèi)存總量?
free? ?空閑內(nèi)存總量?
used? ?使用的物理內(nèi)存總量?
buff/cache? ?用作內(nèi)核緩存的內(nèi)存量
Swap:?
total? ?交換區(qū)總量?
free? ?空閑交換區(qū)總量?
used? ?使用的交換區(qū)總量
avail Mem 緩沖的交換區(qū)總量
內(nèi)存中的內(nèi)容被換出到交換區(qū),而后又被換入到內(nèi)存,但使用過的交換區(qū)尚未被覆蓋,該數(shù)值即為這些內(nèi)容已存在于內(nèi)存中的交換區(qū)的大小。相應(yīng)的內(nèi)存再次被換出時可不必再對交換區(qū)寫入。
內(nèi)存中的內(nèi)容被換出到交換區(qū),而后又被換入到內(nèi)存,但使用過的交換區(qū)尚未被覆蓋,該數(shù)值即為這些內(nèi)容已存在于內(nèi)存中的交換區(qū)的大小。相應(yīng)的內(nèi)存再次被換出時可不必再對交換區(qū)寫入。
進程信息區(qū)
統(tǒng)計信息區(qū)域的下方顯示了各個進程的詳細信息。首先來認(rèn)識一下各列的含義。
PID 進程id?
PPID 父進程id?
RUSER Real user name?
d UID 進程所有者的用戶id?
e USER 進程所有者的用戶名?
f GROUP 進程所有者的組名?
g TTY 啟動進程的終端名。不是從終端啟動的進程則顯示為 ??
h PR 優(yōu)先級?
i NI nice值。負(fù)值表示高優(yōu)先級,正值表示低優(yōu)先級?
j P 最后使用的CPU,僅在多CPU環(huán)境下有意義?
k %CPU 上次更新到現(xiàn)在的CPU時間占用百分比?
l TIME 進程使用的CPU時間總計,單位秒?
m TIME+ 進程使用的CPU時間總計,單位1/100秒?
n %MEM 進程使用的物理內(nèi)存百分比?
o VIRT 進程使用的虛擬內(nèi)存總量,單位kb。VIRT=SWAP+RES?
p SWAP 進程使用的虛擬內(nèi)存中,被換出的大小,單位kb。
q RES 進程使用的、未被換出的物理內(nèi)存大小,單位kb。RES=CODE+DATA?
r CODE 可執(zhí)行代碼占用的物理內(nèi)存大小,單位kb?
s DATA 可執(zhí)行代碼以外的部分(數(shù)據(jù)段+棧)占用的物理內(nèi)存大小,單位kb?
t SHR 共享內(nèi)存大小,單位kb?
u nFLT 頁面錯誤次數(shù)?
v nDRT 最后一次寫入到現(xiàn)在,被修改過的頁面數(shù)。
w S 進程狀態(tài)。
D=不可中斷的睡眠狀態(tài)?
R=運行?
S=睡眠?
T=跟蹤/停止?
Z=僵尸進程?
x COMMAND 命令名/命令行?
y WCHAN 若該進程在睡眠,則顯示睡眠中的系統(tǒng)函數(shù)名?
z Flags 任務(wù)標(biāo)志,參考 sched.h
默認(rèn)情況下僅顯示比較重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、% CPU、% MEM、TIME+、COMMAND 列。可以通過下面的快捷鍵來更改顯示內(nèi)容。
top 命令選項
top [-] [d] [p] [q] [C] [S] [s] [n]?
-d 后跟秒數(shù),指定每兩次屏幕信息刷新之間的時間間隔,表示進程界面更新時間(默認(rèn)為5秒)。如:將top進程表在/tmp/top.txt中打印2次。
?top -b -n 2 > /tmp/top.txt
-p進程ID? ? 如:查看進程號為1的進程。top -p 1
-q 該選項將使top沒有任何延遲的進行刷新。如果調(diào)用程序有超級用戶權(quán)限,那么top將以盡可能高的優(yōu)先級運行。
-S 指定累計模式?
-s 使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。
-i 使top不顯示任何閑置或者僵死進程。
-c 顯示整個命令行而不只是顯示命令名
Top 命令常見的操作
1、 2500 毫秒刷新一次 TOP 內(nèi)容,總共 5 次,輸出內(nèi)容存放到 performace.txt 文件中
top -b -d 2.5 -n 5 > performace.txt
注:要將內(nèi)容輸出到文件中,必須使用 - b,表示批處理選項
2、TOP 命令如何快速按 % CPU、% MEM、TIME + 列排序
a) % CPU:使用大寫字母按鍵:P
b) % MEM:使用大寫字母按鍵:M
c) T IME + 使用大寫字母按鍵:T
注:TOP 默認(rèn)排序為倒序,如果確實需要升序排序,可以使用大寫字母按鍵:R
3、TOP 命令中顯示其它列值、將兩列互換等a) 選擇顯示列或隱藏列:使用小寫字母按鍵:f
c) 交換列顯示順序:使用小寫字母按鍵:o
b) 選擇需要排序的列:使用大寫字母按鍵:F
CPU steal time
如果你想要部署虛擬環(huán)境(例如:Amazon EC2),steal time就是你想要關(guān)注的性能指標(biāo)之一。如果這個指標(biāo)的數(shù)值很高,那么說明機器狀態(tài)非常糟糕。
虛擬機(VM)會與虛擬環(huán)境的宿主機上的多個虛擬機實例共享物理資源。其中之一共享的就是CPU時間切片。如果你的VM的物理機虛擬比是1/4, 那么它的CPU使用率不會限制于25%的CPU時間切片-它能夠使用超過它設(shè)置的虛擬比。(有別于內(nèi)存的使用,內(nèi)存大小是嚴(yán)格控制的)。可以使用Linux 的 TOP 命令來看到實時的一些性能指標(biāo)。兩個你可能較為熟悉的是 %id(空閑 百分比) 和 %wa(I/O 等待 百分比)。如果 %id 很低, 那么說明CPU的工作負(fù)載很大并且沒有多少計算負(fù)載能力剩余。如果 %wa 很高,則說明瓶 CPU 處于等待計算的狀態(tài),但是正在等待I/O活動的完成(類似 從數(shù)據(jù)庫中獲取存儲在 磁盤上 的一行數(shù)據(jù))。%st(percent steal time) 是CPU展示的最后一個性能指標(biāo)。
更多%st 的詳細用法,請參考其他資料,期待共同進步。