Re: [PATCH 1/1] zram: better utilization of zram swap space

From: Minchan Kim
Date: Sun Dec 10 2017 - 19:16:44 EST


Hi Gopi and Sergey,

On Thu, Dec 07, 2017 at 05:45:10PM +0900, Sergey Senozhatsky wrote:
> On (12/07/17 13:52), Gopi Sai Teja wrote:
> > If the length of the compressed page is greater than 75% of the PAGE_SIZE,
> > then the page is stored uncompressed in zram space. Zram space utilization
> > is improved if the threshold is 80%(5 compressed pages can be stored in
> > 4 pages).
> >
> > If the compressed length is greater than 3068 and less than 3261, pages
> > still can be stored in compressed form in zs_malloc class 3264.
> > Currently these compressed pages belong to 4096 zs malloc class.
>
> so this makes sense. I had another idea awhile ago
>
> lkml.kernel.org/r/1456061274-20059-2-git-send-email-sergey.senozhatsky@xxxxxxxxx
>
> in short, 3261 is good, but not as good as it possibly can be. for the
> time being, our huge-class watermark starts at 3264. but this can
> change.
>
>
> a side note, I think we have sort of wrong API. zsmalloc knows better which
> object is huge. and who knows, may be we will change the number of huge
> classes someday or huge-class watermark, etc. so having "hey zsmalloc, is
> this object huge or not" API seems to be better than ZRAM's enforcement
> "hey zsmalloc, this object is huge".
>
> -ss

I agree. zram shouldn't be aware of allocator internal.
It would be better for zram to use *int zs_max_zpage_size(struct zs_pool *pool)*
to set up max_zpage_size.
Let's hide the allocator's detail to the exported function.

Thanks.