Re: [PATCH] rcu: Avoid unnecessary contention of rcu node lock

From: Byungchul Park
Date: Tue Nov 15 2016 - 23:53:54 EST


On Wed, Nov 09, 2016 at 05:57:13PM +0900, Byungchul Park wrote:
> It's unnecessary to try to print stacks of blocked tasks in the case
> that ndetected == 0. Furthermore, calling rcu_print_detail_task_stall()
> causes to acquire rnp locks as many times as the number of leaf nodes
> plus one for root node. It's unnecessary at all in the case.

Hello,

I have two questions. Could you answer them?

1. What do you think about this patch?
2. Is there a tree where patches about rcu are pulled into, before
being pulled into mainline tree?
For example, tip tree in case of scheduler patches.

It would be appriciated if you answer them.

Thank you in advance,
Byungchul

>
> Signed-off-by: Byungchul Park <byungchul.park@xxxxxxx>
> ---
> 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 287f468..ab2f743 100644
> --- a/kernel/rcu/tree.c
> +++ b/kernel/rcu/tree.c
> @@ -1374,6 +1374,9 @@ static void print_other_cpu_stall(struct rcu_state *rsp, unsigned long gpnum)
> (long)rsp->gpnum, (long)rsp->completed, totqlen);
> if (ndetected) {
> rcu_dump_cpu_stacks(rsp);
> +
> + /* Complain about tasks blocking the grace period. */
> + rcu_print_detail_task_stall(rsp);
> } else {
> if (READ_ONCE(rsp->gpnum) != gpnum ||
> READ_ONCE(rsp->completed) == gpnum) {
> @@ -1390,9 +1393,6 @@ static void print_other_cpu_stall(struct rcu_state *rsp, unsigned long gpnum)
> }
> }
>
> - /* Complain about tasks blocking the grace period. */
> - rcu_print_detail_task_stall(rsp);
> -
> rcu_check_gp_kthread_starvation(rsp);
>
> panic_on_rcu_stall();
> --
> 1.9.1