一,iostat所屬的包:
[root@centos8 ~]# whereis iostat iostat: /usr/bin/iostat /usr/share/man/man1/iostat.1.gz [root@centos8 ~]# rpm -qf /usr/bin/iostat sysstat-11.7.3-2.el8.x86_64
iostat命令默認已經內置在系統中,如果找不到,
可以用yum安裝:
[root@blog ~]# yum install sysstat
說明:劉宏締的架構森林是一個專注架構的博客,地址:https://www.cnblogs.com/architectforest
對應的源碼可以訪問這里獲取: https://github.com/liuhongdi/
說明:作者:劉宏締 郵箱: 371125307@qq.com
二,查看iostat的版本和幫助
1,查看版本
[root@centos8 ~]# iostat -V sysstat 版本 11.7.3
2,查看幫助
[root@centos8 ~]# man iostat
三,iostat的用途:
iostat 是最常用的磁盤 I/O 性能觀測工具,它提供了每個磁盤的使用率、IOPS、吞吐量等各種常見的性能指標,
當然,這些指標實際上來自 /proc/diskstats
四,參數說明:
1,用法:iostat [ 選項 ] [ <時間間隔> [ <次數> ]]
2,參數:
-c:只顯示系統CPU統計信息,即單獨輸出avg-cpu結果,不包括device結果
-d:單獨輸出Device結果,不包括cpu結果
-x:表示顯示擴展統計
五,例子一:顯示磁盤的完整的I/O指標
1,每秒統計一次
# -d表示只顯示磁盤I/O性能指標
# -x表示顯示擴展統計(即所有I/O指標)
[root@centos8 ~]# iostat -x -d 1 Linux 4.18.0-147.5.1.el8_1.x86_64 (centos8) 2020年04月03日 _x86_64_ (2 CPU) Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util sda 1.14 3.37 85.32 1752.17 0.01 0.14 0.61 3.87 1.38 9.60 0.03 74.76 519.91 0.64 0.29 scd0 0.00 0.00 0.07 0.00 0.00 0.00 0.00 0.00 1.16 0.00 0.00 28.65 0.00 1.14 0.00 dm-0 0.98 2.22 75.38 1717.20 0.00 0.00 0.00 0.00 1.29 16.56 0.04 76.61 774.24 0.58 0.18 dm-1 0.01 0.05 0.17 0.22 0.00 0.00 0.00 0.00 9.03 29.39 0.00 12.92 4.00 0.35 0.00 dm-2 0.13 1.23 7.39 34.75 0.00 0.00 0.00 0.00 1.51 0.62 0.00 56.56 28.18 0.78 0.11
2,iostat輸出各字段的含義:
Device:設備
r/s :每秒的讀請求數
w/s :每秒的寫請求數
rkB/s:每秒讀取的數據量(單位kB)
wkB/s:每秒寫入的數據量(單位kB)
rrqm/s:每秒讀請求的合並次數
wrqm/s:每秒寫請求的合並次數
%rrqm:讀請求在合並后占合並前的百分比:
(The percentage of read requests merged together before being sent to the device)
%wrqm:寫請求在合並后占合並前的百分比:
(The percentage of write requests merged together before being sent to the device)
r_await:讀請求完成的等待時間,單位毫秒
w_await:寫請求完成的等待時間,單位毫秒
aqu-sz:平均請求隊列長度
rareq-sz:平均讀請求的大小
wareq-sz:平均寫請求的大小
svctm:處理i/o請求所需的平均時間,不包括等待時間
%util : 磁盤處理i/o的時間百分比,就是磁盤 I/O 使用率
附加說明:
r/s+ w/s ,就是 IOPS;
rkB/s+wkB/s ,就是吞吐量;
r_await+w_await ,就是響應時間
生產環境中注意:
磁盤的%util 如果很高接近100%,代表已經接近 I/O 飽和,
說明:I/O系統已經滿負荷,該磁盤 可能存在瓶頸。
aqu-sz請求隊列過高則會帶來響應時間會更慢
六,例子二:只查看cpu信息狀態,每秒采集1次,共采集10次
1,命令格式:
[root@centos8 ~]# iostat -c 1 10 Linux 4.18.0-147.5.1.el8_1.x86_64 (centos8) 2020年04月03日 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 4.54 0.02 1.32 0.35 0.00 93.76
2,輸出字段含義的說明:
%user:CPU處在用戶模式下的時間百分比。
%nice:CPU處在帶NICE值的用戶模式下的時間百分比。
%system:CPU處在系統模式下的時間百分比。
%iowait:CPU等待輸入輸出完成時間的百分比。
%steal:管理程序維護另一個虛擬處理器時,虛擬CPU的無意識等待時間百分比。
%idle:CPU空閑時間百分比。
七,例子三:只查看磁盤的讀寫狀態
1,命令格式:
[root@centos8 ~]# iostat -d Linux 4.18.0-147.5.1.el8_1.x86_64 (centos8) 2020年04月03日 _x86_64_ (2 CPU) Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 3.88 73.07 1500.72 1348131 27687825 scd0 0.00 0.06 0.00 1060 0 dm-0 2.76 64.56 1470.77 1191071 27135282 dm-1 0.06 0.14 0.19 2648 3420 dm-2 1.17 6.33 29.76 116743 549075
2,各輸出字段的說明:
tps:該設備每秒的傳輸次數,
說明:多個邏輯請求可能會被合並為“一次I/O請求”
一次I/O請求即“一次傳輸”
kB_read/s:每秒從設備讀取的數據量;
kB_wrtn/s:每秒向設備寫入的數據量;
kB_read:讀取的總數據量,單位都為Kilobytes;
kB_wrtn:寫入的總數據量,單位都為Kilobytes;
八,-d 和 -d -x 的區別:
例:
iostat -d 1 10 #查看TPS和吞吐量信息
例:
iostat -d -x 1 10 #查看設備使用率(%util)、響應時間(await)
九,dm-0、 dm-1、dm-2 從何處來?
1,用lsblk查看
[root@centos8 mapper]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 120G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 79G 0 part ├─cl-root 253:0 0 50G 0 lvm / ├─cl-swap 253:1 0 4G 0 lvm [SWAP] └─cl-home 253:2 0 25G 0 lvm /home sr0 11:0 1 6.7G 0 rom /run/media/liuhongdi/CentOS-8-BaseOS-x86_64
沒有dm-0等
2,查看/dev/mapper目錄
[root@centos8 mapper]# ll /dev/mapper/ 總用量 0 lrwxrwxrwx 1 root root 7 4月 3 12:48 cl-home -> ../dm-2 lrwxrwxrwx 1 root root 7 4月 3 12:48 cl-root -> ../dm-0 lrwxrwxrwx 1 root root 7 4月 3 12:48 cl-swap -> ../dm-1 crw------- 1 root root 10, 236 4月 3 12:48 control
找到了,其實它們是由lvm創建的邏輯卷組
十,查看centos的版本:
[root@centos8 ~]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core)