From 630769e32ba46d9b5cbf2fa107dbbd78479a8af2 Mon Sep 17 00:00:00 2001 From: Yaroslav Furman <yaro330@gmail.com> Date: Wed, 11 Dec 2019 03:06:26 +0300 Subject: [PATCH] rcu: Fix a performance regression. Commit "rcu: Create RCU-specific workqueues with rescuers" switched RCU to using local workqueses and removed power efficiency flag from them. This caused a performance regression that can be observed in Geekbench 5 after enabling CONFIG_WQ_POWER_EFFICIENT_DEFAULT: score went down from 760/2500 to 620/2300 (single/multi core respectively). Add WQ_POWER_EFFICIENT flag to avoid this regression. Change-Id: I2c4f41faa55548f9e81a1c0cbe10703948062d89 --- kernel/rcu/tree.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index ac9094677..a89e4210a 100755 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -4607,10 +4607,10 @@ void __init rcu_init(void) } /* Create workqueue for expedited GPs and for Tree SRCU. */ - rcu_gp_wq = alloc_workqueue("rcu_gp", WQ_POWER_EFFICIENT | WQ_MEM_RECLAIM | WQ_UNBOUND, 0); + rcu_gp_wq = alloc_workqueue("rcu_gp", WQ_POWER_EFFICIENT | WQ_MEM_RECLAIM, 0); WARN_ON(!rcu_gp_wq); - rcu_par_gp_wq = alloc_workqueue("rcu_par_gp", WQ_POWER_EFFICIENT | WQ_MEM_RECLAIM | WQ_UNBOUND, 0); - WARN_ON(!rcu_par_gp_wq); + rcu_par_gp_wq = alloc_workqueue("rcu_par_gp", WQ_POWER_EFFICIENT | WQ_MEM_RECLAIM, 0); + WARN_ON(!rcu_par_gp_wq); srcu_init(); /* Fill in default value for rcutree.qovld boot parameter. */ /* -After- the rcu_node ->lock fields are initialized! */