引言
使用top命令,可以查看正在運行的進程和系統負載信息,包括cpu負載、內存使用、各個進程所佔系統資源等,top可以以一定頻率更新這些統計信息。下面我們來學習top命令的具體使用方法。
top命令行參數
- -b 批處理模式(batch mode),可輸出到管道、文件。默認情況下-b會一直輸出,可以用-nN指定輸出次數。
- -n N 限制輸出次數。
- -d N 刷新時間間隔。
- -p PID 監控指定進程。-H -p PID 監控指定進程和進行內線程信息。
進入top界面的各項含義
- 各行含義如下:
- top一行:從左到右依次爲當前系統時間,系統運行的時間,系統在之前1min、5min和15min內cpu的平均負載值
- Tasks一行:該行給出進程整體的統計信息,包括統計週期內進程總數、運行狀態進程數、休眠狀態進程數、停止狀態進程數和僵死狀態進程數
- Cpu(s)一行:cpu整體統計信息,包括用戶態下進程、系統態下進程佔用cpu時間比,nice值大於0的進程在用戶態下佔用cpu時間比,cpu處於idle狀態、wait狀態的時間比,以及處理硬中斷、軟中斷的時間比
- Mem一行:該行提供了內存統計信息,包括物理內存總量、已用內存、空閒內存以及用作緩衝區的內存量
- Swap一行:虛存統計信息,包括交換空間總量、已用交換區大小、空閒交換區大小以及用作緩存的交換空間大小
下半部分顯示了各個進程的運行情況,各列含義如下:
- PID: 進程pid
- USER: 拉起進程的用戶
- PR: 該列值加100爲進程優先級,若優先級小於100,則該進程爲實時(real-time)進程,否則爲普通(normal)進程,實時進程的優先級更高,更容易獲得cpu調度,以上輸出結果中,java進程優先級爲120,是普通進程,had進程優先級爲2,爲實時進程,migration 進程的優先級RT對應於0,爲最高優先級
- NI: 進程的nice優先級值,該列中,實時進程的nice值爲0,普通進程的nice值範圍爲-20~19
- VIRT: 進程所佔虛擬內存大小(默認單位kB)
- RES: 進程所佔物理內存大小(默認單位kB)
- SHR: 進程所佔共享內存大小(默認單位kB)
- S: 進程的運行狀態
- %CPU: 採樣週期內進程所佔cpu百分比
- %MEM: 採樣週期內進程所佔內存百分比
- TIME+: 進程使用的cpu時間總計
- COMMAND: 拉起進程的命令
進入top界面後的操作
按鍵 | 說明 |
---|---|
c | 顯示完整的命令名。c爲Command之意。 |
d | 修改刷新時間。d爲Display之意。 |
u | 顯示指定用戶相關進程。u爲User之意。 |
P | 按CPU使用排序。P爲Processor(處理器)之意。 |
M | 按內存使用排序。M爲Momery之意。 |
F | 排序(進入新的界面,並選擇排序的目標字段)。 |
R | 順序或逆序。 |
H | 顯示線程 |
Z | 以多色彩顯示top。 |
l/t/m | toggle,load/cpu/內存信息 |
1 | 顯示多CPU的信息(多核機器上查看每個CPU的使用率)。 |
W | 保存當前top的配置 |
參考:http://www.berlinix.com/linux/top.php
1、輸入1可以看到CPU各個核的CPU負載
Cpu0 : 1.0%us, 3.0%sy, 0.0%ni, 96.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
這裏對us,sy,ni,id,wa,hi,si,st進行分別說明:
us 列顯示了用戶模式下所花費 CPU 時間的百分比。
us的值比較高時,說明用戶進程消耗的cpu時間多,但是如果長期大於50%,需要考慮優化用戶的程序。
sy 列顯示了內核進程所花費的cpu時間的百分比。
這裏us + sy的參考值爲80%,如果us+sy 大於 80%說明可能存在CPU不足。
ni 列顯示了用戶進程空間內改變過優先級的進程佔用CPU百分比。
id 列顯示了cpu處在空閒狀態的時間百分比。
wa 列顯示了IO等待所佔用的CPU時間的百分比。
這裏wa的參考值爲30%,如果wa超過30%,說明IO等待嚴重,這可能是磁盤大量隨機訪問造成的,也可能磁盤或者磁盤訪問控制器的帶寬瓶頸造成的(主要是塊操作)。 //這個wa和vmstat中的wa是相同含義
hi 硬件中斷佔用CPU
si 軟件中斷佔用CPU
st 丟失時間佔用CPU
在後臺服務器開發中需要關注us,sy,id,wa等常用指標。
2、top輸入u,輸入用戶名,查看指定用戶的進程信息
u 輸入用戶名 查看指定用戶的進程信息(多個用戶使用同一臺機器開發時,非常有用)
3、按CPU佔用率排序
Shift+p 按CPU排序
4、按內存佔用率排序
Shift+m 按內存使用排序
5、按CPU佔用時間排序
Shift+t 按CPU用時排序
其它:
Shift+n 按PID排序
注意:
如果在命令行選項中使用了s選項,則可能其中一些命令會被屏蔽掉。