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

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

From: Oleksandr Natalenko <hidden>
Date: 2021-12-03 14:01:22
Also in: linux-fsdevel, linux-mm, lkml

Hello.

On čtvrtek 2. prosince 2021 22:58:24 CET Andrew Morton wrote:
On Thu, 2 Dec 2021 21:05:01 +0300 ValdikSS [off-list ref] wrote:
quoted
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)

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help