提交 1eb52121 编写于 作者: S Shaohua Li 提交者: Paul E. McKenney

rcu: Avoid unnecessary self-wakeup of per-CPU kthreads

There are a number of cases where the RCU can find additional work
for the per-CPU kthread within the context of that per-CPU kthread.
In such cases, the per-CPU kthread is already running, so attempting
to wake itself up does nothing except waste CPU cycles.  This commit
therefore checks to see if it is in the per-CPU kthread context,
omitting the wakeup in this case.
Signed-off-by: NShaohua Li <shaohua.li@intel.com>
Signed-off-by: NPaul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
上级 1f288094
...@@ -1291,10 +1291,8 @@ static void invoke_rcu_callbacks_kthread(void) ...@@ -1291,10 +1291,8 @@ static void invoke_rcu_callbacks_kthread(void)
local_irq_save(flags); local_irq_save(flags);
__this_cpu_write(rcu_cpu_has_work, 1); __this_cpu_write(rcu_cpu_has_work, 1);
if (__this_cpu_read(rcu_cpu_kthread_task) == NULL) { if (__this_cpu_read(rcu_cpu_kthread_task) != NULL &&
local_irq_restore(flags); current != __this_cpu_read(rcu_cpu_kthread_task))
return;
}
wake_up_process(__this_cpu_read(rcu_cpu_kthread_task)); wake_up_process(__this_cpu_read(rcu_cpu_kthread_task));
local_irq_restore(flags); local_irq_restore(flags);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册