Re: [RFC][PATCH v3 2/5] mm/zsmalloc: remove shrinker compaction callbacks

From: Sergey Senozhatsky
Date: Mon Mar 14 2016 - 21:04:27 EST


On (03/15/16 09:52), Minchan Kim wrote:
[..]
> > > I suggested to remove shrinker compaction but while I review your
> > > first patch in this thread, I thought we need upper-bound to
> > > compact zspage so background work can bail out for latency easily.
> > > IOW, the work could give up the job. In such case, we might need
> > > fall-back scheme to continue the job. And I think that could be
> > > a shrinker.
> > >
> > > What do you think?
> >
> > wouldn't this unnecessarily complicate the whole thing? we would
> > have
> > a) a compaction that can be triggered by used space
>
> Maybe, user space? :)

haha, yes! sorry, I do quite a lot of typos.

> > b) a compaction from zs_free() that can bail out
> > c) a compaction triggered by the shrinker.
> >
> > all 3 three can run simultaneously.
>
> Yeb.
>
> >
> >
> > _if_ we can keep every class below its watermark, we can reduce the
> > need of "c)".
>
> But the problem is timing. We cannot guarantee when background
> compaction triggers while shrinker is interop with VM so we should
> do the job instantly for the system.

we can have pool's compaction-kthread that we will wake_up()
every time we need a compaction, with no dependency on workqueue
or shrinker.

-ss