On Wed, Jan 23, 2008 at 12:00:27PM +0100, Matthias Schniedermeyer wrote:
> 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().
SGI Australian Software Group