天天看點

Linux性能監控工具:top指令詳解

作者:雲計算練習生

top指令是Linux下常用的性能分析工具,能夠實時顯示系統中各個程序的資源占用狀況,類似于Windows的任務管理器

一、top參數詳解

Linux性能監控工具:top指令詳解

第一行,任務隊列資訊,同 uptime 指令的執行結果

Linux性能監控工具:top指令詳解

系統時間:09:46:50

運作時間:up 1:01 min,

目前登入使用者:2 user

負載均衡(uptime) load average: 0.00, 0.00, 0.00

average後面的三個數分别是1分鐘、5分鐘、15分鐘的負載情況。

load average資料是每隔5秒鐘檢查一次活躍的程序數,然後按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高于5的時候就表明系統在超負荷運轉了

第二行,Tasks — 任務(程序)

Linux性能監控工具:top指令詳解

總程序:101 total, 運作:1 running, 休眠:100 sleeping, 停止: 0 stopped, 僵屍程序: 0 zombie

第三行,cpu狀态資訊

Linux性能監控工具:top指令詳解

0.0%us【user space】— 使用者空間占用CPU的百分比。

0.3%sy【sysctl】— 核心空間占用CPU的百分比。

0.0%ni【】— 改變過優先級的程序占用CPU的百分比

99.7%id【idolt】— 空閑CPU百分比

0.0%wa【wait】— IO等待占用CPU的百分比

0.0%hi【Hardware IRQ】— 硬中斷占用CPU的百分比

0.0%si【Software Interrupts】— 軟中斷占用CPU的百分比

第四行,記憶體狀态

Linux性能監控工具:top指令詳解

1003020k total, 234464k used, 777824k free, 24084k buffers【緩存的記憶體量】

第五行,swap交換分區資訊

Linux性能監控工具:top指令詳解

2031612k total, 536k used, 2031076k free, 505864k cached【緩沖的交換區總量】

備注:

可用記憶體=free + buffer + cached

對于記憶體監控,在top裡我們要時刻監控第五行swap交換分區的used,如果這個數值在不斷的變化,說明核心在不斷進行記憶體和swap的資料交換,這是真正的記憶體不夠用了。

第四行中使用中的記憶體總量(used)指的是現在系統核心控制的記憶體數,

第四行中空閑記憶體總量(free)是核心還未納入其管控範圍的數量。

納入核心管理的記憶體不見得都在使用中,還包括過去使用過的現在可以被重複利用的記憶體,核心并不把這些可被重新使用的記憶體交還到free中去,是以在linux上free記憶體會越來越少,但不用為此擔心。

第六行,空行

第七行以下:各程序(任務)的狀态監控

Linux性能監控工具:top指令詳解

PID — 程序id

USER — 程序所有者

PR — 程序優先級

NI — nice值。負值表示高優先級,正值表示低優先級

VIRT — 程序使用的虛拟記憶體總量,機關kb。VIRT=SWAP+RES

RES — 程序使用的、未被換出的實體記憶體大小,機關kb。RES=CODE+DATA

SHR — 共享記憶體大小,機關kb

S —程序狀态。D=不可中斷的睡眠狀态 R=運作 S=睡眠 T=跟蹤/停止 Z=僵屍程序

%CPU — 上次更新到現在的CPU時間占用百分比

%MEM — 程序使用的實體記憶體百分比

TIME+ — 程序使用的CPU時間總計,機關1/100秒

COMMAND — 程序名稱(指令名/指令行)

詳解

VIRT:virtual memory usage 虛拟記憶體

1、程序“需要的”虛拟記憶體大小,包括程序使用的庫、代碼、資料等

2、假如程序申請100m的記憶體,但實際隻使用了10m,那麼它會增長100m,而不是實際的使用量

RES:resident memory usage 常駐記憶體

1、程序目前使用的記憶體大小,但不包括swap out

2、包含其他程序的共享

3、如果申請100m的記憶體,實際使用10m,它隻增長10m,與VIRT相反

4、關于庫占用記憶體的情況,它隻統計加載的庫檔案所占記憶體大小

