Re: XFS doesn't correctly account for IO-Wait for directory reading

David Chinner
2008-01-24T00:31:12Z

On Wed, Jan 23, 2008 at 12:00:27PM +0100, Matthias Schniedermeyer wrote:
> Hi
>
>
> Some days ago Mr. Chinner(?, don't have the e-mail anymore) said that
> XFS fakes ( :-) ) it's way around IO-wait accounting for file-deletion
> by deferring it to the log.
>
> Today i thought again about the initial 'rm -rf'-isn't-accounted-properly
> "problem", and the bigger part of "rm -rf" is the
> directory-traversal(IOW read) and not the actual "unlink"-part.
>
> So what better test than a simple 'find'.
>
> Situation: Cache is cold:
> find /<wherever> >/dev/null
> While running (which takes some time) it shows exactly 0.0%wa in top on
> an otherwise completely idle system, where there should be a near 50%wa
> (Dual-Core system) or 100% on a UP system.

XFS issues readahead on directories, so when the I/O has not completed,
it waits on semaphores in the xfs_buf layer, not on the I/O itself.
Hence we cannot account for the wait time as iowait as we cannot
tell the semaphore to call io_schedule() instead of schedule().

Cheers,

Dave.
--
Dave Chinner
Principal Engineer
SGI Australian Software Group