top命令是Linux下常用的性能分析工具,能夠實(shí)時(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況。
top 命令運(yùn)行圖:
1. 第一行——基本信息
load average:
load average 表示系統(tǒng)負(fù)載均值,使用 top 或 uptime 可以查看到負(fù)載均值的信息,三個(gè)數(shù)值分表表示 1分鐘內(nèi) 、5分鐘內(nèi) 、 15分鐘內(nèi)的系統(tǒng)負(fù)載均值,要理解這三個(gè)數(shù)值的含義,首先要了解系統(tǒng)的“核數(shù)”
系統(tǒng)的核數(shù) = CPU1 x CPU1的核數(shù) + CPU2 x CPU2的核數(shù) + CPUn x CPUn的核數(shù) + ……
更清楚的講,在Linux系統(tǒng)中輸入命令grep -c 'model name' /proc/cpuinfo,即可得到核數(shù)。
回到負(fù)載均值,負(fù)載均值的飽和值等于系統(tǒng)的核數(shù), 所以,根據(jù)load average觀察系統(tǒng)負(fù)載首先要看系統(tǒng)中共有多少'核',單處理器單核的飽和值為 1,單處理器雙核的飽和值為2,雙處理器單核的飽和值也為2.
理解負(fù)載均值的最經(jīng)典的例子是把一個(gè)CPU的核當(dāng)做一座單行單向橋,多核即為多行路單向橋.如圖:
假定,目前系統(tǒng)是單核系統(tǒng),根據(jù)上面的描述,它的負(fù)載飽和值為1.這種條件下,各種數(shù)值的含義如下:
在實(shí)際應(yīng)用中,重點(diǎn)關(guān)注5分鐘,15分鐘的負(fù)載均值,當(dāng)達(dá)到0.7時(shí),就需要調(diào)查原因了。
2. 任務(wù)信息
僵尸進(jìn)程:表示已經(jīng)終止,但仍然保留一些信息的進(jìn)程。其等待父進(jìn)程調(diào)用wait(),就可以從內(nèi)存中完全移除。 將是進(jìn)程無(wú)法使用 kill 清理。如果要手動(dòng)清理僵尸進(jìn)程,需要找到其父進(jìn)程,kill掉父進(jìn)程后,LInux的 init 進(jìn)程將接管該僵尸進(jìn)程(linux中所有的子進(jìn)程都需要有父進(jìn)程,當(dāng)父進(jìn)程被kill后,其所有子進(jìn)程將過(guò)繼給init進(jìn)程),init進(jìn)程隔一段時(shí)間去調(diào)用wait(),來(lái)清除僵尸進(jìn)程。
3. CPU使用情況
4. 物理內(nèi)存使用情況
buff/cache:
buffers 和 cache 都是內(nèi)存中存放的數(shù)據(jù),不同的是,buffers 存放的是準(zhǔn)備寫(xiě)入磁盤(pán)的數(shù)據(jù),而 cache 存放的是從磁盤(pán)中讀取的數(shù)據(jù)
在Linux系統(tǒng)中,有一個(gè)守護(hù)進(jìn)程(daemon)會(huì)定期把buffers中的數(shù)據(jù)寫(xiě)入的磁盤(pán),也可以使用 sync 命令手動(dòng)把buffers中的數(shù)據(jù)寫(xiě)入磁盤(pán)。使用buffers可以把分散的 I/O 操作集中起來(lái),減少了磁盤(pán)尋道的時(shí)間和磁盤(pán)碎片。
cache是Linux把讀取頻率高的數(shù)據(jù),放到內(nèi)存中,減少I(mǎi)/O。Linux中cache沒(méi)有固定大小,根據(jù)使用情況自動(dòng)增加或刪除。
5. 交換區(qū)使用情況
Swap(內(nèi)存交換區(qū)):
是硬盤(pán)上的一塊空間。在內(nèi)存不足的情況下,操作系統(tǒng)把內(nèi)存中不用的數(shù)據(jù)存到硬盤(pán)的交換區(qū),騰出內(nèi)存來(lái)讓別的程序運(yùn)行。因此,開(kāi)啟swap會(huì)一定程度的引起 I/O 性能下降(阿里服務(wù)器默認(rèn)不開(kāi))。
6. 進(jìn)程詳細(xì)信息
1. 命令行式使用
-b:以批處理模式操作 這種方式可以把top輸出的內(nèi)容以可讀的形式寫(xiě)入文件top -b >> top.txt
-c:顯示完整的命令行(COMMAND),想查看進(jìn)程執(zhí)行的具體位置時(shí),非常有用
-d:屏幕刷新間隔時(shí)間 top -d 1:表示每隔一秒刷新一次
-s:使用保密模式
-S:指定累積模式
-i:不顯示任何閑置或者僵死進(jìn)程
-u<用戶名>:指定用戶名
-p<進(jìn)程號(hào)>:指定進(jìn)程
-n<次數(shù)>:指定循環(huán)顯示的次數(shù),到了次數(shù)自己退出。
2. 交互式使用
top命令顯示系統(tǒng)實(shí)時(shí)狀態(tài),支持交互操作。執(zhí)行top命令,顯示系統(tǒng)狀態(tài)界面(同時(shí)也是交互界面),輸入交互命令:
1:查看CPU每個(gè)核的使用情況
h:顯示幫助畫(huà)面,給出一些簡(jiǎn)短的命令總結(jié)說(shuō)明
k:終止一個(gè)進(jìn)程
i:忽略閑置和僵死進(jìn)程,這是一個(gè)開(kāi)關(guān)式命令
q:退出程序
r:重新安排一個(gè)進(jìn)程的優(yōu)先級(jí)別
S:切換到累計(jì)模式
s:改變兩次刷新之間的延遲時(shí)間(單位為s),如果有小數(shù),就換算成ms。輸入0值則系統(tǒng)將不斷刷新,默認(rèn)值是5s
l:切換顯示平均負(fù)載和啟動(dòng)時(shí)間信息
m:切換顯示內(nèi)存信息
t:切換顯示進(jìn)程和CPU狀態(tài)信息
c:切換顯示命令名稱和完整命令行
M:根據(jù)駐留內(nèi)存大小進(jìn)行排序
P:根據(jù)CPU使用百分比大小進(jìn)行排序
T:根據(jù)時(shí)間/累計(jì)時(shí)間進(jìn)行排序
w:將當(dāng)前設(shè)置寫(xiě)入~/.toprc文件中。
聯(lián)系客服