Re: [PATCH] mm/vmscan: add sysctl knobs for protecting the working set

From: Oleksandr Natalenko
Date: Fri Dec 03 2021 - 09:01:24 EST


Hello.

On čtvrtek 2. prosince 2021 22:58:24 CET Andrew Morton wrote:
> On Thu, 2 Dec 2021 21:05:01 +0300 ValdikSS <iam@xxxxxxxxxxxxxxx> wrote:
> > This patchset is surprisingly effective and very useful for low-end PC
> > with slow HDD, single-board ARM boards with slow storage, cheap Android
> > smartphones with limited amount of memory. It almost completely prevents
> > thrashing condition and aids in fast OOM killer invocation.
> >
> > The similar file-locking patch is used in ChromeOS for nearly 10 years
> > but not on stock Linux or Android. It would be very beneficial for
> > lower-performance Android phones, SBCs, old PCs and other devices.
> >
> > With this patch, combined with zram, I'm able to run the following
> > software on an old office PC from 2007 with __only 2GB of RAM__
> >
> > simultaneously:
> > * Firefox with 37 active tabs (all data in RAM, no tab unloading)
> > * Discord
> > * Skype
> > * LibreOffice with the document opened
> > * Two PDF files (14 and 47 megabytes in size)
> >
> > And the PC doesn't crawl like a snail, even with 2+ GB in zram!
> > Without the patch, this PC is barely usable.
> > Please watch the video:
> > https://notes.valdikss.org.ru/linux-for-old-pc-from-2007/en/
>
> This is quite a condemnation of the current VM. It shouldn't crawl
> like a snail.
>
> The patch simply sets hard limits on page reclaim's malfunctioning.
> I'd prefer that reclaim not malfunction :(
>
> That being said, I can see that a blunt instrument like this would be
> useful.
>
> I don't think that the limits should be "N bytes on the current node".
> Nodes can have different amounts of memory so I expect it should scale
> the hard limits on a per-node basis. And of course, the various zones
> have different size as well.

Probably not. To my understanding, the limits should roughly correspond to
what you see after executing this:

```
$ echo 1 | sudo tee /proc/sys/vm/drop_caches; grep -F 'Active(file)' /proc/
meminfo
```

IMO, this has nothing to do with the size of the node.

> We do already have a lot of sysctls for controlling these sort of
> things. Was much work put into attempting to utilize the existing
> sysctls to overcome these issues?

--
Oleksandr Natalenko (post-factum)