Linux系統中的iostat
是I/O statistics(輸入/輸出統計)的縮寫,iostat
工具將對系統的磁盤操作活動進行監視。它的特點是匯報磁盤活動統計情況,同時也會匯報出CPU使用情況。同vmstat
一樣,iostat
也有一個弱點,就是它不能對某個進程進行深入分析,僅對系統的整體情況進行分析。
安裝
yum install sysstat
iostat命令格式
iostat [參數] [時間] [次數]命令參數:-c 顯示CPU使用情況-d 顯示磁盤使用情況-k 以K為單位顯示-m 以M為單位顯示-N 顯示磁盤陣列(LVM) 信息-n 顯示NFS使用情況-p 可以報告出每塊磁盤的每個分區的使用情況-t 顯示終端和CPU的信息-x 顯示詳細信息
實例
[fenglepeng@centos]#iostat -x
Linux 3.10.0-1160.11.1.el7.x86_64 (template-centos7) 12/20/2022 _x86_64_ (4 CPU)avg-cpu: %user %nice %system %iowait %steal %idle0.54 0.01 0.38 0.00 0.00 99.08Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
fd0 0.00 0.00 0.00 0.00 0.00 0.00 8.00 0.00 22.25 22.25 0.00 22.25 0.00
sdb 0.00 0.00 0.00 0.02 0.00 0.11 12.58 0.00 1.71 1.69 1.71 1.24 0.00
sda 0.00 0.05 0.00 0.26 0.62 3.83 33.26 0.00 7.26 7.39 7.25 0.52 0.01
dm-0 0.00 0.00 0.00 0.31 0.60 3.82 28.24 0.00 11.18 7.49 11.22 0.45 0.01
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 50.09 0.00 0.07 0.07 0.00 0.07 0.00
輸出內容詳解:
avg-cpu:cpu 狀態
%user
:CPU處在用戶模式下的時間百分比。%nice
:CPU處在帶NICE值的用戶模式下的時間百分比。%system
:CPU處在系統模式下的時間百分比。%iowait
:CPU等待輸入輸出完成時間的百分比。%steal
:管理程序維護另一個虛擬處理器時,虛擬CPU的無意識等待時間百分比。%idle
:CPU空閑時間百分比。
Device
:設備名稱。當然了,iostat
命令的重點不是用來看CPU的,重點是用來監測磁盤性能的。
rrqm/s
:每秒合并到設備的讀取請求數。wrqm/s
:每秒合并到設備的寫請求數。r/s
:每秒向磁盤發起的讀操作數。w/s
:每秒向磁盤發起的寫操作數。rkB/s
:每秒讀K字節數。wkB/s
:每秒寫K字節數。avgrq-sz
:平均每次設備I/O操作的數據大小。avgqu-sz
:平均I/O隊列長度。await
:平均每次設備I/O操作的等待時間 (毫秒),一般地,系統I/O響應時間應該低于5ms,如果大于 10ms就比較大了。r_await
:每個讀操作平均所需的時間;不僅包括硬盤設備讀操作的時間,還包括了在kernel隊列中等待的時間。w_await
:每個寫操作平均所需的時間;不僅包括硬盤設備寫操作的時間,還包括了在kernel隊列中等待的時間。svctm
:平均每次設備I/O操作的服務時間 (毫秒)(這個數據不可信!)。%util
:一秒中有百分之多少的時間用于I/O操作,即被IO消耗的CPU百分比,一般地,如果該參數是100%表示設備已經接近滿負荷運行了。
[fenglepeng@centos]# iostat
Linux 3.10.0-1160.11.1.el7.x86_64 (template-centos7) 12/20/2022 _x86_64_ (4 CPU)avg-cpu: %user %nice %system %iowait %steal %idle0.54 0.01 0.38 0.00 0.00 99.08Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
fd0 0.00 0.00 0.00 21280 0
sdb 0.02 0.00 0.11 2790 1811861
sda 0.27 0.62 3.83 10461853 64221227
dm-0 0.31 0.60 3.82 9995019 64162414
dm-1 0.00 0.00 0.00 2204 0
輸出內容詳解:
tps
:每秒I/O數(即IOPS。磁盤連續讀和連續寫之和)。kB_read/s
:每秒從磁盤讀取數據大小,單位KB/s。kB_wrtn/s
:每秒寫入磁盤的數據的大小,單位KB/s。kB_read
:從磁盤讀出的數據總數,單位KB。kB_wrtn
:寫入磁盤的的數據總數,單位KB。
性能監控指標
我們到底該關注哪些輸出內容就可以確定這臺服務器是否存在IO性能瓶頸。
%iowait
:如果該值較高,表示磁盤存在I/O瓶頸。await
:一般地,系統I/O響應時間應該低于5ms,如果大于10ms就比較大了。avgqu-sz
:如果I/O請求壓力持續超出磁盤處理能力,該值將增加。如果單塊磁盤的隊列長度持續超過2,一般認為該磁盤存在I/O性能問題。需要注意的是,如果該磁盤為磁盤陣列虛擬的邏輯驅動器,需要再將該值除以組成這個邏輯驅動器的實際物理磁盤數目,以獲得平均單塊硬盤的I/O等待隊列長度。%util
:一般地,如果該參數是100%表示設備已經接近滿負荷運行了。
最后,除了關注指標外,我們更需要結合部署的業務進行分析。對于磁盤隨機讀寫頻繁的業務,比如圖片存取、數據庫、郵件服務器等,此類業務嗎,tps
才是關鍵點。對于順序讀寫頻繁的業務,需要傳輸大塊數據的,如視頻點播、文件同步,關注的是磁盤的吞吐量。