1. 程式人生 > >linux系能分析和瓶頸查詢

linux系能分析和瓶頸查詢

 何為負載?

  1.在top裡輸出loadaverage aa  bb  cc或者 cat /proc/loadavg,在一定時間內程序平均等待時間,如果這個引數值高,說明系能負載高.

 2.程序為什麼會等待執行?
    多工的OS,程序執行都是分時被排程  A-B-核心-A 過程
    程序的狀態(ps auxw) 1.TASK_RUN(可被排程執行)  ,2.可中斷等待(長期時間等待IO),3.不可中斷IO(如讀取  


  磁碟資料) 4.暫停(不回覆不可被排程),5.殭屍程序,
    只有1和3可以被核心排程到cpu執行,  loadaverage裡的等待也只跟1,3有關
    這樣就可以看出 負載高---->程序等待多---->有大量1,3兩個狀態程序導致---->1是等待cup,3是等待io
    ---->當cup負載或者IO負載會造成系統負載高,造成系統瓶頸

  3. 什麼導致cup和io高,那些程序cup消耗高    
     1.ps(ps aux | sort -k3nr | head -n 5)和top命令
       top查詢到使用cup(%cup列)最高的程序
       top -H -p 14094 (-p監控指定程序 -H檢視程序裡各個執行緒狀態) 14870
       ps  -efL  

    2.vmstat 判斷是cup還是io的負載
       b列高,說明等待的程序多
       swap列頻繁變化說明記憶體不足
       io列變動頻繁問起高說明IO可能是瓶頸 ,可在分析bi(磁碟讀),bo(磁碟寫)
     3.可使用iostat分析io是否為瓶頸  ,可檢視%idle列,如果該列很小,說明io很頻繁,可能為io的瓶頸

     
  4.如果分析瓶頸是cup還是io
    如果io,swap,memory都比較小,cup負載高說明在密集計算下cup的邏輯計算能力不足
    如果在vmstat裡free很小,si,so值很大,說明系統能存不夠
    如果cup使用率低,vmstat的b列值比較大,iostat裡%idle比較小,說明是io的瓶頸


  5.程式碼級的分析,分析熱點函式呼叫測試,每次呼叫花費時間
    使用工具gpref

搜尋

複製