服務器CPU IO居高不下?快來使用iostat 命令查看下
注意:本文操作系統為Linux示例

iostat 監視I/O子系統
iostat是I/O statistics(輸入/輸出統計)的縮寫,用來動態監視系統的磁盤操作活動。
11.1. 命令格式
iostat[參數][時間][次數]
11.2. 命令功能
通過iostat方便查看CPU、網卡、tty設備、磁盤、CD-ROM 等等設備的活動情況, 負載信息。
11.3. 命令參數
·?????? -C 顯示CPU使用情況
·?????? -d 顯示磁盤使用情況
·?????? -k 以 KB 為單位顯示
·?????? -m 以 M 為單位顯示
·?????? -N 顯示磁盤陣列(LVM) 信息
·?????? -n 顯示NFS 使用情況
·?????? -p[磁盤] 顯示磁盤和分區的情況
·?????? -t 顯示終端和CPU的信息
·?????? -x 顯示詳細信息
·?????? -V 顯示版本信息
11.4. 工具實例
實例1:顯示所有設備負載情況
[root@ecs-1 ~]# iostat
Linux 2.6.32-696.16.1.el6.x86_64 (ecs-1.novalocal) ??????? 12/03/2018 ??? _x86_64_?????? (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.18 0.00 0.74 2.79 0.00 94.28
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
vda 20.61 978.71 205.38 464722 97520
如果發現沒有iostat命令,需要進行安裝
如果發現沒有iostat命令,需要進行安裝
[root@ecs-1 ~]# iostat
-bash: iostat: command not found
[root@ecs-1 ~]# yum install sysstat
cpu屬性值說明:
·?????? %user:CPU處在用戶模式下的時間百分比。
·?????? %nice:CPU處在帶NICE值的用戶模式下的時間百分比。
·?????? %system:CPU處在系統模式下的時間百分比。
·?????? %iowait:CPU等待輸入輸出完成時間的百分比。
·?????? %steal:管理程序維護另一個虛擬處理器時,虛擬CPU的無意識等待時間百分比。
·?????? %idle:CPU空閑時間百分比。
注:如果%iowait的值過高,表示硬盤存在I/O瓶頸,%idle值高,表示CPU較空閑,如果%idle值高但系統響應慢時,有可能是CPU等待分配內存,此時應加大內存容量。%idle值如果持續低于10,那么系統的CPU處理能力相對較低,表明系統中最需要解決的資源是CPU。
disk屬性值說明:
·?????? rrqm/s: 每秒進行 merge 的讀操作數目。即 rmerge/s
·?????? wrqm/s: 每秒進行 merge 的寫操作數目。即 wmerge/s
·?????? r/s: 每秒完成的讀 I/O 設備次數。即 rio/s
·?????? w/s: 每秒完成的寫 I/O 設備次數。即 wio/s
·?????? rsec/s: 每秒讀扇區數。即 rsect/s
·?????? wsec/s: 每秒寫扇區數。即 wsect/s
·?????? rkB/s: 每秒讀K字節數。是 rsect/s 的一半,因為每扇區大小為512字節。
·?????? wkB/s: 每秒寫K字節數。是 wsect/s 的一半。
·?????? avgrq-sz: 平均每次設備I/O操作的數據大小 (扇區)。
·?????? avgqu-sz: 平均I/O隊列長度。
·?????? await: 平均每次設備I/O操作的等待時間 (毫秒)。
·?????? svctm: 平均每次設備I/O操作的服務時間 (毫秒)。
·?????? %util: 一秒中有百分之多少的時間用于 I/O 操作,即被io消耗的cpu百分比
備注:如果 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁盤可能存在瓶頸。如果 svctm 比較接近 await,說明 I/O 幾乎沒有等待時間;如果 await 遠大于 svctm,說明I/O 隊列太長,io響應太慢,則需要進行必要優化。如果avgqu-sz比較大,也表示有當量io在等待。
實例2:定時顯示所有信息
[root@ecs-1 ~]# iostat 2 3
Linux 2.6.32-696.16.1.el6.x86_64 (ecs-1.novalocal) ??????? 12/03/2018 ??? _x86_64_?????? (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
1.46 0.00 0.51 1.85 0.00 96.19
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
vda 13.70 645.89 136.67 465298 98456
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
vda 0.00 0.00 0.00 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.50 0.00 0.00 99.50
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
vda 0.00 0.00 0.00 0 0
說明:每隔 2秒刷新顯示,且顯示3次
實例3:查看TPS和吞吐量
[root@ecs-1 ~]# iostat -d -k 1 1
Linux 2.6.32-696.16.1.el6.x86_64 (ecs-1.novalocal) ??????? 12/03/2018 ??? _x86_64_?????? (1 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 12.58 296.17 62.75 232649 49292
·?????? tps:該設備每秒的傳輸次數(Indicate the number of transfers per second that were issued to the device.)?!耙淮蝹鬏敗币馑际恰耙淮蜪/O請求”。多個邏輯請求可能會被合并為“一次I/O請求”?!耙淮蝹鬏敗闭埱蟮拇笮∈俏粗?。
·?????? kB_read/s:每秒從設備(drive expressed)讀取的數據量;
·?????? kB_wrtn/s:每秒向設備(drive expressed)寫入的數據量;
·?????? kB_read:讀取的總數據量;kB_wrtn:寫入的總數量數據量;
這些單位都為Kilobytes。
上面的例子中,我們可以看到磁盤vda以及它的各個分區的統計數據(因為是瞬間值,所以總TPS并不嚴格等于各個分區TPS的總和)
Linux
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。