Thread (17 messages) 17 messages, 8 authors, 2022-02-12

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

From: Andrew Morton <akpm@linux-foundation.org>
Date: 2021-12-02 21:58:31
Also in: linux-fsdevel, linux-mm, lkml

On Thu, 2 Dec 2021 21:05:01 +0300 ValdikSS [off-list ref] 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.

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?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help