Initial zio delay timing
authorBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 1 Oct 2010 23:54:52 +0000 (16:54 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 12 Oct 2010 21:55:02 +0000 (14:55 -0700)
commita69052be7f9a4008e2b09578e9db5fdebc186111
tree18744d1316ef69e2ccd5b4410d6cfd72f51ae206
parent2959d94a0a53612cc1ca9ce9d17df26c3d69a513
Initial zio delay timing

While there is no right maximum timeout for a disk IO we can start
laying the ground work to measure how long they do take in practice.
This change simply measures the IO time and if it exceeds 30s an
event is posted for 'zpool events'.

This value was carefully selected because for sd devices it implies
that at least one timeout (SD_TIMEOUT) has occured.  Unfortunately,
even with FAILFAST set we may retry and request and not get an
error.  This behavior is strongly dependant on the device driver
and how it is hooked in to the scsi error handling stack.  However
by setting the limit at 30s we can log the event even if no error
was returned.

Slightly longer term we can start recording these delays perhaps
as a simple power-of-two histrogram.  This histogram can then be
reported as part of the 'zpool status' command when given an command
line option.

None of this code changes the internal behavior of ZFS.  Currently
it is simply for reporting excessively long delays.
include/sys/fm/fs/zfs.h
include/sys/zio.h
module/zfs/vdev_disk.c
module/zfs/zfs_fm.c
module/zfs/zio.c