Re: [mm-unstable v4 4/5] mm: workingset: move the stats flush into workingset_test_recent()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Nov 29, 2023 at 03:21:52AM +0000, Yosry Ahmed wrote:
> The workingset code flushes the stats in workingset_refault() to get
> accurate stats of the eviction memcg. In preparation for more scoped
> flushed and passing the eviction memcg to the flush call, move the call
> to workingset_test_recent() where we have a pointer to the eviction
> memcg.
> 
> The flush call is sleepable, and cannot be made in an rcu read section.
> Hence, minimize the rcu read section by also moving it into
> workingset_test_recent(). Furthermore, instead of holding the rcu read
> lock throughout workingset_test_recent(), only hold it briefly to get a
> ref on the eviction memcg. This allows us to make the flush call after
> we get the eviction memcg.
> 
> As for workingset_refault(), nothing else there appears to be protected
> by rcu. The memcg of the faulted folio (which is not necessarily the
> same as the eviction memcg) is protected by the folio lock, which is
> held from all callsites. Add a VM_BUG_ON() to make sure this doesn't
> change from under us.
> 
> No functional change intended.
> 
> Signed-off-by: Yosry Ahmed <yosryahmed@xxxxxxxxxx>
> Tested-by: Domenico Cerasuolo <cerasuolodomenico@xxxxxxxxx>

Acked-by: Shakeel Butt <shakeelb@xxxxxxxxxx>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux