Re: Discard support (was Re: [PATCH] swap: send callback when swap slot is freed)

James Bottomley
2009-08-15T12:59:56Z

On Fri, 2009-08-14 at 18:19 -0600, Chris Worley wrote:
> On Fri, Aug 14, 2009 at 5:45 PM, Matthew Wilcox<matthew@wil.cx> wrote:
> > On Fri, Aug 14, 2009 at 05:21:32PM -0600, Chris Worley wrote:
> >> Sooner is better than waiting to coalesce. The longer an LBA is
> >> inactive, the better for any management scheme. If you wait until
> >> it's reused, you might as well forgo the advantages of TRIM/UNMAP. If
> >> a the controller wants to coalesce, let it coalesce.
> >
> > I'm sorry, you're wrong. There is a tradeoff point, and it's different
> > for each drive model. Sending down a steady stream of tiny TRIMs is
> > going to give terrible performance.
>
> Sounds like you might be using junk for a device?
>
> For junk, a little coalescing may be warranted... like in the I/O
> schedular, but no more than 100usecs wait before posting, or then you
> effect high performing devices too.

Um, I think you missed the original point in all of this at the
beginning of the thread: On ATA TRIM commands cannot be tagged. This
means you have to drain the outstanding NCQ commands (stalling the
device) before you can send a TRIM. If we do this for every discard,
the performance impact will be pretty devastating, hence the need to
coalesce. It's nothing really to do with device characteristics, it's
an ATA protocol problem.

James