top 命令主要用于查看進(jìn)程的相關(guān)信息,同時(shí)它也會(huì)提供系統(tǒng)平均負(fù)載,cpu 信息和內(nèi)存信息。下面的截圖展示了 top 命令默認(rèn)提供的信息:
系統(tǒng)平均負(fù)載
top 命令輸出中的第一行是系統(tǒng)的平均負(fù)載,這和 uptime 命令的輸出是一樣的:
top - 13:18:59 up 223 days, 15:19, 5 users, load average: 0.15, 0.14, 0.13
13:18:59 表示系統(tǒng)當(dāng)前時(shí)間。
up 223 days 表示系統(tǒng)最后一次啟動(dòng)后總的運(yùn)行時(shí)間。
5 user 表示當(dāng)前系統(tǒng)中只有一個(gè)登錄用戶。
cpu利用率 系統(tǒng)cpu利用率+用戶cpu利用率 cpu相關(guān)指標(biāo) average load ——平均負(fù)載 上一分鐘同時(shí)處于“就緒”狀態(tài)的平均進(jìn)程數(shù) 在過去的1分鐘,的平均負(fù)載 一般來(lái)說(shuō)只要每個(gè)cpu的當(dāng)前活動(dòng)進(jìn)程數(shù)不大于3那么系統(tǒng)的性能就是良好的,如果每個(gè)cpu的任務(wù)數(shù)大于5,那么就表示這臺(tái)機(jī)器的性能有嚴(yán)重問題。例如:在子表達(dá)式(分鐘)里的“0/15”表示從第0分鐘開始,每15分鐘 。子表達(dá)式(分鐘)里的“0/15”表示從第0分鐘開始,每15分鐘執(zhí)行一次。
小寫字母 i 可以控制是否顯示系統(tǒng)平均負(fù)載信息。
任務(wù)信息匯總
在 linux 系統(tǒng)中,一般把進(jìn)程和線程統(tǒng)稱為任務(wù)。第二行信息是對(duì)當(dāng)前系統(tǒng)中所有任務(wù)的統(tǒng)計(jì):
Tasks: 145 total, 1 running, 144 sleeping, 0 stopped, 0 zombie
Tasks:270 total 表示當(dāng)前系統(tǒng)的進(jìn)程總數(shù)。
1 running 表示當(dāng)前系統(tǒng)中有 1 個(gè)正在運(yùn)行的進(jìn)程。
269 sleeping 表示當(dāng)前系統(tǒng)中有 269 個(gè)休眠的進(jìn)程。
0 stopped 表示停止?fàn)顟B(tài)的進(jìn)程數(shù)為 0。
0 zombie 表示處于僵死狀態(tài)的進(jìn)程數(shù)為 0。
CPU 信息
第三行顯示 CPU 的使用情況:
Cpu(s): 6.5%us, 0.5%sy, 0.0%ni, 93.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
這里一共有八個(gè)字段,是我們了解 CPU 負(fù)載的主要依據(jù),下面我們逐一介紹。
us
進(jìn)程在用戶地址空間中消耗 CPU 時(shí)間的百分比。像 shell程序、各種語(yǔ)言的編譯器、數(shù)據(jù)庫(kù)應(yīng)用、web 服務(wù)器和各種桌面應(yīng)用都算是運(yùn)行在用戶地址空間的進(jìn)程。這些程序如果不是處于 idle 狀態(tài),那么絕大多數(shù)的 CPU 時(shí)間都是運(yùn)行在用戶態(tài)。
sy
進(jìn)程在內(nèi)核地址空間中消耗 CPU 時(shí)間的百分比。所有進(jìn)程要使用的系統(tǒng)資源都是由 Linux 內(nèi)核處理的。當(dāng)處于用戶態(tài)(用戶地址空間)的進(jìn)程需要使用系統(tǒng)的資源時(shí),比如需要分配一些內(nèi)存、或是執(zhí)行 IO 操作、再或者是去創(chuàng)建一個(gè)子進(jìn)程,此時(shí)就會(huì)進(jìn)入內(nèi)核態(tài)(內(nèi)核地址空間)運(yùn)行。事實(shí)上,決定進(jìn)程在下一時(shí)刻是否會(huì)被運(yùn)行的進(jìn)程調(diào)度程序就運(yùn)行在內(nèi)核態(tài)。對(duì)于操作系統(tǒng)的設(shè)計(jì)來(lái)說(shuō),消耗在內(nèi)核態(tài)的時(shí)間應(yīng)該是越少越好。在實(shí)踐中有一類典型的情況會(huì)使 sy 變大,那就是大量的 IO 操作,因此在調(diào)查 IO 相關(guān)的問題時(shí)需要著重關(guān)注它。
ni
ni 是 nice 的縮寫,可以通過 nice 值調(diào)整進(jìn)程用戶態(tài)的優(yōu)先級(jí)。這里顯示的 ni 表示調(diào)整過 nice 值的進(jìn)程消耗掉的 CPU 時(shí)間。如果系統(tǒng)中沒有進(jìn)程被調(diào)整過 nice 值,那么 ni 就顯示為 0。
id
CPU 處于 idle 狀態(tài)的百分比。一般情況下, us + ni + id 應(yīng)該接近 100%。
wa
CPU 等待磁盤 IO 操作的時(shí)間。和 CPU 的處理速度相比,磁盤 IO 操作是非常慢的。有很多這樣的操作,比如:CPU 在啟動(dòng)一個(gè)磁盤讀寫操作后,需要等待磁盤讀寫操作的結(jié)果。在磁盤讀寫操作完成前,CPU 只能處于空閑狀態(tài)。Linux 系統(tǒng)在計(jì)算系統(tǒng)平均負(fù)載時(shí)會(huì)把 CPU 等待 IO 操作的時(shí)間也計(jì)算進(jìn)去,所以在我們看到系統(tǒng)平均負(fù)載過高時(shí),可以通過 wa 來(lái)判斷系統(tǒng)的性能瓶頸是不是過多的 IO 操作造成的。