top 命令主要用于查看進(jìn)程的相關(guān)信息,同時它也會提供系統(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)前時間。
up 223 days 表示系統(tǒng)最后一次啟動后總的運行時間。
5 user 表示當(dāng)前系統(tǒng)中只有一個登錄用戶。
cpu利用率 系統(tǒng)cpu利用率+用戶cpu利用率 cpu相關(guān)指標(biāo) average load ——平均負(fù)載 上一分鐘同時處于“就緒”狀態(tài)的平均進(jìn)程數(shù) 在過去的1分鐘,的平均負(fù)載 一般來說只要每個cpu的當(dāng)前活動進(jìn)程數(shù)不大于3那么系統(tǒng)的性能就是良好的,如果每個cpu的任務(wù)數(shù)大于5,那么就表示這臺機(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ù)。第二行信息是對當(dāng)前系統(tǒng)中所有任務(wù)的統(tǒng)計:
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 個正在運行的進(jìn)程。
269 sleeping 表示當(dāng)前系統(tǒng)中有 269 個休眠的進(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
這里一共有八個字段,是我們了解 CPU 負(fù)載的主要依據(jù),下面我們逐一介紹。
us
進(jìn)程在用戶地址空間中消耗 CPU 時間的百分比。像 shell程序、各種語言的編譯器、數(shù)據(jù)庫應(yīng)用、web 服務(wù)器和各種桌面應(yīng)用都算是運行在用戶地址空間的進(jìn)程。這些程序如果不是處于 idle 狀態(tài),那么絕大多數(shù)的 CPU 時間都是運行在用戶態(tài)。
sy
進(jìn)程在內(nèi)核地址空間中消耗 CPU 時間的百分比。所有進(jìn)程要使用的系統(tǒng)資源都是由 Linux 內(nèi)核處理的。當(dāng)處于用戶態(tài)(用戶地址空間)的進(jìn)程需要使用系統(tǒng)的資源時,比如需要分配一些內(nèi)存、或是執(zhí)行 IO 操作、再或者是去創(chuàng)建一個子進(jìn)程,此時就會進(jìn)入內(nèi)核態(tài)(內(nèi)核地址空間)運行。事實上,決定進(jìn)程在下一時刻是否會被運行的進(jìn)程調(diào)度程序就運行在內(nèi)核態(tài)。對于操作系統(tǒng)的設(shè)計來說,消耗在內(nèi)核態(tài)的時間應(yīng)該是越少越好。在實踐中有一類典型的情況會使 sy 變大,那就是大量的 IO 操作,因此在調(diào)查 IO 相關(guān)的問題時需要著重關(guān)注它。
ni
ni 是 nice 的縮寫,可以通過 nice 值調(diào)整進(jìn)程用戶態(tài)的優(yōu)先級。這里顯示的 ni 表示調(diào)整過 nice 值的進(jìn)程消耗掉的 CPU 時間。如果系統(tǒng)中沒有進(jìn)程被調(diào)整過 nice 值,那么 ni 就顯示為 0。
id
CPU 處于 idle 狀態(tài)的百分比。一般情況下, us + ni + id 應(yīng)該接近 100%。
wa
CPU 等待磁盤 IO 操作的時間。和 CPU 的處理速度相比,磁盤 IO 操作是非常慢的。有很多這樣的操作,比如:CPU 在啟動一個磁盤讀寫操作后,需要等待磁盤讀寫操作的結(jié)果。在磁盤讀寫操作完成前,CPU 只能處于空閑狀態(tài)。Linux 系統(tǒng)在計算系統(tǒng)平均負(fù)載時會把 CPU 等待 IO 操作的時間也計算進(jìn)去,所以在我們看到系統(tǒng)平均負(fù)載過高時,可以通過 wa 來判斷系統(tǒng)的性能瓶頸是不是過多的 IO 操作造成的。