Linux-cpu分析-top

一. 前言
我們都知道windows下對各個運行的任務,要通過任務管理器來管理和查看。
那麼在linux下呢?
經常用到的系統性能分析命令:Top [顯示當前系統正在執行的進程的相關信息,包括進程ID、內存佔用率、CPU佔用率等]
它實時動態的進行查看系統中各個進程資源佔用情況。
該命令可以按 [ CPU使用/內存使用 ]對任務進行排序

二. 詳細參數



特別的,top命令的前五行都是一個系統的基本信息情況,這裏不做過多的解釋,上邊圖中都有了。
這裏着重說一下第四行內存參數,free空閒內存總量。
納入內核管理的內存不見得都在使用中,還包括過去使用過的現在可以被重複利用的內存,內核並不把這些可被重新使用的內存交還到free中去,因此在linux上free內存會越來越少,但不用爲此擔心

如果出於習慣去計算可用內存數,這裏有個近似的計算公式:第四行的free + 第四行的buffers + 第五行的cached

對於內存監控,在top裏我們要時刻監控第五行swap交換分區的used,如果這個數值在不斷的變化,說明內核在不斷進行內存和swap的數據交換,這是真正的內存不夠用了


下邊,展開敘述對上邊截圖中大部分的一個進程分析,即【第七行1以下的東西】~

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


常用操作:
1.按 【 1 】 鍵,效果:展開每個cpu使用情況
2.按 【 x 】 鍵,效果:cpu使用率排序
3.按 【 shift + > 】 鍵,效果:mem使用排序
4. top -n 2 : 設置更新次數爲2次,2次後終止更新顯示
5. top -d 3 : 設置更新週期爲3秒,由原來的1秒刷變3秒
6. top -p pid: 顯示指定進程的信息
7. top -i: 忽略閒置和僵死進程

三. 分析注意

1.buffers(第四行)與cached(第五行)區別:
buffers指的是塊設備的讀寫緩衝區,cached指的是文件系統本身的頁面緩存。
他們都是Linux系統底層的機制,爲了加速對磁盤的訪問。

2.Linux系統平均負載3個數字的含義(第一行)
"Load Average",系統平均負載。
先大致給一下這3個數字的含義:分別表示系統在過去1分鐘、5分鐘、15分鐘內運行進程隊列中的平均進程數量。
運行隊列嘛,沒有等待IO,沒有WAIT,沒有KILL的進程通通都進這個隊列。

a).1,5,15分鐘三個數組,參考哪個呢?
後兩個好點。

b).那麼怎麼分析負載是否過高呢?
個人認爲哈,單核負載在0.7以下是安全的,超過0.7就需要進行優化了。
公式: 負載值 / cpu核數 = 比較值

c).怎樣知道我的CPU是幾核呢?
grep 'model name' /proc/cpuinfo | wc -l
d).另外還有一個最直接的顯示系統平均負載的命令
cat /proc/loadavg	 

除了前3個數字表示平均進程數量外,後面的1個分數,分母表示系統進程總數,分子表示正在運行的進程數;最後一個數字表示最近運行的進程ID.


3.交換區概念:
當系統的物理內存不夠用的時候,就需要將物理內存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什麼操作的程序,這些被釋放的空間被臨時保存到Swap空間中,等到那些程序要運行時,再從Swap中恢復保存的數據到內存中。這樣,系統總是在物理內存不夠時,才進行Swap交換。
詳細見:vmstat:http://blog.csdn.net/ty_hf/article/details/63394960
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章