一. 前言 我們都知道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