SHR:shared memory 共享記憶體

1、除了自身程序的共享記憶體,也包括其他程序的共享記憶體

2、雖然程序隻使用了幾個共享庫的函數,但它包含了整個共享庫的大小

3、計算某個程序所占的實體記憶體大小公式:RES – SHR

4、swap out後,它将會降下來

DATA

1、資料占用的記憶體。如果top沒有顯示,按f鍵可以顯示出來。

2、真正的該程式要求的資料空間,是真正在運作中要使用的。

top 運作中可以通過 top 的内部指令對程序的顯示方式進行控制。内部指令如下:

s – 改變畫面更新頻率

l – 關閉或開啟第一部分第一行 top 資訊的表示

t – 關閉或開啟第一部分第二行 Tasks 和第三行 Cpus 資訊的表示

m – 關閉或開啟第一部分第四行 Mem 和 第五行 Swap 資訊的表示

N – 以 PID 的大小的順序排清單示程序清單

P – 以 CPU 占用率大小的順序排列程序清單

M – 以記憶體占用率大小的順序排列程序清單

h – 顯示幫助

n – 設定在程序清單所顯示程序的數量

q – 退出 top

s – 改變畫面更新周期

二、top使用方法

使用格式:

top [-] [d] [p] [q] [c] [C] [S] [s] [n]

參數說明:

2.1 參數d:指定每兩次螢幕資訊重新整理之間的時間間隔。當然使用者可以使用s互動指令來改變之。

Linux性能監控工具:top指令詳解

2.2 參數p:通過指定監控程序ID來僅僅監控某個程序的狀态。

檢視ssh服務是狀态

Linux性能監控工具:top指令詳解

2.3 參數s:使top指令在安全模式中運作。這将去除互動指令所帶來的潛在危險。

Linux性能監控工具:top指令詳解

2.4 參數i:使top不顯示任何閑置或者僵死程序。

Linux性能監控工具:top指令詳解

2.5 參數c:顯示整個指令行而不隻是顯示指令名。

Linux性能監控工具:top指令詳解

三、常用指令說明

Ctrl+L:擦除并且重寫螢幕

K:終止一個程序。系統将提示使用者輸入需要終止的程序PID,以及需要發送給該程序什麼樣的信号。一般的終止程序可以使用15信号;如果不能正常結束那就使用信号9強制結束該程序。預設值是信号15。在安全模式中此指令被屏蔽。

i:忽略閑置和僵死程序。這是一個開關式指令。

q:退出程式

r:重新安排一個程序的優先級别。系統提示使用者輸入需要改變的程序PID以及需要設定的程序優先級值。輸入一個正值将使優先級降低,反之則可以使該程序擁有更高的優先權。預設值是10。

S:切換到累計模式。

s:改變兩次重新整理之間的延遲時間。系統将提示使用者輸入新的時間,機關為s。如果有小數,就換算成m s。輸入0值則系統将不斷重新整理,預設值是5 s。需要注意的是如果設定太小的時間,很可能會引起不斷重新整理,進而根本來不及看清顯示的情況,而且系統負載也會大大增加。

f或者F:從目前顯示中添加或者删除項目。

o或者O:改變顯示項目的順序

l:切換顯示平均負載和啟動時間資訊。

m:切換顯示記憶體資訊。

t:切換顯示程序和CPU狀态資訊。

c:切換顯示指令名稱和完整指令行。

M:根據駐留記憶體大小進行排序。

P:根據CPU使用百分比大小進行排序。

T:根據時間/累計時間進行排序。

W:将目前設定寫入~/.toprc檔案中。

top的用法很多,更進階的用法就自己去探索了

比如 top 指令,然後按數字“1”可監控每個邏輯CPU的狀況:

Linux性能監控工具:top指令詳解

觀察上圖,伺服器有4個邏輯CPU,實際上是1個實體CPU。

如果不按1,則在top視圖裡面顯示的是所有cpu的平均值。

有不對的地方希望不吝賜教,歡迎在評論區留言,分享你的看法。