All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@kernel.org>
To: Uladzislau Rezki <urezki@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	LKML <linux-kernel@vger.kernel.org>, RCU <rcu@vger.kernel.org>,
	Michal Hocko <mhocko@suse.com>, Daniel Axtens <dja@axtens.net>,
	Frederic Weisbecker <frederic@kernel.org>,
	Neeraj Upadhyay <neeraju@codeaurora.org>,
	Joel Fernandes <joel@joelfernandes.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	"Theodore Y . Ts'o" <tytso@mit.edu>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	Oleksiy Avramchenko <oleksiy.avramchenko@sonymobile.com>
Subject: Re: [PATCH v1 4/5] kvfree_rcu: Refactor kfree_rcu_monitor() function
Date: Mon, 10 May 2021 07:01:43 -0700	[thread overview]
Message-ID: <20210510140143.GD975577@paulmck-ThinkPad-P17-Gen-1> (raw)
In-Reply-To: <20210510100901.GA2019@pc638.lan>

On Mon, May 10, 2021 at 12:09:01PM +0200, Uladzislau Rezki wrote:
> On Sun, May 09, 2021 at 04:59:54PM -0700, Andrew Morton wrote:
> > On Wed, 28 Apr 2021 15:44:21 +0200 "Uladzislau Rezki (Sony)" <urezki@gmail.com> wrote:
> > 
> > > Rearm the monitor work directly from its own function that
> > > is kfree_rcu_monitor(). So this patch puts the invocation
> > > timing control in one place.
> > >
> > > ...
> > >
> > > --- a/kernel/rcu/tree.c
> > > +++ b/kernel/rcu/tree.c
> > > @@ -3415,37 +3415,44 @@ static inline bool queue_kfree_rcu_work(struct kfree_rcu_cpu *krcp)
> > >  	return !repeat;
> > >  }
> > >  
> > > -static inline void kfree_rcu_drain_unlock(struct kfree_rcu_cpu *krcp,
> > > -					  unsigned long flags)
> > > +/*
> > > + * This function queues a new batch. If success or nothing to
> > > + * drain it returns 1. Otherwise 0 is returned indicating that
> > > + * a reclaim kthread has not processed a previous batch.
> > > + */
> > > +static inline int kfree_rcu_drain(struct kfree_rcu_cpu *krcp)
> > >  {
> > > +	unsigned long flags;
> > > +	int ret;
> > > +
> > > +	raw_spin_lock_irqsave(&krcp->lock, flags);
> > > +
> > >  	// Attempt to start a new batch.
> > > -	if (queue_kfree_rcu_work(krcp)) {
> > > +	ret = queue_kfree_rcu_work(krcp);
> > 
> > This code has changed slightly in mainline.  Can you please redo,
> > retest and resend?
> > 
> > > +	if (ret)
> > >  		// Success! Our job is done here.
> > >  		krcp->monitor_todo = false;
> > > -		raw_spin_unlock_irqrestore(&krcp->lock, flags);
> > > -		return;
> > > -	}
> > 
> > It's conventional to retain the braces here, otherwise the code looks
> > weird.  Unless you're a python programmer ;)
> > 
> > 
> Hello, Anrew.
> 
> This refactoring is not up to date and is obsolete, instead we have done 
> bigger rework of kfree_rcu_monitor(). It is located here:
> 
> https://kernel.googlesource.com/pub/scm/linux/kernel/git/paulmck/linux-rcu/+/2349a35d39e7af5eef9064cbd0e42309040551da%5E%21/#F0

If Andrew would like to start taking these kvfree_rcu() patches,
that would be all to the good.  For example, there is likely much
more opportunity for optimization by bringing them closer to the
sl*b allocators.  Yes, they will need some privileged access to RCU
internals, but not that much.  And at some point, they should move from
their current home in kernel/rcu/tree.c to somewhere in mm.

To that end, here is the list in -rcu against current mainline, from
youngest to oldest:

b5691dd1cd7a kvfree_rcu: Fix comments according to current code
2349a35d39e7 kvfree_rcu: Refactor kfree_rcu_monitor()
bfa15885893f kvfree_rcu: Release a page cache under memory pressure
de9d86c3b0b7 kvfree_rcu: Use [READ/WRITE]_ONCE() macros to access to nr_bkv_objs
54a0393340f7 kvfree_rcu: Add a bulk-list check when a scheduler is run
7490789de1ac kvfree_rcu: Update "monitor_todo" once a batch is started
28e690ce0347 kvfree_rcu: Use kfree_rcu_monitor() instead of open-coded variant

Please let me know how you would like to proceed.

							Thanx, Paul

  reply	other threads:[~2021-05-10 14:07 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-28 13:44 [PATCH v1 1/5] mm/vmalloc.c: Introduce vfree_bulk() interface Uladzislau Rezki (Sony)
2021-04-28 13:44 ` [PATCH v1 2/5] kvfree_rcu: Switch to vfree_bulk() in kfree_rcu_work() Uladzislau Rezki (Sony)
2021-04-28 13:44 ` [PATCH v1 3/5] kvfree_rcu: Rename rcu_invoke_kfree_bulk_callback Uladzislau Rezki (Sony)
2021-04-28 13:44 ` [PATCH v1 4/5] kvfree_rcu: Refactor kfree_rcu_monitor() function Uladzislau Rezki (Sony)
2021-05-03 18:12   ` Uladzislau Rezki
2021-05-03 22:52     ` Paul E. McKenney
2021-05-04 13:46       ` Uladzislau Rezki
2021-05-09 23:59   ` Andrew Morton
2021-05-10 10:09     ` Uladzislau Rezki
2021-05-10 14:01       ` Paul E. McKenney [this message]
2021-05-10 14:20         ` Uladzislau Rezki
2021-04-28 13:44 ` [PATCH v1 5/5] kvfree_rcu: Fix comments according to current code Uladzislau Rezki (Sony)
2021-05-03 16:47   ` Paul E. McKenney
2021-05-03 19:34     ` Uladzislau Rezki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210510140143.GD975577@paulmck-ThinkPad-P17-Gen-1 \
    --to=paulmck@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=bigeasy@linutronix.de \
    --cc=dja@axtens.net \
    --cc=frederic@kernel.org \
    --cc=joel@joelfernandes.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mhocko@suse.com \
    --cc=neeraju@codeaurora.org \
    --cc=oleksiy.avramchenko@sonymobile.com \
    --cc=peterz@infradead.org \
    --cc=rcu@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tytso@mit.edu \
    --cc=urezki@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.