Messages in this thread | | | From | Joel Fernandes <> | Date | Sun, 23 Oct 2022 20:36:00 -0400 | Subject | Re: [PATCH rcu 13/14] workqueue: Make queue_rcu_work() use call_rcu_flush() |
| |
Hello,
On Wed, Oct 19, 2022 at 6:51 PM Paul E. McKenney <paulmck@kernel.org> wrote: > > From: Uladzislau Rezki <urezki@gmail.com> > > call_rcu() changes to save power will slow down RCU workqueue items > queued via queue_rcu_work(). This may not be an issue, however we cannot > assume that workqueue users are OK with long delays. Use > call_rcu_flush() API instead which reverts to the old behavio
On ChromeOS, I can see that queue_rcu_work() is pretty noisy and the batching is much better if we can just keep it as call_rcu() instead of call_rcu_flush().
Is there really any reason to keep it as call_rcu_flush() ? If I recall, the real reason Vlad's system was slowing down was because of scsi and the queue_rcu_work() conversion was really a red herring.
Vlad, any thoughts?
thanks,
- Joel
. > > Signed-off-by: Uladzislau Rezki <urezki@gmail.com> > Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org> > Signed-off-by: Paul E. McKenney <paulmck@kernel.org> > --- > kernel/workqueue.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/workqueue.c b/kernel/workqueue.c > index 7cd5f5e7e0a1b..b4b0e828b529e 100644 > --- a/kernel/workqueue.c > +++ b/kernel/workqueue.c > @@ -1771,7 +1771,7 @@ bool queue_rcu_work(struct workqueue_struct *wq, struct rcu_work *rwork) > > if (!test_and_set_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(work))) { > rwork->wq = wq; > - call_rcu(&rwork->rcu, rcu_work_rcufn); > + call_rcu_flush(&rwork->rcu, rcu_work_rcufn); > return true; > } > > -- > 2.31.1.189.g2e36527f23 >
| |