如何监控磁盘io?

如何监控磁盘io?

我想在 debian Linux 服务器上进行一些常规磁盘 io 监控。我应该了解哪些有关监视磁盘 io 的工具,以便我可以查看磁盘性能是否已达到极限或在一天中的某个时间出现峰值?

答案1

对于磁盘 I/O 趋势,有几个选项。我个人最喜欢的是sar来自 的命令sysstat。默认情况下,它给出如下输出:

09:25:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
09:35:01 AM     all      0.11      0.00      0.01      0.00      0.00     99.88
09:45:01 AM     all      0.12      0.00      0.01      0.00      0.00     99.86
09:55:01 AM     all      0.09      0.00      0.01      0.00      0.00     99.90
10:05:01 AM     all      0.10      0.00      0.01      0.02      0.01     99.86
Average:        all      0.19      0.00      0.02      0.00      0.01     99.78

%iowait是等待 I/O 所花费的时间。使用 Debian 软件包,您必须/etc/default/sysstat在软件包安装后通过配置文件启用统计收集器。

要查看按设备细分的当前利用率,您可以使用iostat同样来自 sysstat 包的命令:

$ iostat -x 1
Linux 3.5.2-x86_64-linode26 (linode)    11/08/2012      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.84    0.00    0.08    1.22    0.07   97.80

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
xvda              0.09     1.02    2.58    0.49   112.79    12.11    40.74     0.15   48.56   3.88   1.19
xvdb              1.39     0.43    4.03    1.82    43.33    18.43    10.56     0.66  112.73   1.93   1.13

可以在趋势图中显示磁盘使用情况的其他一些选项是穆宁仙人掌

答案2

看一下iotop

Total DISK READ :       0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                                                                             
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init splash
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    4 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0H]
    6 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [mm_percpu_wq]
    7 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
    8 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_sched]

或者iodump,如果这更符合你的思维方式。

注意:这至少需要内核2.6.20上班。

答案3

我喜欢dstat。它可以显示每个磁盘甚至 md 设备 (RAID) 的总计和统计信息,还可以使用颜色以获得更好的概览:

$ dstat -tdD total,sda,sdb,sdc,md1 60 
----system---- -dsk/total----dsk/sda-----dsk/sdb-----dsk/sdc-----dsk/md1--
     time     | read  writ: read  writ: read  writ: read  writ: read  writ
08-11 22:08:17|3549k  277k: 144k   28k: 851k   62k: 852k   60k:  25k   82k
08-11 22:09:17|  60k  258k:1775B   15k:  13k   63k:  15k   60k:  68B   74k
08-11 22:10:17| 176k  499k:   0    14k:  41k  122k:  41k  125k: 273B  157k
08-11 22:11:17|  42k  230k:   0    14k:9830B   54k:  14k   51k:   0    70k
08-11 22:11:52|  28k  132k:   0  5032B:5266B   33k:9479B   28k:   0    37k
  • -t对于时间戳
  • -d用于磁盘统计
  • -D指定要报告的确切设备
  • 60平均超过60秒。显示每秒更新一次,但每 60 秒仅启动一次新线路。

  • 本例中未使用,但-c可以报告等待 IO 百分比,这在大多数情况下与 CPU 等待磁盘数据有关。

它适用于大多数 Linux 发行版,但有时需要从存储库安装。

答案4

另一种选择是使用:sudo iotop -aoP

-a    Will show accumulated output
-o    Will only output 
-P    Will only show processes instead of threads

该程序将告诉您自 iotop 启动以来进程已写入磁盘和从磁盘读取的数据量。

相关内容