Linux性能分析工具top命令详解
top命令是linux下常用的性能分析工具,能夠實時的顯示系統中各個進程的資源占用情況,常用于服務端性能分析。
top命令說明:
top命令的結果分為兩部分:
?
統計信息:前五行是系統的整體統計信息。
進程信息:統計信息下方類似表格的區域顯示的是進程的詳細信息,默認5秒刷新一次。
?
統計信息說明:
第1行:top任務隊列信息(系統運行狀態及平均負載),與uptime命令結果相同。
? ? ? ? ? ? ?第一段:系統當前時間,例如:10:57:04
? ? ? ? ? ? ?第二段:系統運行時間,未重啟的時間,時間越長系統越穩定。例如:up 778 days, 17:53;格式:up xx ? ? ? ? ? ? ? ? ? ?days, HH:mm
? ? ? ? ? ? ?第三段:登錄用戶數,例如:3 users,表示當前有3個用戶登錄。
? ? ? ? ? ? ?第四段:系統負載,即任務隊列的平均長度,3個數值分別統計最近1、5、15分鐘的系統平均負載。
? ? ? ? ? ? ? ? ? ?系統平均負載:單核CPU情況下,0.00表示沒有任何負載,1.00表示剛好滿負荷,超過1表示超負 ? ? ? ? ? ? ? ? ? ?荷,理想值是0.7。
? ? ? ? ? ? ? ? ? ?多核CPU負載:CPU核數*0.7理想值=理想負荷,例如:8核CPU負載不超過5.6表示沒有出現高負 ? ? ? ? ? ? ? ? ? ? 載。
第2行:Tasks任務進程相關信息
? ? ? ? ? ? 第一段:進程總數,405 total表示總共運行405個進程。
? ? ? ? ? ? 第二段:正在運行的進程數,例如:1 running表示有一個正在運行的進程。
? ? ? ? ? ? 第三段:正在睡眠的進程數,例如:404 sleeping。
? ? ? ? ? ? 第四段:停止的進程數,例如:0 stopped。
? ? ? ? ? ? 第五段:僵尸進程數,例如:0 zombile。
第3行:CPU相關信息,如果是多核CPU,按數字1可以顯示多核CPU信息,此時第一段將轉換為CPU核數,數字1可以來回切換。
? ? ? ? ? ? 第一段:us用戶空間占用CPU百分比,例如:Cpu(s):5.8%us。
? ? ? ? ? ? 第二段:sy內核空間占用CPU百分比,例如:1.2%sy。
? ? ? ? ? ? 第三段:ni用戶進程空間內改變過優先級的進程占用的百分比,例如:0.00%ni。
? ? ? ? ? ? 第四段:id空閑CPU百分比,例如:94.2%id。
? ? ? ? ? ? 第五段:wa等待輸入輸出的CPU時間百分比,例如:0.00%wa。
? ? ? ? ? ? 第六段:hi CPU服務于硬件中斷所耗費的時間總額,例如:0.0%hi。
? ? ? ? ? ? 第七段:si CPU服務軟中斷所耗費的時間總額,例如:0.0%si。
? ? ? ? ? ? 第八段:st Steal time 虛擬機被hypervisor偷去的CPU時間(如果當前處于一個hypervisor下的vm,實際上 ? ? ? ? ? ? ? ? ?hypervisor也是要消耗一部分CPU處理時間的)。
第4行:Mem 內存相關信息(Mem: ?32815228k total, 32146340k used, ? 668888k free, ? ?73948k buffers)
? ? ? ? ? ? 第一段:物理內存總量,例如:?32815228k total。
? ? ? ? ? ? 第二段:使用的物理內存總量,例如:Mem: ?32815228k total。
? ? ? ? ? ? 第三段:空閑內存總量,例如:668888k free。
? ? ? ? ? ? 第四段:用作內核緩存的內存量,例如:73948k buffers。
第5行:Swap 交換分區相關信息(Swap: ?8524272k total, ?7075992k used, ?1448280k free, ?7757408k cached)
? ? ? ? ? ? 第一段:交換區總量,例如:Swap: ?8524272k total。
? ? ? ? ? ? 第二段:使用交換區總量,例如:7075992k used。
? ? ? ? ? ? 第三段:空閑交換區總量,例如:1448280k free。
? ? ? ? ? ? 第四段:緩沖的交換區總量,例如:?7757408k cached。
?
進程信息說明:
在top命令中按f可以查看顯示的列信息,按對應的字母來開啟或者關閉列,大寫字母表示開啟,小寫字母表示關閉,帶*號的標識默認列。
? ? ?* A: PID ? ? ? ?= Process Id(進程ID)
? ? ?* E: USER ? ? ? = User Name(進程所有者的用戶名)
? ? ?* H: PR ? ? ? ? = Priority(優先級)
? ? ?* I: NI ? ? ? ? = Nice value(nice值,負值表示高優先級,正值表示低優先級)
? ? ?* O: VIRT ? ? ? = Virtual Image (kb)(進程使用的虛擬內存總量,單位kb,VIRT=SWAP+RES)
? ? ?* Q: RES ? ? ? ?= Resident size (kb)(進程使用的,未被換出的物理內存大小,單位kb,RES=CODE+DATA)
? ? ?* T: SHR ? ? ? ?= Shared Mem size (kb)(共享內存大小,單位kb)
? ? ?* W: S ? ? ? ? ?= Process Status(進程狀態,D=不可終端的進程狀態,R=運行,S=睡眠,T=跟蹤/停止,Z=僵尸 ? ? ? ? ? ? ? ? ? ? 進程)
? ? ?* K: %CPU ? ? ? = CPU usage(上次更新到現在的CPU時間占用百分比)
? ? ?* N: %MEM ? ? ? = Memory usage (RES)(進程使用的物理內存占用百分比)
? ? ?* M: TIME+ ? ? ?= CPU Time, hundredths(進程使用的CPU時間占比,單位1/100秒)
? ? ?b: PPID ? ? ? = Parent Process Pid(父進程ID)
? ?? c: RUSER ? ? ?= Real user name
? ? ?d: UID ? ? ? ?= User Id(進程的所有者的用戶ID)
? ?? f: GROUP ? ? ?= Group Name(進程所有者的組名)
? ?? g: TTY ? ? ? ?= Controlling Tty(啟動進程的終端名,不是從終端啟動的進程則顯示為?)
? ?? j: P ? ? ? ? ?= Last used cpu (SMP)(最后使用的CPU,僅在多CPU環境下有意義)
? ?? p: SWAP ? ? ? = Swapped size (kb)(進程使用的虛擬內存中,被換出的大小,單位kb)
? ?? l: TIME ? ? ? = CPU Time(進程使用的CPU時間總計,單位秒)
? ?? r: CODE ? ? ? = Code size (kb)(可執行代碼占用物理內存大小,單位kb)
? ?? s: DATA ? ? ? = Data+Stack size (kb)(可執行代碼以外的部分(數據段+棧)占用的物理內存大小,單位kb)
? ?? u: nFLT ? ? ? = Page Fault count(頁面錯誤次數)
? ?? v: nDRT ? ? ? = Dirty Pages count(最后一次寫入到現在,被修改過的頁面數)
? ? ?y: WCHAN ? ? ?= Sleeping in Function(若該進程在睡眠,則顯示睡眠中的系統函數名)
? ? ?z: Flags ? ? ?= Task Flags <sched.h>(任務標志)
? ? ?* X: COMMAND ? ?= Command name/line(命令名/命令行)
?
top命令選項
? ?-b:以批處理模式操作;
? ?-c:顯示完整的治命令;
? ?-d:屏幕刷新間隔時間;
? ?-I:忽略失效過程;
? ?-s:保密模式;
? ?-S:累積模式;
? ?-i<時間>:設置間隔時間;
? ?-u<用戶名>:指定用戶名;
? ?-p<進程號>:指定進程;
? ?-n<次數>:循環顯示的次數。
?
top命令交互
常用交互操作?
基礎操作?
? ?1:顯示CPU詳細信息,每核顯示一行
? ? ?d / s :修改刷新頻率,單位為秒
? ? ?h:可顯示幫助界面
? ? ?n:指定進程列表顯示行數,默認為滿屏行數
? ? ?q:退出top
面板隱藏顯示?
? ? ?l:隱藏/顯示第1行負載信息;
? ? ?t:隱藏/顯示第2~3行CPU信息;
? ? ?m:隱藏/顯示第4~5行內存信息;
進程列表排序?
? ? ?M:根據駐留內存大小進行排序;
? ? ?P:根據CPU使用百分比大小進行排序;
? ? ?T:根據時間/累計時間進行排序;
詳細交互指令:h / ? 可顯示幫助界面,原始為英文版,簡單翻譯如下:
Help for Interactive Commands - procps version 3.2.8
Window 1:Def: Cumulative mode Off. ?System: Delay 3.0 secs; Secure mode Off.
? Z,B ? ? ? Global: 'Z' change color mappings; 'B' disable/enable bold
? ? ? ? ? ? Z:修改顏色配置;B:關閉/開啟粗體
? l,t,m ? ? Toggle Summaries: 'l' load avg; 't' task/cpu stats; 'm' mem info
? ? ? ? ? ? l:隱藏/顯示第1行負載信息;t:隱藏/顯示第2~3行CPU信息;m:隱藏/顯示第4~5行內存信息;
? 1,I ? ? ? Toggle SMP view: '1' single/separate states; 'I' Irix/Solaris mode
? ? ? ? ? ? 1:單行/多行顯示CPU信息;I:Irix/Solaris模式切換
? f,o ? ? . Fields/Columns: 'f' add or remove; 'o' change display order
? ? ? ? ? ? f:列顯示控制;o:列排序控制,按字母進行調整
? F or O ?. Select sort field ?選擇排序列
? <,> ? ? . Move sort field: '<' next col left; '>' next col right 上下移動內容
? R,H ? ? . Toggle: 'R' normal/reverse sort; 'H' show threads
? ? ? ? ? ? R:內容排序;H:顯示線程
? c,i,S ? . Toggle: 'c' cmd name/line; 'i' idle tasks; 'S' cumulative time
? ? ? ? ? ? c:COMMAND列命令名稱與完整命令行路徑切換;i:忽略閑置和僵死進程開關;S:累計模式切換
? x,y ? ? . Toggle highlights: 'x' sort field; 'y' running tasks
? ? ? ? ? ? x:列排序;y:運行任務
? z,b ? ? . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y')
? ? ? ? ? ? z:顏色模式;b:粗體開關 僅適用于x,y模式中
? u ? ? ? . Show specific user only 按用戶進行過濾,當輸入錯誤可按Ctrl + Backspace進行刪除
? n or # ?. Set maximum tasks displayed 設置進程最大顯示條數
? k,r ? ? ? Manipulate tasks: 'k' kill; 'r' renice
? ? ? ? ? ? k:終止一個進程;r:重新設置一個進程的優先級別
? d or s ? ?Set update interval ?改變兩次刷新之間的延遲時間(單位為s),如果有小數,就換算成ms。輸入0值則系統將不斷刷新,默認值是5s;
? W ? ? ? ? Write configuration file 將當前設置寫入~/.toprc文件中
? q ? ? ? ? Quit ? ? ? 退出
? ? ? ? ? ( commands shown with '.' require a visible task display window )
? ? ? ? ? ? 注意:帶.的命令需要一個可見的任務顯示窗口
Press 'h' or '?' for help with Windows, any other key to continue
總結
以上是生活随笔為你收集整理的Linux性能分析工具top命令详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 山西财经大学计算机考研资料汇总
- 下一篇: fpga嵌入linux系统,基于FPGA