Re: [patch v5] mm: lru_cache_disable: replace work queue synchronization with synchronize_rcu

From: Andrew Morton
Date: Sat May 28 2022 - 17:18:19 EST


On Thu, 28 Apr 2022 15:00:11 -0300 Marcelo Tosatti <mtosatti@xxxxxxxxxx> wrote:

> On Thu, Mar 31, 2022 at 03:52:45PM +0200, Borislav Petkov wrote:
> > On Thu, Mar 10, 2022 at 10:22:12AM -0300, Marcelo Tosatti wrote:
> > >
> ...
>
> >
> > Someone pointed me at this:
> >
> > https://www.phoronix.com/scan.php?page=news_item&px=Linux-518-Stress-NUMA-Goes-Boom
> >
> > which says this one causes a performance regression with stress-ng's
> > NUMA test...
>
> Michael,
>
> This is probably do_migrate_pages that is taking too long due to
> synchronize_rcu().
>
> Switching to synchronize_rcu_expedited() should probably fix it...
> Can you give it a try, please?

I guess not.

Is anyone else able to demonstrate a stress-ng performance regression
due to ff042f4a9b0508? And if so, are they able to try Marcelo's
one-liner?

> diff --git a/mm/swap.c b/mm/swap.c
> index bceff0cb559c..04a8bbf9817a 100644
> --- a/mm/swap.c
> +++ b/mm/swap.c
> @@ -879,7 +879,7 @@ void lru_cache_disable(void)
> * lru_disable_count = 0 will have exited the critical
> * section when synchronize_rcu() returns.
> */
> - synchronize_rcu();
> + synchronize_rcu_expedited();
> #ifdef CONFIG_SMP
> __lru_add_drain_all(true);
> #else
>
>