Re: [PATH] z3fold: extend compaction function

From: Vitaly Wool
Date: Thu Nov 03 2016 - 17:35:08 EST


On Thu, Nov 3, 2016 at 10:16 PM, Andrew Morton
<akpm@xxxxxxxxxxxxxxxxxxxx> wrote:
> On Thu, 3 Nov 2016 22:04:28 +0100 Vitaly Wool <vitalywool@xxxxxxxxx> wrote:
>
>> z3fold_compact_page() currently only handles the situation when
>> there's a single middle chunk within the z3fold page. However it
>> may be worth it to move middle chunk closer to either first or
>> last chunk, whichever is there, if the gap between them is big
>> enough.
>
> "may be worth it" is vague. Does the patch improve the driver or does
> it not? If it *does* improve the driver then in what way? *Why* is is
> "worth it"?

Yep, I must admit I wasn't clear enough here. Basically compression
ratio wise, it always makes sense to move middle chunk as close as
possible to another in-page z3fold object, because then the third
object can use all the remaining space. However, moving big object
just by one chunk will hurt performance without gaining much
compression ratio wise. So the gap between the middle object and the
edge object should be big enough to justify the move.

So,
this patch improves compression ratio because in-page compaction
becomes more comprehensive;
this patch (which came as a surprise) also increases performance in
fio randrw tests (I am not 100% sure why, but probably due to less
actual page allocations on hot path due to denser in-page allocation).

~vitaly