系統調優之二CPU子系統

CPU子系統
 想到的辦法:
  結束某些沒有進程和服務
  超頻、超線程
  升級cpu

dmidecode  -t processor | grep Socket (物理cpu個數)

dmidecode | grep Size | grep MB  (物理內存大小)

dmidecode | grep Size | grep MB | wc -l (物理內存個數)

 中斷  ---- cpu停止當前運行的指令,停下去執行更緊急的指令,一般都是IO產生中斷,也可以網絡IO導致網卡接受和發送數據。

 上下文 --- 指令執行過程,需要的一些變量環境(cpu寄存器的一些數據)
 上下文切換 ---- 一般由於內核進行調度或中斷的產生,都會引起上下文切換。
 內核調度 ---- 控制各個進程甚至是各個指令指令的優先級別
 用戶空間程序(普通應用程序)
 運行隊列

 

 工具:
  vmstat,mpstat,sar(sysstat),top,ps,uptime


# cat /proc/cpuinfo 
# dmidecode  -t processor
# dmidecode  -t cache

 

# uptime
 14:57:12 up  1:16,  3 users,  load average: 2.82, 5.43, 3.85

系統負載: 在指定單位之間(1,5,15分鐘)系統平均運行隊列。數字越大,隊列越長,系統就越忙。這裏還與cpu物理核心(不算超線程)相關。


以15分鐘平均負載作爲例子:
單核cpu:
 過去15分鐘,cpu的運行隊列平均爲3.85(1進程正在被執行,2.85個在排隊)

雙核cpu:
 過去15分鐘,單個cpu核心的運行隊列平均爲(3.85/2~=1.9,1個正在被cpu執行,0.9在排隊)

經驗:如果單核cpu的運行隊列超過3,一般說明cpu的運行能力力不從心,有點忙。


# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0    120  55156  23864 1581996    0    0   700    25 1103 1221 13  7 77  3  0


procs 
 r  b   
 0  0
 r ,一分鐘去平均值就是代表uptime的系統負載一分鐘的平均值
 b ,一般只要出現超過3,就非常值得注意。

 

 --system--   -----cpu------
   in   cs   us sy id wa st
 1103 1221   13  7 77  3  0

 in 中斷次數
 cs 上下文切換的次數,次數越多,說明內核進行的任務調度就越多。
 us 用戶空間使用的cpu時間片的百分比,cpu的大部分時間應該消耗在這裏
 sy 系統(內核完成任務:中斷處理,上下文切換,任務調度)使用的cpu時間百分比
 id 空閒
 wa cpu花了多少百分比的時間在等待IO(硬盤IO),數字越大,一般說明是存在IO瓶頸
 st 被虛擬化裏的客戶機“偷”掉的cpu時間百分比

經驗:
 us:sy ~= 7:3
 wa 不能太大
 id 非常小,不能說明cpu就不夠,或者出現瓶頸,只能說明cpu被充分利用,最嚴重就只能說明一種趨勢---系統再忙一點,cpu可能就不夠用了


# vmstat 2

# vmstat 2 5

# mpstat 2 5

# mpstat 2 5 -P ALL

# sar -u 2 5

計劃任務
# vim /etc/cron.d/sysstat

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章