一、iostat命令
1.1 安裝iostat命令,用於監控系統io的負載情況,安裝sysstat工具包
yum install sysstat -y
1.2 默認命令輸出,如果iostat不帶任何參數或選項,iostat會打印一個自啓動以來的帶選項-c和-d的彙總報告
先查看avg-cpu看瓶頸是否出現在IO層面
# iostat Linux 3.10.0-1160.53.1.el7.x86_64 (gitlab) 04/05/2022 _x86_64_ (8 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 1.32 0.00 0.70 1.39 0.14 96.45 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn vda 39.95 0.53 224.74 2115465 897466244 vdb 0.00 0.00 0.01 4848 42924 dm-0 0.00 0.00 0.00 0 0 #%user 用戶模式下所花費的時間 <60% #%nice 用戶進程改變過優先級的進程佔用CPU時間 #%system 內核進程所花費的CPU時間 sys+user <80% #%iowait IO等待所佔用的CPU時間(重要) <30% #%steal 丟失時間佔用CPU #%idle CPU處在中斷(空閒)狀態的時間 一般來說%idle持續遊走在20%以下,瓶頸出現在CPU的性能層面。 %iowait高而%idle在70%以上,瓶頸出現在I/O設備層面。 Device: 設備名dm是disk mapper的縮寫,可以在/dev/mapper下查對應誰,參數-N 可以將dm輸換成相應的LVM名 tps 設備每秒接受的IO傳輸請求tps=transfers per second 【每秒處理事務數IOPS】 kB_read/s 設備每秒讀取的數據量(KB)參數-m 可以轉換成MB kB_wrtn/s 設備每秒寫入的數據量(KB) kB_read 設備讀取的總數據量 kB_wrtn 設備寫入的總數據量 單純iostat輸出的值並不代表當前I/O狀態,而是系統 當前狀態請用iostat 1 2 輸出的第2組值來獲得
1.3 相關參數
-c 顯示CPU報告
-d 顯示磁盤報告
-k 使用KB代替(512B)塊數目
-m 使用MB代替(512B)塊數目
-p 包括單個分區的統計信息
-t 時間戳輸出
-x 擴展信息統計
-z 不顯示空活動彙總
-N 顯示磁盤陣列(LVM) 信息
1.4 常用命令參數
iostat -d -x -p -N
rrqm/s 每秒合併放入驅動請求隊列的讀請求數 wrqm/s 每秒合併放入驅動請求隊列的寫請求數 r/s 每秒發給磁盤設備的讀請求數 # 每秒完成讀寫I/O設備次數(顧客總數) w/s 每秒發給磁盤設備的寫請求數 # 每秒完成讀寫I/O設備次數(顧客總數) rkB/s 每秒從磁盤設備讀取的KB數 wkB/s 每秒從磁盤設備寫入的KB數 avgrq-sz 平均請求大小,單位爲扇區(512B) # 平均I/O數據大小,平均每人所買的東西多少 avgqu-sz 在驅動請求隊列和在設備中活躍的平均請求數 # 單位時間裏平均排隊等待人的個數 await 平均I/O響應時間,包括在驅動請求隊列裏等待和設備的I/O響應時間(ms) # 每人買完包子平均等待時間 r_await 和await一樣,不過只針對讀(ms) w_await 和await一樣,不過只針對寫(ms) svctm (推斷)磁盤設備的I/O平均響應時間(ms) %util 設備忙處理I/O請求的百分比(使用率) # 單位時間內包子鋪有人買包子的時間比例
輸出性能裏最重要的指標是await。如果應用程序和文件系統使用了降低寫延時(例如,寫空)的方法,w_await可能不那麼重要,而你可以主要關注 r_wait
二、iotop
安裝命令
yum install iotop -y
常用參數
-o:只顯示有io操作的進程 -b:批量顯示,無交互,主要用作記錄到文件。 -n NUM:顯示NUM次,主要用於非交互式模式。 -d SEC:間隔SEC秒顯示一次。 -p PID:監控的進程pid。 -u USER:監控的進程用戶