Linux top 命令基礎用法和指標詳解

top

Linux top命令用於實時顯示 process 的動態。

參數說明:

  • d : 改變顯示的更新速度,或是在交談式指令列( interactive command)按 s
  • q : 沒有任何延遲的顯示速度,如果使用者是有 superuser 的權限,則 top 將會以最高的優先序執行
  • c : 切換顯示模式,共有兩種模式,一是隻顯示執行檔的名稱,另一種是顯示完整的路徑與名稱S : 累積模式,會將己完成或消失的子行程 (
    dead child process ) 的 CPU time 累積起來
  • s : 安全模式,將交談式指令取消, 避免潛在的危機
  • i : 不顯示任何閒置 (idle) 或無用 (zombie) 的行程
  • n : 更新的次數,完成後將會退出 top
  • b : 批次檔模式,搭配 “n” 參數一起使用,可以用來將 top 的結果輸出到檔案內

常見用法

顯示更新十次後退出

top -n 10

顯示特定的進程信息

top -p {pid_id}

選擇展示top的常用指標

進入top頁面,按f鍵
在這裏插入圖片描述

指標詳解

load average:顯示的是最近1分鐘、5分鐘和15分鐘的系統平均負載,即任務隊列的平均長度。
監控標準:單個CPU的平均負載= load average / CPU核心數

  • 單個CPU的平均負載在0.7的上下時,應該考慮就去花時間調查原因。
  • 系統負載長期徘徊於 1.00,那麼就應該馬上解決這個問題
    Tasks: 29 total 進程總數爲29
    1 running 正在運行的進程數

28 sleeping 睡眠的進程數

0 stopped 停止的進程數

0 zombie 殭屍進程數

Cpu(s):0.3% us 用戶空間佔用CPU百分比

1.0% sy 內核空間佔用CPU百分比

0.0% ni 用戶進程空間內改變過優先級的進程佔用CPU百分比

98.7% id 空閒CPU百分比

0.0% wa 等待輸入輸出的CPU時間百分比

0.0% hi 硬件中斷

0.0% si 軟件中斷
內存指標
Mem表示具體的物理內存
swap 交換區總量

拓展延伸: 交換空間(swap space)# swap space 是磁盤上的一塊區域,可以是一個分區,也可以是一個文件。所以具體的實現可以是
swap 分區也可以是 swap
文件。當系統物理內存喫緊時(所謂的喫緊,應該是指當釋放了Cache和Buffer的內存,內存還是不夠用~),Linux
會將內存中不常訪問的數據保存到 swap 上,這樣系統就有更多的物理內存爲各個進程服務,而當系統需要訪問 swap 上存儲的內容時,再將
swap
上的數據加載到內存中,這就是常說的換出和換入。交換空間可以在一定程度上緩解內存不足的情況,但是它需要讀寫磁盤數據,所以性能不是很高。

現在的機器一般都不太缺內存,如果系統默認還是使用了 swap
是不是會拖累系統的性能?理論上是的,但實際上可能性並不是很大。並且內核提供了一個叫做 swappiness
的參數,用於配置需要將內存中不常用的數據移到 swap 中去的緊迫程度。這個參數的取值範圍是 0~100,0
告訴內核儘可能的不要將內存數據移到 swap 中,也即只有在迫不得已的情況下才這麼做,而 100
告訴內核只要有可能,儘量的將內存中不常訪問的數據移到 swap 中。在 ubuntu 系統中,swappiness 的默認值是
60。如果我們覺着內存充足,可以在 /etc/sysctl.conf 文件中設置 swappiness:
vm.swappiness=10
如果系統的內存不足,則需要根據物理內存的大小來設置交換空間的大小。

內存統計的維度的含義如下:

total:總計物理內存的大小。
used:已使用的物理內存的大小。
free:可用物理內存有多少。
shared:多個進程共享的內存總額。
buffers:寫入磁盤內存緩衝區的大小(經常進行磁盤IO的效率比較低,所以先將要寫入磁盤的文件進行一定數量的緩衝,等緩衝數據到達一定大小是一次性寫進磁盤,提升效率)
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 任務標誌,參考 sched.h
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章