Re: [PATCH 0/3] zsmalloc: small compaction improvements

Sergey Senozhatsky
2015-07-14T00:31:03Z

Hello Minchan,

On (07/14/15 08:36), Minchan Kim wrote:
[..]
> > if [ `cat /sys/block/zram<id>/compact` -gt 10 ]; then
> > echo 1 > /sys/block/zram<id>/compact;
> > fi
> >
> > Up until now user space could not tell whether compaction
> > will result in any gain.
>
> First of all, thanks for the looking this.
>
> Question:
>
> What is motivation?
> IOW, did you see big overhead by user-triggered compaction? so,
> do you want to throttle it by userspace?

It depends on 'big overhead' definition, of course. We don't care
that much when compaction is issued by the shrinker, because things
are getting bad and we can sacrifice performance. But user triggered
compaction on a I/O pressured device can needlessly slow things down,
especially now, when we drain ALMOST_FULL classes.

/sys/block/zram<id>/compact is a black box. We provide it, we don't
throttle it in the kernel, and user space is absolutely clueless when
it invokes compaction. From some remote (or alternative) point of
view compaction can be seen as "zsmalloc's cache flush" (unused objects
make write path quicker - no zspage allocation needed) and it won't
hurt to give user space some numbers so it can decide if the whole
thing is worth it (that decision is, once again, I/O pattern and
setup specific -- some users may be interested in compaction only
if it will reduce zsmalloc's memory consumption by, say, 15%).

-ss