[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAOUHufbYhRoiFgwbRpz7Ce5tfec7fbUEjk8b9Zty22jz9tN5TA@mail.gmail.com>
Date: Thu, 10 Mar 2022 17:37:36 -0700
From: Yu Zhao <yuzhao@...gle.com>
To: Mike Rapoport <rppt@...nel.org>
Cc: Andrew Morton <akpm@...ux-foundation.org>,
Linus Torvalds <torvalds@...ux-foundation.org>,
Andi Kleen <ak@...ux.intel.com>,
Aneesh Kumar <aneesh.kumar@...ux.ibm.com>,
Catalin Marinas <catalin.marinas@....com>,
Dave Hansen <dave.hansen@...ux.intel.com>,
Hillf Danton <hdanton@...a.com>, Jens Axboe <axboe@...nel.dk>,
Jesse Barnes <jsbarnes@...gle.com>,
Johannes Weiner <hannes@...xchg.org>,
Jonathan Corbet <corbet@....net>,
Matthew Wilcox <willy@...radead.org>,
Mel Gorman <mgorman@...e.de>,
Michael Larabel <Michael@...haellarabel.com>,
Michal Hocko <mhocko@...nel.org>,
Rik van Riel <riel@...riel.com>,
Vlastimil Babka <vbabka@...e.cz>,
Will Deacon <will@...nel.org>,
Ying Huang <ying.huang@...el.com>,
Linux ARM <linux-arm-kernel@...ts.infradead.org>,
"open list:DOCUMENTATION" <linux-doc@...r.kernel.org>,
linux-kernel <linux-kernel@...r.kernel.org>,
Linux-MM <linux-mm@...ck.org>,
Kernel Page Reclaim v2 <page-reclaim@...gle.com>,
"the arch/x86 maintainers" <x86@...nel.org>,
Brian Geffon <bgeffon@...gle.com>,
Jan Alexander Steffens <heftig@...hlinux.org>,
Oleksandr Natalenko <oleksandr@...alenko.name>,
Steven Barrett <steven@...uorix.net>,
Suleiman Souhlal <suleiman@...gle.com>,
Daniel Byrne <djbyrne@....edu>,
Donald Carr <d@...os-reins.com>,
Holger Hoffstätte <holger@...lied-asynchrony.com>,
Konstantin Kharlamov <Hi-Angel@...dex.ru>,
Shuang Zhai <szhai2@...rochester.edu>,
Sofia Trinh <sofia.trinh@....works>,
Vaibhav Jain <vaibhav@...ux.ibm.com>
Subject: Re: [PATCH v9 13/14] mm: multi-gen LRU: admin guide
On Thu, Mar 10, 2022 at 5:30 AM Mike Rapoport <rppt@...nel.org> wrote:
>
> Hi,
>
> On Tue, Mar 08, 2022 at 07:12:30PM -0700, Yu Zhao wrote:
> > Add an admin guide.
> >
> > Signed-off-by: Yu Zhao <yuzhao@...gle.com>
> > Acked-by: Brian Geffon <bgeffon@...gle.com>
> > Acked-by: Jan Alexander Steffens (heftig) <heftig@...hlinux.org>
> > Acked-by: Oleksandr Natalenko <oleksandr@...alenko.name>
> > Acked-by: Steven Barrett <steven@...uorix.net>
> > Acked-by: Suleiman Souhlal <suleiman@...gle.com>
> > Tested-by: Daniel Byrne <djbyrne@....edu>
> > Tested-by: Donald Carr <d@...os-reins.com>
> > Tested-by: Holger Hoffstätte <holger@...lied-asynchrony.com>
> > Tested-by: Konstantin Kharlamov <Hi-Angel@...dex.ru>
> > Tested-by: Shuang Zhai <szhai2@...rochester.edu>
> > Tested-by: Sofia Trinh <sofia.trinh@....works>
> > Tested-by: Vaibhav Jain <vaibhav@...ux.ibm.com>
> > ---
> > Documentation/admin-guide/mm/index.rst | 1 +
> > Documentation/admin-guide/mm/multigen_lru.rst | 146 ++++++++++++++++++
> > mm/Kconfig | 3 +-
> > 3 files changed, 149 insertions(+), 1 deletion(-)
> > create mode 100644 Documentation/admin-guide/mm/multigen_lru.rst
> >
> > diff --git a/Documentation/admin-guide/mm/index.rst b/Documentation/admin-guide/mm/index.rst
> > index c21b5823f126..2cf5bae62036 100644
> > --- a/Documentation/admin-guide/mm/index.rst
> > +++ b/Documentation/admin-guide/mm/index.rst
> > @@ -32,6 +32,7 @@ the Linux memory management.
> > idle_page_tracking
> > ksm
> > memory-hotplug
> > + multigen_lru
> > nommu-mmap
> > numa_memory_policy
> > numaperf
> > diff --git a/Documentation/admin-guide/mm/multigen_lru.rst b/Documentation/admin-guide/mm/multigen_lru.rst
> > new file mode 100644
> > index 000000000000..4ea6a801dc56
> > --- /dev/null
> > +++ b/Documentation/admin-guide/mm/multigen_lru.rst
> > @@ -0,0 +1,146 @@
> > +.. SPDX-License-Identifier: GPL-2.0
> > +
> > +=============
> > +Multi-Gen LRU
> > +=============
>
> I'm still missing an opening paragraph the explains what is Multi-gen LRU
> and why users would want it.
>
> Something like
>
> Multi-gen LRU is an efficient mechanism for page reclamation.
>
> More details are of course welcome :)
I've add the following for the next spin:
+Page reclaim decides the kernel's caching policy and ability to
+overcommit memory. It directly impacts the kswapd CPU usage and RAM
+efficiency. Multi-gen LRU aims to optimize page reclaim and improve
+performance under memory pressure.
> > +Quick start
> > +===========
> > +Build the kernel with the following configurations.
> > +
> > +* ``CONFIG_LRU_GEN=y``
> > +* ``CONFIG_LRU_GEN_ENABLED=y``
> > +
> > +All set!
> > +
> > +Runtime options
> > +===============
> > +``/sys/kernel/mm/lru_gen/`` contains stable ABIs described in the
> > +following subsections.
> > +
> > +Kill switch
> > +-----------
> > +``enable`` accepts different values to enable or disabled the
>
> ^ disable
Good catch. Will fix it up.
> > +following components. The default value of this file depends on
> > +``CONFIG_LRU_GEN_ENABLED``. All the components should be enabled
> > +unless some of them have unforeseen side effects. Writing to
> > +``enable`` has no effect when a component is not supported by the
> > +hardware, and valid values will be accepted even when the main switch
> > +is off.
> > +
> > +====== ===============================================================
> > +Values Components
> > +====== ===============================================================
> > +0x0001 The main switch for the multi-gen LRU.
> > +0x0002 Clearing the accessed bit in leaf page table entries in large
> > + batches, when MMU sets it (e.g., on x86). This behavior can
> > + theoretically worsen lock contention (mmap_lock). If it is
> > + disabled, the multi-gen LRU will suffer a minor performance
> > + degradation.
> > +0x0004 Clearing the accessed bit in non-leaf page table entries as
> > + well, when MMU sets it (e.g., on x86). This behavior was not
> > + verified on x86 varieties other than Intel and AMD. If it is
> > + disabled, the multi-gen LRU will suffer a negligible
> > + performance degradation.
> > +[yYnN] Apply to all the components above.
> > +====== ===============================================================
> > +
> > +E.g.,
> > +::
> > +
> > + echo y >/sys/kernel/mm/lru_gen/enabled
> > + cat /sys/kernel/mm/lru_gen/enabled
> > + 0x0007
> > + echo 5 >/sys/kernel/mm/lru_gen/enabled
> > + cat /sys/kernel/mm/lru_gen/enabled
> > + 0x0005
> > +
> > +Thrashing prevention
> > +--------------------
> > +Personal computers are more sensitive to thrashing because it can
> > +cause janks (lags when rendering UI) and negatively impact user
> > +experience. The multi-gen LRU offers thrashing prevention to the
> > +majority of laptop and desktop users who do not have ``oomd``.
> > +
> > +Users can write ``N`` to ``min_ttl_ms`` to prevent the working set of
> > +``N`` milliseconds from getting evicted. The OOM killer is triggered
> > +if this working set cannot be kept in memory. In other words, this
> > +option works as an adjustable pressure relief valve, and when open, it
> > +terminates applications that are hopefully not being used.
> > +
> > +Based on the average human detectable lag (~100ms), ``N=1000`` usually
> > +eliminates intolerable janks due to thrashing. Larger values like
> > +``N=3000`` make janks less noticeable at the risk of premature OOM
> > +kills.
>
> What is the default value of min_ttl_ms?
Right. I've added the following for the next spin:
+The default value ``0`` means disabled.
Powered by blists - more mailing lists