回覆列表
-
1 # java架構設計
-
2 # 粒子菌
top命令是Linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況,類似於Windows的任務管理器。
top顯示系統當前的程序和其他狀況,是一個動態顯示過程,即可以透過使用者按鍵來不斷重新整理當前狀態.如果在前臺執行該命令,它將獨佔前臺,直到使用者 終止該程式為止. 比較準確的說,top命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最“敏感”的任務列表.該命令可以按CPU使用.記憶體使用和執行時間 對任務進行排序;而且該命令的很多特性都可以透過互動式命令或者在個人定製檔案中進行設定。
在linux系統中,top命令可謂是分析系統性能最方便的工具,而且top還是個互動式工具;透過top命令可以清楚地瞭解到正在執行的程序資訊包括程序ID,記憶體佔用率,CPU佔用率等。其實就跟window的任務管理器類似。
執行top命令的結果如下:
第一行是任務佇列資訊,跟 uptime 命令的執行結果類同,具體引數說明如下:
19:40:19 — 指當前系統時間up 35 days, 20:32 — 表示系統已經運行了35天20小時32分鐘(是指在這期間系統沒有重新啟動過,持續執行)1 users — 當前有1個使用者登入系統load average: 0.00, 0.00, 0.00 — load average後面的三個數分別是1分鐘、5分鐘、15分鐘的負載情況。load average資料是每隔5秒鐘檢查一次活躍的程序數,然後按特定演算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。第二行,Tasks — 任務(程序),具體資訊說明如下:
系統現在共有81個程序,其中處於執行中的有1個,80個在休眠(sleep),stoped狀態的有0個,zombie狀態(殭屍)的有0個,要特別留意zombie的程序哦。第三行,cpu狀態資訊,具體屬性說明如下:
0.0%us — 使用者空間佔用CPU的百分比。0.0%sy — 核心空間佔用CPU的百分比。0.0%ni — 改變過優先順序的程序佔用CPU的百分比100.0%id — 空閒CPU百分比0.0%wa — IO等待佔用CPU的百分比0.0%hi — 硬中斷(Hardware IRQ)佔用CPU的百分比0.0%si — 軟中斷(Software Interrupts)佔用CPU的百分比0.0%st — 這個我也不知道……第四行, Mem記憶體狀態,具體資訊說明如下:
1029828k total — 物理記憶體總量(1GB)804628k used — 使用中的記憶體總量(767M)228200k free — 空閒記憶體總量(217M)167208k buffers — 快取的記憶體量(159M)第五行,swap交換分割槽資訊,具體資訊說明如下:
0k total — 交換區總量(0K)0k used — 使用的交換區總量(0K)0k free — 空閒交換區總量(0K)401672k cached — 緩衝的交換區總量(383M)第六行,空行。
第七行以下:各程序(任務)的狀態監控,列資訊說明如下:
PID — 程序idUSER — 程序所有者PR — 程序優先順序NI — nice值。負值表示高優先順序,正值表示低優先順序VIRT — 程序使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RESRES — 程序使用的、未被換出的物理記憶體大小,單位kb。RES=CODE+DATASHR — 共享記憶體大小,單位kbS — 程序狀態。D=不可中斷的睡眠狀態 R=執行 S=睡眠 T=跟蹤/停止 Z=殭屍程序%CPU — 上次更新到現在的CPU時間佔用百分比%MEM — 程序使用的物理記憶體百分比TIME+ — 程序佔用的CPU時間總計,單位1/100秒COMMAND — 程序名稱(命令名/命令列)top 命令引數:
-b 批處理-c 顯示完整的 COMMAND-I 忽略失效過程-s 保密模式-S 累積模式-i<時間> 設定間隔時間-u<使用者名稱> 指定使用者名稱-p<程序號> 指定程序-n<次數> 迴圈顯示的次數top 的互動命令(在top命令執行過程中輸入以下命令即可):
q:退出程式。h或者? :顯示幫助畫面,給出一些簡短的命令總結說明。k :終止一個程序。系統將提示使用者輸入需要終止的程序PID,以及需要傳送給該程序什麼樣的訊號。一般的終止程序可以使用15訊號;如果不能正常結束那就使用訊號9強制結束該程序。預設值是訊號15。在安全模式中此命令被遮蔽。i:忽略閒置和殭屍程序。這是一個開關式命令。M:根據駐留記憶體大小進行排序。P:根據CPU使用百分比大小進行排序。T:根據時間/累計時間進行排序。W:將當前設定寫入~/.toprc檔案中。這是寫top配置檔案的推薦方法。r:重新安排一個程序的優先級別。系統提示使用者輸入需要改變的程序PID以及需要設定的程序優先順序值。輸入一個正值將使優先順序降低,反之則可以使該程序擁有更高的優先權。預設值是10。l:切換顯示平均負載和啟動時間資訊。即顯示影藏第一行m:切換顯示記憶體資訊。即顯示影藏記憶體行t:切換顯示程序和CPU狀態資訊。即顯示影藏CPU行c:切換顯示命令名稱和完整命令列。 顯示完整的命令。 這個功能很有用。S:切換到累計模式。s:改變兩次重新整理之間的延遲時間。系統將提示使用者輸入新的時間,單位為s。如果有小數,就換算成ms。輸入0值則系統將不斷重新整理,預設值是5s。需要注意的是如果設定太小的時間,很可能會引起不斷重新整理,從而根本來不及看清顯示的情況,而且系統負載也會大大增加。f或者F:從當前顯示中新增或者刪除專案。o或者O:改變顯示專案的順序。
top命令是linux系統中比較常用的一個命令了,通常用來監控伺服器整體的執行效能,我們可以透過top命令動態輸出的資料來判斷當前系統的健康狀況,包括系統負載、CPU佔比、記憶體使用率等資料。
那麼要想搞清楚top命令如何監控Linux系統性能的前提是我們需要知道top命令輸出的各項資料的意思,根據這些資料來做下一步的判斷。
我們先來看top命令的正常結果輸出,如下圖所示:
我們可以把top命令輸出分為圖中紅色線框中的兩大部分。下面我們挨個講解這兩部分都是什麼意思,以便我們可以瞭解每一個引數以及他對應的資料值是否健康。
大家可以把Linux系統想象成一個去醫院體檢的人,而top輸出的就是這份體檢報告,我們需要根據這份體檢報告來判斷這個人的各項引數指標是否屬於正常範圍值,也就是這個人是否健康。
load average這個引數代表的是Linux系統的平均負載,後面三個引數的值代表的是系統一分鐘、五分鐘、十五分鐘三個時間段的平均負載,數字越大說明伺服器的壓力越大。
那麼到底多少是屬於健康範圍值之內的呢?根據你的CPU核數來定,比如你是2核的,那麼健康值就是0~2,四核的就是0~4。因此大家可以根據這個來判斷Linux系統的當前負載。
Tasks可以看到總共80個引數,其中正在執行的有1個,休眠中的有79個,0個停止的程序,0個殭屍程序。
這塊的資料基本上沒什麼太大的異常,基本上同時執行的任務數肯定很少,其他的都在等待,沒有停止的程序和殭屍程序就好。
CPU這塊就是CPU的詳細資訊了,各個欄位解釋如下:
0.5 us:使用者空間佔用CPU百分比
0.2 sy:核心空間佔用CPU百分比
0.0 ni:使用者程序空間內改變過優先順序的程序佔用CPU百分比
99.3 id:空閒CPU百分比
0.0 wa:等待輸入輸出的CPU時間百分比
0.0%hi:硬體CPU中斷佔用百分比
0.0%si:軟中斷佔用百分比
0.0%st:虛擬機器佔用百分比
這塊資料還是比較明顯的,空閒CPU佔比99.3%,所以系統壓力還是很小的,當然你的系統也是浪費不少資源了。
記憶體KiB記憶體:總共3881688 kb,空閒20032 kb,已使用1536684 kb,緩衝區2144772,那麼大家知道可用記憶體是多少嗎?可用記憶體=空閒記憶體+緩衝區記憶體。
KiB交換區:交換區總量0,空閒0,已使用0,緩衝區2076008,大家要注意的一點就是緩衝區不要有被使用,否則系統記憶體屬於不夠用的狀態。
程序區程序區代表的是當前系統正在執行的程序的列表,看這個列表的前提是你需要搞清楚表頭的每一列代表的意思。
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:執行該程序的命令
知道這些欄位的意思後,大家就可以檢視這個列表裡各個程序的情況了,重點關注的引數就是當前程序的CPU佔比以及吃了多少記憶體。
以上就是我對“如何根據Top命令檢視Linux系統性能”問題的回答了,實際工作過程中我們還需要結合其他命令和Top命令一起更深一步診斷Linux系統的執行情況。