[Top] [All Lists]

Re: Ext4 and xfs problems in dm-thin on allocation and discard

To: Dave Chinner <david@xxxxxxxxxxxxx>
Subject: Re: Ext4 and xfs problems in dm-thin on allocation and discard
From: "Ted Ts'o" <tytso@xxxxxxx>
Date: Tue, 19 Jun 2012 16:21:30 -0400
Cc: Mike Snitzer <snitzer@xxxxxxxxxx>, Spelic <spelic@xxxxxxxxxxxxx>, Lukáš Czerner <lczerner@xxxxxxxxxx>, device-mapper development <dm-devel@xxxxxxxxxx>, linux-ext4@xxxxxxxxxxxxxxx, xfs@xxxxxxxxxxx
In-reply-to: <20120619200631.GL25389@dastard>
References: <20120619015745.GJ25389@dastard> <20120619031241.GA3884@xxxxxxxxxx> <alpine.LFD.2.00.1206190816440.2241@xxxxxxxxxxxxxxxxxxxxxxxxx> <20120619131649.GA6811@xxxxxxxxxx> <alpine.LFD.2.00.1206191519320.21961@xxxxxxxxxxxxxxxxxxxxxxxxx> <20120619133041.GB6811@xxxxxxxxxx> <4FE0840F.2050704@xxxxxxxxxxxxx> <20120619144413.GA7225@xxxxxxxxxx> <20120619184858.GA8841@xxxxxxxxxx> <20120619200631.GL25389@dastard>
User-agent: Mutt/1.5.20 (2009-06-14)
On Wed, Jun 20, 2012 at 06:06:31AM +1000, Dave Chinner wrote:
> > But in general xfs is issuing discards with much smaller extents than
> > ext4 does, e.g.:
> THat's normal when you use -o discard - XFS sends extremely
> fine-grained discards as the have to be issued during the checkpoint
> commit that frees the extent. Hence they can't be aggregated like is
> done in ext4.

Actually, ext4 is also sending the discards during (well, actually,
after) the commit which frees the extent/inode.  We do aggregate them
while the commit is open, but once the transaction is committed, we
send out the discards.  I suspect the difference is in the granularity
of the transactions between ext4 and xfs.

> As it is, no-one really should be using -o discard - it is extremely
> inefficient compared to a background fstrim run given that discards
> are unqueued, blocking IOs. It's just a bad idea until the lower
> layers get fixed to allow asynchronous, vectored discards and SATA
> supports queued discards...

What Dave said.  :-) This is true for both ext4 and xfs.

As a result, I can very easily see there being a distinction made
between when we *do* want to pass the discards all the way down to the
device, and when we only want the thinp layer to process them ---
because for current devices, sending discards down to the physical
device is very heavyweight.

I'm not sure how we could do this without a nasty layering violation,
but some way in which we could label fstrim discards versus "we've
committed the unlink/truncate and so thinp can feel free to reuse
these blocks" discards would be interesting to consider.

                                      - Ted

<Prev in Thread] Current Thread [Next in Thread>