Linux命令top詳解

回家嗎發表於2020-12-11


top命令幾乎是每個程式設計師都會用到的Linux命令。這個命令用來檢視Linux系統的綜合效能,比如CPU使用情況,記憶體使用情況。這個命令能幫助我快速定位程式的效能問題。但是之前對於這個命令的使用幾乎僅限於檢視下哪個程式使用的CPU最高,哪個程式佔用的記憶體最高。對於輸出的各個引數的含義也是一知半解,更不用說top的一些高階用法了。

top輸出引數的含義

[root@VM-0-15-centos ~]# top
top - 23:02:15 up 45 days, 10:05,  1 user,  load average: 0.15, 0.05, 0.06
Tasks:  73 total,   2 running,  71 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.7 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1882752 total,    90700 free,   262008 used,  1530044 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  1434172 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                              
 8353 root      20   0  202272  41900   3128 S  0.3  2.2  68:52.39 YDService                                            
 8476 root      20   0  611528  13472   1960 S  0.3  0.7 104:09.31 barad_agent                                          

第一行表示系統的執行時間和平均負載

top - 23:02:15 up 45 days, 10:05,  1 user,  load average: 0.15, 0.05, 0.06
  • 23:02:15 15:34:12 表示系統的當前時間;
  • up 45 days 表示這個Linux系統已經啟動45天
  • 1 user 表示當前有兩個使用者登陸系統
  • load average: 0.15, 0.05, 0.06 最近1、5和15分鐘內的平均負載 現實生產中,不會讓負載數值/CPU核數任意接近1的。一般當這個值達到0.8或者0.9時就需要分析分析原因了

第二行表示任務資訊

Tasks:  73 total,   2 running,  71 sleeping,   0 stopped,   0 zombie

Tasks — 任務(程式),系統現在共有73個程式,其中處於執行中的有2個,71個在休眠(sleep),stoped狀態的有0個,zombie狀態(殭屍)的有0個。
按t 可以關閉顯示這個任務資訊,再按下 t 可以開啟這個任務資訊

第三行表示CPU狀態

%Cpu(s):  0.3 us,  0.7 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
  • us 列顯示了使用者模式下所花費 CPU 時間的百分比。us的值比較高時,說明使用者程式消耗的 CPU 時間多,但是如果長期大於50%,需要考慮優化使用者的程式
  • sy 列顯示了核心程式所花費的 CPU 時間的百分比。這裡us + sy的參考值為80%,如果us+sy 大於 80%說明可能存在CPU不足
  • ni 列顯示了使用者程式空間內改變過優先順序的程式佔用CPU百分比。
  • id 列顯示了 CPU 處在空閒狀態的時間百分比。
  • wa 列顯示了IO等待所佔用的CPU時間的百分比。這裡 wa 的參考值為30%,如果wa超過30%,說明IO等待嚴重,這可能是磁碟大量隨機訪問造成的,也可能磁碟或者磁碟訪問控制器的頻寬瓶頸造成的(主要是塊操作)。 這個wa和vmstat中的wa是相同含義。
  • hi 硬體中斷佔用CPU
  • si 軟體中斷佔用CPU
  • st 丟失時間佔用CPU
    在後臺開發中需要關注us,sy,id,wa等常用指標

第四、五行記憶體使用情況#

KiB Mem :  1882752 total,    90700 free,   262008 used,  1530044 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  1434172 avail Mem 

第六行以下 程式的狀態監控

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                              
 8353 root      20   0  202272  41900   3128 S  0.3  2.2  68:52.39 YDService                                            
 8476 root      20   0  611528  13472   1960 S  0.3  0.7 104:09.31 barad_agent  
  • PID:程式ID,程式的唯一識別符號
  • USER:程式所有者的實際使用者名稱。
  • PR:程式的排程優先順序。這個欄位的一些值是’rt’。這意味這這些程式執行在實時態。
  • NI:程式的nice值(優先順序)。越小的值意味著越高的優先順序。負值表示高優先順序,正值表示低優先順序
  • VIRT:程式使用的虛擬記憶體。程式使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES
  • RES:駐留記憶體大小。駐留記憶體是任務使用的非交換實體記憶體大小。程式使用的、未被換出的實體記憶體大小,單位kb。RES=CODE+DATA
  • SHR:SHR是程式使用的共享記憶體。共享記憶體大小,單位kb
  • S:這個是程式的狀態。它有以下不同的值:
  • D - 不可中斷的睡眠態。
  • R – 執行態
  • S – 睡眠態
  • T – 被跟蹤或已停止
  • Z – 殭屍態
  • %CPU:自從上一次更新時到現在任務所使用的CPU時間百分比。
  • %MEM:程式使用的可用實體記憶體百分比。
  • TIME+:任務啟動後到現在所使用的全部CPU時間,精確到百分之一秒。
  • COMMAND:執行程式所使用的命令。程式名稱(命令名/命令列)

還有許多在預設情況下不會顯示的輸出,它們可以顯示程式的頁錯誤、有效組和組ID和其他更多的資訊。 按下 f
鍵盤可以調出更多顯示選項。按esc鍵返回top顯示頁。

top的一些命令列引數

  • -b:批處理模式(batch mode),可輸出到管道、檔案。預設情況下-b會一直輸出
  • -n N:限制輸出次數,可以用-nN指定輸出次數。 top -n 5輸出5次
  • -d N:重新整理時間間隔。
  • -p PID:監控指定程式。
  • -Hp PID:監控指定程式和進行內執行緒資訊。(比較常用)

top一些互動鍵的說明

進入top頁面後,我們可以進行一些互動操作。下面是一些互動鍵的說明:

c 顯示完整的命令名。c為Command之意。
d 修改重新整理時間。d為Display之意。
u 顯示指定使用者相關程式。u為User之意。
P 按CPU使用排序。P為Processor(處理器)之意。
M 按記憶體使用排序。M為Momery之意。
F 排序(進入新的介面,並選擇排序的目標欄位)。
R 順序或逆序。
H 顯示執行緒
Z 以多色彩顯示top。

摘自:https://www.cnblogs.com/54chensongxia/p/12330592.html