1. 程式人生 > >Linux效能分析-top命令

Linux效能分析-top命令

Top命令詳解

top命令能檢視CPU,記憶體,IO, PID等資訊。

先整體認識一下top命令的情況

 

第一排:整體執行情況與uptime命令顯示的是一樣的

top :命令名稱

10:13:25 :當前系統時間

54 days,1:53 :機器執行的時間,格式為天,時:分

2 users :當前登入使用者數,是線上登入的使用者數

load average:系統負載,定義為在特定時間間隔內執行佇列中的平均程序數。 三個數值分別為  1分鐘、5分鐘、15分鐘前到現在的平均值。 關於這三個值應該保持在一個什麼樣的狀態,效能才比較好。對於單處理器單核(如果是多CUP多核,應該除以數量在比較),一般等於1.00,表示盡全力剛剛好,超過1.00表示已經負載了。所以一般希望維持在0.7比較合理。詳細參考http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages

第二排:任務執行情況

Task:就是任務,就是程序的意思

total:程序總數

running:正在執行的程序數量

sleeping:睡眠的程序數量

stop:停止的程序數

注:stop與sleeping程序應區別,sleeping是主動放棄cpu,而stop是被動放棄cpu ,例單步跟蹤,stop(暫停)的程序是無法自己回到執行狀態的)

Zombie:殭屍程序數。In UNIX System terminology, a process that has terminated,but whose parent has not yet waited for it, is called a zombie。在UNIX 系統中,一個程序結束了,但是他的

父程序沒有等待(呼叫wait / waitpid)他, 那麼他將變成一個殭屍程序。

注:找出具體殭屍程序的方法:ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' 

第三排:CPU狀態:

us:使用者空間佔用CPU百分比

sy:核心空間佔用CPU百分比

ni:使用者程序空間內改變過優先順序的程序佔用CPU

id:百分比空閒CPU百分比

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

hi:硬中斷(Hardware IRQ)佔用CPU的百分比

si:軟中斷(Software Interrupts)佔用CPU的百分比

st:(Steal time) 是服務的另一個虛擬處理器的時候,虛擬 CPU 等待實際 CPU 的時間的百分比。

第四排CPU狀態:

total實體記憶體總量

used使用的實體記憶體總量

free:空閒實體記憶體的大小

buffers:用於記憶體緩衝區的大小(寫入的快取)

第五排:交換區的狀態

total — 交換區總量

used — 使用的交換區總量

free — 空閒交換區總量

cached — 緩衝的交換區總量(讀出的快取)

第四中使用的記憶體總量(used)指的是現在系統核心控制的記憶體數,空閒記憶體總量(free)是核心還未納入其管控範圍的數量。納入核心管理的記憶體不見得都在使用中,還包括過去使用過的現在可以被重複利用的記憶體,核心並不把這些可被重新使用的記憶體交還到free中去,因此在linux上free記憶體會越來越少,但不用為此擔心。如果出於習慣去計算可用記憶體數,這裡有個近似的計算公式:第四的free + 第四的buffers + 第五行的cached,按這個公式此臺伺服器的可用記憶體

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

接下來分別是各個程序的資訊

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 — 程序名稱(命令名/命令列)

PRI 和 NI 值,都會影響程序執行的優先順序:Priority/PRI 由 OS 核心動態調整,使用者不能調整(PRI 值越低,程序執行的優先順序越高),Nice/NI 使用者可以自己調整。相互關係:有個一般公式,PRI(new) = PRI(old) + NI。但是,PRI 是 OS 動態調整的,但是 PRI 的最終值還需要由 OS 分析決定的(雖然 NI 會影響 PRI)

其他使用技巧:

1.多U多核CPU監控

在top基本檢視中,按鍵盤數字“1”,可監控每個邏輯CPU的狀況:

2.高亮顯示當前執行程序

敲擊鍵盤“b”(開啟/關閉加亮效果),top的檢視變化如下我們發現程序id為2570的“top”程序被加亮了,top程序就是檢視第二行顯示的唯一的執行態(runing)的那個程序,可以通過敲擊“y”鍵關閉或開啟執行態程序的加亮效果。

3.程序欄位排序

預設進入top時,各程序是按照CPU的佔用量來排序的,在下圖中程序ID為28894的java程序排在第一(cpu佔用142%),程序ID為574的java程序排在第二(cpu佔用16%)。

4. 通過”shift + >”或”shift + <”可以向右或左改變排序列