Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I'd like to do some general disk io monitoring on a debian linux server. What are the tools I should know about that monitor disk io so I can see if a disk's performance is maxed out or spikes at certain time throughout the day?

share|improve this question
1  
This highly depends on OS, which is not mentioned in the post. –  jordanm Nov 8 '12 at 18:45
    
@jordanm linux tag has been added –  Sparr Nov 8 '12 at 21:03
add comment

7 Answers

up vote 26 down vote accepted

For disk I/O trending there are a few options. My personal favorite in the sar command from sysstat. By default, it gives output like this:

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

The %iowait is the time spent waiting on I/O. Using the Debian package, you must enable the stat collector via the /etc/default/sysstat config file after package installation.

To see current utilization broken out by device, you can use the iostat command, also from the sysstat package:

$ 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

Some other options that can show disk usage in trending graphs is munin and cacti.

share|improve this answer
    
Munin or Cacti are more what I'm looking for. Thanks for the pointers. –  camomileCase Nov 9 '12 at 4:00
add comment

Have a look at iotop.

Or iodump, if that's more down your way of thinking.

Note: This requires at least kernel 2.6.20 to work.

share|improve this answer
    
This is not just Linux only, but also requires a newer (or patched) kernel. –  jordanm Nov 8 '12 at 18:45
    
What OS is your server running, then? –  tink Nov 8 '12 at 18:48
    
I am not the OP, but i also requested that information in a comment. –  jordanm Nov 8 '12 at 18:54
    
These look good for finding out what's going on right now, but I'm looking for bigger picture monitoring. –  camomileCase Nov 9 '12 at 4:01
add comment

I like dstat. It can show totals and statistics per disk and even md-devices (RAID), also can use colors for better overview:

$ 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 for timestamps
  • -d for disk statistics
  • -D to specify the exact devices to report
  • 60 to average over 60 seconds. The display is updated every second, but only once per 60 seconds a new line will be started.

  • not used in this example, but -c can report wait IO percentage, which in most cases is related to the CPU waiting for data from the disks.

It is available for most Linux distributions, but sometimes needs to be installed from repositories.

share|improve this answer
    
This looks really good, I'll have to check it out. –  camomileCase Nov 9 '12 at 4:01
add comment

Just from files on your computer (assuming a recent kernel) you can ask /sys/block/sda/stat or /proc/diskstats. It will need some translating, however. But it's nice for a quick and dirty check.

share|improve this answer
2  
/sys/block/sda/stat is documented at https://www.kernel.org/doc/Documentation/block/stat.txt –  ignis Sep 14 '13 at 21:19
add comment

Monitoring Disk Io can be done by multiple tools like the following.

  1. Iostat
  2. Iozone
  3. SAR
  4. vmstat

Also some important operating system concepts are very much necessary to comprehend them..read the Linux IO complete tutorial

share|improve this answer
add comment

The best thing to do if you want to see performance on a long period is to use Centreon which is a powerful tools build on Nagios. Centreon make you able to monitor by drawing graphs of resource's performances and lot of other things.

share|improve this answer
add comment

Another option is to use: sudo iotop -aoP

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

This program will tell you how much a process has written to disk and read from disk since iotop was started.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.