top 命令主要用于查看進程的相關信息,同時它也會提供系統平均負載,cpu 信息和內存信息。下面的截圖展示了 top 命令默認提供的信息:

系統平均負載
top 命令輸出中的第一行是系統的平均負載,這和 uptime 命令的輸出是一樣的:

13:05:49 表示系統當前時間。
up 7 days 表示系統最后一次啟動后總的運行時間。
1 user 表示當前系統中只有一個登錄用戶。
load average: 0.01, 0.04, 0.00 表示系統的平均負載,最后的三個數字分別表示最后一分鐘的系統平均負載,最后五分鐘的系統平均負載,最后十五分鐘的系統平均負載。
小寫字母 i 可以控制是否顯示系統平均負載信息。
任務信息匯總
在 linux 系統中,一般把進程和線程統稱為任務。第二行信息是對當前系統中所有任務的統計:

Tasks:270 total 表示當前系統的進程總數。
1 running 表示當前系統中有 1 個正在運行的進程。
269 sleeping 表示當前系統中有 269 個休眠的進程。
0 stopped 表示停止狀態的進程數為 0。
0 zombie 表示處于僵死狀態的進程數為 0。
CPU 信息
第三行顯示 CPU 的使用情況:

這里一共有八個字段,是我們了解 CPU 負載的主要依據,下面我們逐一介紹。
us
進程在用戶地址空間中消耗 CPU 時間的百分比。像 shell程序、各種語言的編譯器、數據庫應用、web 服務器和各種桌面應用都算是運行在用戶地址空間的進程。這些程序如果不是處于 idle 狀態,那么絕大多數的 CPU 時間都是運行在用戶態。
sy
進程在內核地址空間中消耗 CPU 時間的百分比。所有進程要使用的系統資源都是由 Linux 內核處理的。當處于用戶態(用戶地址空間)的進程需要使用系統的資源時,比如需要分配一些內存、或是執行 IO 操作、再或者是去創建一個子進程,此時就會進入內核態(內核地址空間)運行。事實上,決定進程在下一時刻是否會被運行的進程調度程序就運行在內核態。對于操作系統的設計來說,消耗在內核態的時間應該是越少越好。在實踐中有一類典型的情況會使 sy 變大,那就是大量的 IO 操作,因此在調查 IO 相關的問題時需要著重關注它。
ni
ni 是 nice 的縮寫,可以通過 nice 值調整進程用戶態的優先級。這里顯示的 ni 表示調整過 nice 值的進程消耗掉的 CPU 時間。如果系統中沒有進程被調整過 nice 值,那么 ni 就顯示為 0。
id
CPU 處于 idle 狀態的百分比。一般情況下, us + ni + id 應該接近 100%。
wa
CPU 等待磁盤 IO 操作的時間。和 CPU 的處理速度相比,磁盤 IO 操作是非常慢的。有很多這樣的操作,比如:CPU 在啟動一個磁盤讀寫操作后,需要等待磁盤讀寫操作的結果。在磁盤讀寫操作完成前,CPU 只能處于空閑狀態。Linux 系統在計算系統平均負載時會把 CPU 等待 IO 操作的時間也計算進去,所以在我們看到系統平均負載過高時,可以通過 wa 來判斷系統的性能瓶頸是不是過多的 IO 操作造成的。
hi & si
這兩個值表示系統處理中斷消耗的時間。中斷分為硬中斷和軟中斷,hi 表示處理硬中斷消耗的時間,si 表示處理軟中斷消耗的時間。硬中斷是硬盤、網卡等硬件設備發送給 CPU 的中斷消息,當 CPU 收到中斷消息后需要進行適當的處理(消耗 CPU 時間)。軟中斷是由程序發出的中斷,最終也會執行相應的處理程序(消耗 CPU 時間)。
新聞熱點
疑難解答