系統性能檢測與優化,iostat,top

iostat命令被用於監視系統輸入輸出設備和CPU的使用情況。它的特點是彙報磁盤活動統計情況,同時也會彙報出CPU使用情況。

  1. iostat
    [root@0705-1 logs]# iostat -x -k -d 1

系統性能檢測與優化,iostat,top

標示 說明
Device 監測設備名稱
rrqm/s 每秒需要讀取需求的數量
wrqm/s 每秒需要寫入需求的數量
r/s 每秒實際讀取需求的數量
w/s 每秒實際寫入需求的數量
rsec/s 每秒讀取數據數量(kb爲單位)
wsec/s 每秒寫入數據量(kB爲單位)
rkB/s 每秒實際讀取的大小,單位爲KB
wkB/s 每秒實際寫入的大小,單位爲KB
avgrq-sz 平均每次IO操作的數據量
avgqu-sz 平均等待處理的IO請求隊列長度
await 平均每次IO請求等待時間(包括等待時間和處理時間,毫秒爲單位)
svctm 平均每次IO請求的處理時間(毫秒爲單位)
%util 採用週期內用於IO操作的時間比率,即IO隊列非空的時間比率


如果 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁盤可能存在瓶頸。
idle小於70% IO壓力就較大了,一般讀取速度有較多的wait。
同時可以結合vmstat 查看查看b參數(等待資源的進程數)和wa參數(IO等待所佔用的CPU時間的百分比,高過30%時IO壓力高)

  1. top
    [root@localhost ~]# top

top - 12:13:22 up 167 days, 20:47, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 272 total, 1 running, 271 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 65759080 total, 58842616 free, 547908 used, 6368556 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 64264884 avail Mem
................

對上面第三行的解釋:

標示 說明
us(user cpu time) 用戶態使用的cpu時間比。該值較高時,說明用戶進程消耗的 CPU 時間比較多,比如,如果該值長期超過 50%,則需要對程序算法或代碼等進行優化。
sy(system cpu time) 系統態使用的cpu時間比。
ni(user nice cpu time) 用做nice加權的進程分配的用戶態cpu時間比
id(idle cpu time) 空閒的cpu時間比。如果該值持續爲0,同時sy是us的兩倍,則通常說明系統則面臨着 CPU 資源的短缺。
wa(io wait cpu time) cpu等待磁盤寫入完成時間。該值較高時,說明IO等待比較嚴重,這可能磁盤大量作隨機訪問造成的,也可能是磁盤性能出現了瓶頸。
hi(hardware irq) 硬中斷消耗時間
si(software irq) 軟中斷消耗時間
st(steal time) 虛擬機偷取時間
  1. vmstat

[root@localhost ~]# vmstat
procs -----------memory---------------------swap-------io---------system--------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 0 0 1639792 724280 4854236 0 0 4 34 4 0 19 45 35 0 0

解釋說明:

procs部分的解釋

標示 說明
r 列表示運行和等待cpu時間片的進程數,如果長期大於1,說明cpu不足,需要增加cpu。
b 列表示在等待資源的進程數,比如正在等待I/O、或者內存交換等。

cpu部分的解釋

標示 說明
us 列顯示了用戶方式下所花費 CPU 時間的百分比。us的值比較高時,說明用戶進程消耗的cpu時間多,但是如果長期大於50%,需要考慮優化用戶的程序。
sy 列顯示了內核進程所花費的cpu時間的百分比。這裏us + sy的參考值爲80%,如果us+sy 大於 80%說明可能存在CPU不足。
wa 列顯示了IO等待所佔用的CPU時間的百分比。這裏wa的參考值爲30%,如果wa超過30%,說明IO等待嚴重,這可能是磁盤大量隨機訪問造成的,也可能磁盤或者磁盤訪問控制器的帶寬瓶頸造成的(主要是塊操作)。
id 列顯示了cpu處在空閒狀態的時間百分比

system部分的解釋

標示 說明
in 列表示在某一時間間隔中觀測到的每秒設備中斷數。
cs 列表示每秒產生的上下文切換次數,如當 cs 比磁盤 I/O 和網絡信息包速率高得多,都應進行進一步調查。
-----------------------------

memory部分的解釋

標示 說明
swpd 切換到內存交換區的內存數量(k表示)。如果swpd的值不爲0,或者比較大,比如超過了100m,只要si、so的值長期爲0,系統性能還是正常
free 當前的空閒頁面列表中內存數量(k表示)
buff 作爲buffer cache的內存數量,一般對塊設備的讀寫才需要緩衝。
cache 作爲page cache的內存數量,一般作爲文件系統的cache,如果cache較大,說明用到cache的文件較多,如果此時IO中bi比較小,說明文件系統效率比較好。

swap部分的解釋

標示 說明
si 由內存進入內存交換區數量。
so 由內存交換區進入內存數量。

IO部分的解釋

標示 說明
bi 從塊設備讀入數據的總量(讀磁盤)(每秒kb)。
bo 塊設備寫入數據的總量(寫磁盤)(每秒kb)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章