Linux

iostat 在特定磁碟的第一行報告低 r/s,在同一磁碟的所有後續行上報告預期 r/s

  • August 15, 2014

將數據從硬碟複製sdc到 時sda,我注意到每秒完成的讀取請求數異常低:

$ iostat -x 1 1
Linux 3.13.0-32-generic (melancholy)    2014-08-15      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          3.15    0.00    0.94    1.91    0.00   94.00

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.15     6.43    0.37    4.85    14.17  2154.46   829.68     1.35  258.80   26.50  276.74   2.89   1.51
sdb               0.02     1.08    0.63    1.91    10.48    86.95    76.56     0.13   50.08    4.89   65.06   2.98   0.76
sdc               0.35     1.10   29.15    0.18  2140.15     5.11   146.32     0.29    9.98    9.39  107.21   2.12   6.22

進一步探勘,似乎每次我開始iostat第一行報告很多r / s:

$ sudo iostat -x 1 3
Linux 3.13.0-32-generic (melancholy)    2014-08-15      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          3.15    0.00    0.94    1.95    0.00   93.96

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.15     6.43    0.38    4.98    14.29  2219.15   832.86     1.39  259.93   25.96  277.93   2.89   1.55
sdb               0.02     1.08    0.63    1.91    10.47    86.84    76.55     0.13   50.06    4.89   65.02   2.98   0.76
sdc               0.35     1.10   29.91    0.18  2206.09     5.11   146.98     0.30   10.00    9.43  107.21   2.12   6.37

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          1.00    0.00    2.01   24.56    0.00   72.43

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     5.00    0.00    2.00     0.00    28.00    28.00     0.03   14.00    0.00   14.00  14.00   2.80
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdc               0.00     0.00  498.00    0.00 42496.00     0.00   170.67     5.35   10.74   10.74    0.00   2.01 100.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          0.50    0.00    2.75   40.75    0.00   56.00

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    0.00  274.00     0.00 139648.00  1019.33   114.82  304.88    0.00  304.88   2.93  80.40
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdc               0.00     0.00  500.00    0.00 42632.00     0.00   170.53     5.34   10.70   10.70    0.00   2.00 100.00

$ sudo iostat -x 1 3
Linux 3.13.0-32-generic (melancholy)    2014-08-15      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          3.15    0.00    0.94    1.95    0.00   93.96

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.15     6.43    0.38    4.99    14.29  2223.10   833.13     1.40  260.11   26.00  278.09   2.89   1.55
sdb               0.02     1.08    0.63    1.91    10.46    86.84    76.55     0.13   50.06    4.89   65.02   2.98   0.76
sdc               0.35     1.10   29.94    0.18  2208.18     5.11   147.00     0.30   10.00    9.43  107.21   2.12   6.37

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          1.00    0.00    2.00   24.50    0.00   72.50

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     7.00    0.00    2.00     0.00    36.00    36.00     0.02   10.00    0.00   10.00  10.00   2.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdc               0.00     0.00  496.00    0.00 42360.00     0.00   170.81     5.27   10.60   10.60    0.00   2.02 100.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          0.50    0.00    2.26   23.81    0.00   73.43

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdc               0.00     0.00  499.00    0.00 42616.00     0.00   170.81     5.29   10.61   10.61    0.00   2.00 100.00

$ sudo iostat -x 1 3
Linux 3.13.0-32-generic (melancholy)    2014-08-15      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          3.15    0.00    0.94    1.96    0.00   93.96

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.15     6.43    0.38    4.99    14.29  2223.99   833.18     1.40  260.12   26.00  278.10   2.89   1.55
sdb               0.02     1.08    0.63    1.91    10.46    86.83    76.55     0.13   50.06    4.89   65.02   2.98   0.76
sdc               0.35     1.10   29.97    0.18  2210.82     5.11   147.03     0.30   10.00    9.43  107.21   2.12   6.38

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          1.25    0.00    2.01   26.07    0.00   70.68

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     5.00    0.00    3.00     0.00    32.00    21.33     0.10   34.67    0.00   34.67  34.67  10.40
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdc               0.00     0.00  499.00    0.00 42616.00     0.00   170.81     5.38   10.77   10.77    0.00   2.00 100.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          0.50    0.00    2.49   25.44    0.00   71.57

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    0.00  175.00     0.00 86040.00   983.31    40.06  228.89    0.00  228.89   2.77  48.40
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdc               0.00     0.00  500.00    0.00 42632.00     0.00   170.53     5.41   10.82   10.82    0.00   2.00 100.00

這是有問題的,因為這意味著我無法自動監控,iostat因為初始讀數是錯誤的。我可以通過執行監視腳本iostat -x 1 2並忽略第一個輸出來解決它,但我真的很想了解為什麼這是必要的。為什麼每次執行的第一份報告都顯示如此低的活動?

為了澄清,我指的是 的r/ssdc,當數據(數百 GiB)從該磁碟複製到sda. 在 的每次執行中, foriostat的第一個值約為 29,而for的每個後續值都接近 500。這是為什麼呢?r/s``sdc``r/s``sdc

引用手冊iostat頁:

iostat 命令生成的第一個報告提供有關自系統啟動以來的時間的統計資訊,除非使用了 -y 選項,而忽略了第一個報告。每個後續報告都涵蓋自上次報告以來的時間。

這意味著第一次讀取將顯示一個較低的值,因為它是自啟動以來的平均值,可能較低。使用-y將刪除此初始讀取。

嘗試使用cat /proc/diskstats它更可預測。如果您使用 zabbix 或 nagios 自動監控,您始終可以計算先前值與新值之間的差異。

如果我沒記錯的話,iostat 也使用 /proc/diskstats。

引用自:https://serverfault.com/questions/620727