TOP是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態.如果在前臺執行該命令,它將獨佔前臺,直到用戶終止該程序爲止.比較準確的說,top命令提供了實時的對系統處理器的狀態監視.
下面是使用top命令來進行性能檢測的截圖:
各參數含義
一、top前5行統計信息
第1行: top - 05:43:27 up 4:52, 2 users, load average: 0.58, 0.41, 0.30
第1行是任務隊列信息,其參數如下:
內容 | 含義 |
---|---|
05:43:27 | 表示當前時間 |
up 4:52 | 系統運行時間 格式爲時:分 |
2 users | 當前登錄用戶數 |
load average: 0.58, 0.41, 0.30 | 系統負載,即任務隊列的平均長度。 三個數值分別爲 1分鐘、5分鐘、15分鐘前到現在的平均值。 |
load average: 如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。
第2行: Tasks: 159 total, 1 running, 158 sleeping, 0 stopped, 0 zombie
第3行: %Cpu(s): 37.0 us, 3.7 sy, 0.0 ni, 59.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
第2、3行爲進程和CPU的信息
當有多個CPU時,這些內容可能會超過兩行,其參數如下:
內容 | 含義 |
---|---|
159 total | 進程總數 |
1 running | 正在運行的進程數 |
158 sleeping | 睡眠的進程數 |
0 stopped | 停止的進程數 |
0 zombie | 殭屍進程數 |
37.0 us | 用戶空間佔用CPU百分比 |
3.7 sy | 內核空間佔用CPU百分比 |
0.0 ni | 用戶進程空間內改變過優先級的進程佔用CPU百分比 |
59.3 id | 空閒CPU百分比 |
0.0 wa | 等待輸入輸出的CPU時間百分比 |
0.0 hi | 硬中斷(Hardware IRQ)佔用CPU的百分比,CPU服務於硬中斷所耗費的時間總額 |
0.0 si、0.0 st | CPU服務於軟中斷所耗費的時間總額、Steal Time |
第4行: KiB Mem: 1530752 total, 1481968 used, 48784 free, 70988 buffers
第5行: KiB Swap: 3905532 total, 267544 used, 3637988 free. 617312 cached Mem
第4、5行爲內存信息
其參數如下:
內容 | 含義 |
---|---|
KiB Mem: 1530752 total | 物理內存總量 |
1481968 used | 使用的物理內存總量 |
48784 free | 空閒內存總量 |
70988 buffers | 用作內核緩存的內存量 |
KiB Swap: 3905532 total | 交換區總量 |
267544 used | 使用的交換區總量 |
3637988 free | 空閒交換區總量 |
617312 cached Mem | 緩衝的交換區總量。 |
上述最後提到的緩衝的交換區總量,這裏解釋一下,所謂緩衝的交換區總量,即內存中的內容被換出到交換區,而後又被換入到內存,但使用過的交換區尚未被覆蓋,該數值即爲這些內容已存在於內存中的交換區的大小。相應的內存再次被換出時可不必再對交換區寫入。
計算可用內存數有一個近似的公式:
第四行的free + 第四行的buffers + 第五行的cached
二、進程信息
列名 | 含義 |
---|---|
PID | 進程id |
PPID | 父進程id |
RUSER | Real user name |
UID | 進程所有者的用戶id |
USER | 進程所有者的用戶名 |
GROUP | 進程所有者的組名 |
TTY | 啓動進程的終端名。不是從終端啓動的進程則顯示爲 ? |
PR | 優先級 |
NI | nice值。負值表示高優先級,正值表示低優先級 |
P | 最後使用的CPU,僅在多CPU環境下有意義 |
%CPU | 上次更新到現在的CPU時間佔用百分比 |
TIME | 進程使用的CPU時間總計,單位秒 |
TIME+ | 進程使用的CPU時間總計,單位1/100秒 |
%MEM | 進程使用的物理內存百分比 |
VIRT | 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES |
SWAP | 進程使用的虛擬內存中,被換出的大小,單位kb |
RES | 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA |
CODE | 可執行代碼佔用的物理內存大小,單位kb |
DATA | 可執行代碼以外的部分(數據段+棧)佔用的物理內存大小,單位kb |
SHR | 共享內存大小,單位kb |
nFLT | 頁面錯誤次數 |
nDRT | 最後一次寫入到現在,被修改過的頁面數。 |
S | 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=殭屍進程 |
COMMAND | 命令名/命令行 |
WCHAN | 若該進程在睡眠,則顯示睡眠中的系統函數名 |
Flags | 任務標誌 |
可以通過下面的快捷鍵來更改顯示內容:
更改顯示內容通過 f 鍵可以選擇顯示的內容(按 f 鍵之後會顯示列的列表,按 a-z 即可顯示或隱藏對應的列,最後按回車鍵確定)
按 o 鍵可以改變列的顯示順序(按小寫的 a-z 可以將相應的列向右移動,而大寫的 A-Z 可以將相應的列向左移動,最後按回車鍵確定)
按大寫的 F 或 O 鍵,然後按 a-z 可以將進程按照相應的列進行排序,而大寫的 R 鍵可以將當前的排序倒轉.
三、 使用技巧
1.top命令默認值顯示前面一部分的進程,若是想要查看全部的進程信息,則需要使用命令:top -ab -n 1
,在這個命令中,a表示按內存倒序排列,b表示將所有列輸出,n表示只執行一次。
2.在使用top -ab -n 1
將所有進程信息輸出之後,可以使用AWK等類似工具統計信息,例如:統計出COMMAND爲httpd的所有進程佔用的內存。
3.也可以使用命令top -an -n 1 | grep httpd
,查看所有httpd的進程信息,如下圖:
top // 每隔5秒顯式所有進程的資源佔用情況
top -d 2 // 每隔2秒顯式所有進程的資源佔用情況
top -c // 每隔5秒顯式進程的資源佔用情況,並顯示進程的命令行參數(默認只有進程名)
top -p 12345 -p 6789// 每隔5秒顯示pid是12345和pid是6789的兩個進程的資源佔用情況
top -d 2 -c -p 123456 // 每隔2秒顯示pid是12345的進程的資源使用情況,並顯式該進程啓動的命令行參數