Thread (2 messages) 2 messages, 2 authors, 2011-03-23

Re: Discard request and write counters

From: Dave Chinner <david@fromorbit.com>
Date: 2011-03-23 23:40:20
Also in: linux-fsdevel

On Wed, Mar 23, 2011 at 02:07:40PM +0100, Lukas Czerner wrote:
Hello,

I have noticed that we do treat discard requests (REQ_DISCARD) as write
requests which is probably right, but it has the side effect of
increasing write counters as well (disk_stats->sectors[1]) which leads
to confusing result.

For example in ext4 filesystem we have counter s_kbytes_written which
stores amount of kbytes written to the filesystem throughout its
lifetime. Now, if you mount the filesystem with -o discard mount option,
which means that with every commit blocks used by unlinked files are
discarded, you'll get approx. twice as many kb writes as it should be
(if you delete every file you have previously written of course).

So this means that with -o discard the ext4 s_kbytes_written counter is
no longer reliable. Now the question is how to fix that ? Should the
users of the disk_stats->sectors[1] count with this behaviour as the
REQ_DISCARD is treated as write and should be accounted for, or should
we change that in block layer and do not count REQ_DISCARD as write in
the first place ?
IMO discard needs to be accounted separately in new counters.
Discards are not writes, but knowing how much data is being
discarded along with read and write stats is definitely useful
information about the IO load the device is under.

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help