使用iostat分析IO性能linux
iostat用於輸出CPU和磁盤I/O相關的統計信息.ios
1.不加選項執行iostatexpress
[patrickxu@vm1 ~]$ iostat
Linux 2.6.32-279.19.3.el6.ucloud.x86_64 (vm1) 06/11/2017 _x86_64_ (8 CPU)性能
avg-cpu: %user %nice %system %iowait %steal %idle
0.08 0.00 0.06 0.00 0.00 99.86ui
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
vda 0.45 0.29 8.10 6634946 183036680
vdb 0.12 3.11 30.55 70342034 689955328spa
單獨執行iostat,顯示的結果爲從系統開機到當前執行時刻的統計信息。隊列
以上輸出中,包含三部分:進程
選項內存 |
說明ci |
第一行 |
最上面指示系統版本、主機名和當前日期 |
avg-cpu |
整體cpu使用狀況統計信息,對於多核cpu,這裏爲全部cpu的平均值 |
Device |
各磁盤設備的IO統計信息 |
Device中各列參數含義以下:
選項 |
說明 |
%user |
CPU在用戶態執行進程的時間百分比。 |
%nice |
CPU在用戶態模式下,用於nice操做,所佔用CPU總時間的百分比 |
%system |
CPU處在內核態執行進程的時間百分比 |
%iowait |
CPU用於等待I/O操做佔用CPU總時間的百分比 |
%steal |
管理程序(hypervisor)爲另外一個虛擬進程提供服務而等待虛擬CPU的百分比 |
%idle |
CPU空閒時間百分比 |
1. 若 %iowait 的值太高,表示硬盤存在I/O瓶頸
2. 若 %idle 的值高但系統響應慢時,有多是CPU等待分配內存,此時應加大內存容量
3. 若 %idle 的值持續低於1,則系統的CPU處理能力相對較低,代表系統中最須要解決的資源是 CPU
avg-cpu中各列參數含義以下:
選項 |
說明 |
Device |
設備名稱 |
tps |
每秒向磁盤設備請求數據的次數,包括讀、寫請求,爲rtps與wtps的和。出於效率考慮,每一次IO下發後並非當即處理請求,而是將請求合併(merge),這裏tps指請求合併後的請求計數。 |
Blk_read/s |
Indicate the amount of data read from the device expressed in a number of blocks per second. Blocks are equivalent to sectors with kernels 2.4 and later and therefore have a size of 512 bytes. With older kernels, a block is of indeterminate size. |
Blk_wrtn/s |
Indicate the amount of data written to the device expressed in a number of blocks per second. |
Blk_read |
取樣時間間隔內讀扇區總數量 |
Blk_wrtn |
取樣時間間隔內寫扇區總數量 |
咱們可使用-c選項單獨顯示avg-cpu部分的結果,使用-d選項單獨顯示Device部分的信息。
2.指定採樣時間間隔與採樣次數
與sar命令同樣,咱們能夠以」iostat interval [count] 」形式指定iostat命令的採樣間隔和採樣次數:
[patrickxu@vm1 ~]$ iostat -d 2 3
Linux 2.6.32-279.19.3.el6.ucloud.x86_64 (vm1) 06/12/2017 _x86_64_ (8 CPU)
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
vda 0.45 0.29 8.10 6634946 183051408
vdb 0.12 3.11 30.55 70342034 689955328
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
vda 0.00 0.00 0.00 0 0
vdb 0.00 0.00 0.00 0 0
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
vda 1.50 0.00 12.00 0 24
vdb 0.00 0.00 0.00 0 0
以上命令輸出Device的信息,採樣時間爲1秒,採樣2次,若不指定採樣次數,則iostat會一直輸出採樣信息,直到按」ctrl+c」退出命令。注意,第1次採樣信息與單獨執行iostat的效果同樣,爲從系統開機到當前執行時刻的統計信息。
3.以kB爲單位顯示讀寫信息(-k選項)/以mB爲單位顯示讀寫信息(-m選項)
咱們可使用-k選項,指定iostat的部分輸出結果以kB爲單位,而不是以扇區數爲單位:
[patrickxu@vm1 ~]$ iostat -d -k
Linux 2.6.32-279.19.3.el6.ucloud.x86_64 (vm1) 06/12/2017 _x86_64_ (8 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.45 0.15 4.05 3317473 91525980
vdb 0.12 1.56 15.27 35171017 344977664
以上輸出中,kB_read/s、kB_wrtn/s、kB_read和kB_wrtn的值均以kB爲單位,相比以扇區數爲單位,這裏的值爲原值的一半(1kB=512bytes*2)
4.更詳細的io統計信息(-x選項)
爲顯示更詳細的io設備統計信息,咱們可使用-x選項,在分析io瓶頸時,通常都會開啓-x選項:
linux # iostat -x -k -d 1
Linux 2.6.16.60-0.21-smp (linux) 06/13/12
……
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 9915.00 1.00 90.00 4.00 34360.00 755.25 11.79 120.57 6.33 57.60
以上各列的含義以下:
選項 |
說明 |
rrqm/s |
每秒對該設備的讀請求被合併次數,文件系統會對讀取同塊(block)的請求進行合併 |
wrqm/s |
每秒對該設備的寫請求被合併次數 |
r/s |
每秒完成的讀次數 |
w/s |
每秒完成的寫次數 |
rkB/s |
每秒讀數據量(kB爲單位) |
wkB/s |
每秒寫數據量(kB爲單位) |
avgrq-sz |
平均每次IO操做的數據量(扇區數爲單位) |
avgqu-sz |
平均等待處理的IO請求隊列長度 |
await |
平均每次IO請求等待時間(包括等待時間和處理時間,毫秒爲單位) |
svctm |
平均每次IO請求的處理時間(毫秒爲單位) |
%util |
採用週期內用於IO操做的時間比率,即IO隊列非空的時間比率 |
對於以上示例輸出,咱們能夠獲取到如下信息:
- 每秒向磁盤上寫30M左右數據(wkB/s值)
- 每秒有91次IO操做(r/s+w/s),其中以寫操做爲主體
- 平均每次IO請求等待時間爲120.57毫秒,處理時間爲6.33毫秒
- 等待處理的IO請求隊列中,平均有11.79個請求駐留
實際查看時,通常結合着多個選項查看: 如iostat -dxm 3
[root@yg-uhost724 ~]# iostat -dxm 5
Linux 2.6.32-279.19.16.el6.ucloud.x86_64 (yg-uhost724) 06/12/2017 _x86_64_ (24 CPU)
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util
sda 0.69 29.89 1.36 21.52 0.05 0.20 23.04 0.04 1.96 0.29 0.67
sdb 682.88 1811.86 77.94 417.73 2.97 8.71 48.27 0.01 0.03 0.10 4.89
dm-14 0.00 0.00 0.03 41.47 0.00 0.16 8.00 0.01 0.12 0.02 0.10
dm-0 0.00 0.00 0.00 0.00 0.00 0.00 8.00 0.00 7.24 0.07 0.00
dm-2 0.00 0.00 0.00 0.00 0.00 0.00 8.00 0.00 0.07 0.04 0.00
dm-3 0.00 0.00 0.00 0.98 0.00 0.00 8.00 0.00 3.57 0.22 0.02
dm-5 0.00 0.00 0.18 50.51 0.00 0.20 8.00 0.03 0.44 0.01 0.07
dm-1 0.00 0.00 1.50 5.51 0.01 0.02 8.00 0.03 4.04 0.04 0.03
dm-6 0.00 0.00 123.23 1042.56 0.48 4.07 8.00 0.01 0.01 0.02 1.90
dm-4 0.00 0.00 635.74 1069.59 2.48 4.18 8.00 0.00 0.04 0.01 2.39
sdc 7.23 106.32 0.52 0.94 0.03 0.42 627.54 0.02 13.32 17.58 2.58
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util sda 0.00 15.00 0.40 17.80 0.00 0.10 10.90 0.00 0.10 0.10 0.18 sdb 82.60 11967.00 414.60 2500.20 1.94 56.51 41.07 12.07 4.14 0.07 21.02 dm-14 0.00 0.00 0.00 0.20 0.00 0.00 8.00 0.00 0.00 0.00 0.00 dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 dm-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 dm-3 0.00 0.00 0.00 1.80 0.00 0.01 8.00 0.00 0.11 0.11 0.02 dm-5 0.00 0.00 0.00 2.00 0.00 0.01 8.00 0.00 0.00 0.00 0.00 dm-1 0.00 0.00 0.00 2.40 0.00 0.01 8.00 0.01 4.17 1.25 0.30 dm-6 0.00 0.00 0.00 45.20 0.00 0.18 8.00 0.11 2.45 0.55 2.48 dm-4 0.00 0.00 497.20 14415.80 1.94 56.31 8.00 72.87 4.83 0.01 19.14 sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00