Monitoring ZFS IO

Jeremy Chadwick freebsd at jdc.parodius.com
Fri Dec 2 15:36:26 UTC 2011


On Fri, Dec 02, 2011 at 03:19:54PM +0000, Matt Burke wrote:
> On 12/02/11 14:47, Ronald Klop wrote:
> > while true; do gstat -b -I 1s; done
> 
> Looks like I wasn't clear about what I'm after - sorry.
> 
> I want to see how many bytes or KB have been read and written to a given
> zpool since creation (as in the newer of uptime or zpool creation) on the
> system.
>
> For instance I want this data:
> 
> # time iostat -Idx
>                         extended device statistics
> device     r/i   w/i    kr/i    kw/i wait svc_t  %b
> mfid0    284807.0 5469251.0 4452202.0 116634996.0    0   0.8   0
> mfid1    284576.0 5466322.0 4474976.5 116510280.0    0   0.8   0
> mfid2    278686.0 5450269.0 4418703.0 116511709.0    0   0.8   0
> mfid3    281673.0 5452757.0 4439770.5 116560910.5    0   0.8   0
> mfid4    279549.0 5472177.0 4440227.0 116609067.0    0   0.8   0
> mfid5    282625.0 5464261.0 4503257.5 116608801.5    0   0.8   0
> mfid6    275635.0 5470654.0 4433529.0 116616131.5    0   0.8   0
> ...
> mfid27   302950.0 5464880.0 4434398.0 116542100.0    0   0.7   0
> mfid28   281464.0 5459410.0 4461678.5 116595780.5    0   0.8   0
> mfid29   277535.0 5468784.0 4443352.5 116642932.0    0   0.8   0
> ...
> real	0m0.003s
> user	0m0.000s
> sys	0m0.007s
> 
> 
> For the zpool as a singular entitiy (or even by zfs filesystem), but not
> for the individual disks.
> 
> Hope this clarifies my request a bit

To my knowledge this kind of data is not kept/available in ZFS (FreeBSD
or Solaris).  What you're wanting (truly) are counters rather than
averages, and you can do the averaging yourself (if wanted).  "zpool
iostat" does not do this.

With most utilities like iostat, mpstat, zpool iostat, gstat, vmstat,
and others of this nature, the established method/model/norm is that you
always provide an interval and you ignore the first sample/set of data
shown.  In iostat's case on FreeBSD, it provides you an average over the
entire system uptime.  Other utilities do not work this way.

Even if "zpool iostat" behaved like your above iostat example, you'd
still run into the problem I described in my other mail (which is that
you get human-readable output, not actual integers/floats, and you
therefore have to do math to turn the values into integers, which sounds
easy but isn't, and you lose granularity/accuracy too).

I cannot explain why "zpool iostat" (note no interval argument!) shows
some reads/writes.  For example, on my systems, the following loop:

  while true; do zpool iostat; done

...literally returns the same data over and over, no matter what is
going on with he pools (reads or writes).  I'm sure someone can explain
this behaviour, but it reminds me of systems where running "vmstat 1"
shows "crazy" values for the first interval, but the 2nd and onward
are accurate.

-- 
| Jeremy Chadwick                                jdc at parodius.com |
| Parodius Networking                       http://www.parodius.com/ |
| UNIX Systems Administrator                   Mountain View, CA, US |
| Making life hard for others since 1977.               PGP 4BD6C0CB |



More information about the freebsd-fs mailing list