diff options
author | Paul E. McKenney <paul.mckenney@linaro.org> | 2011-02-22 13:42:43 -0800 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2011-05-05 23:16:55 -0700 |
commit | 0ea1f2ebeb217d38770aebf91c4ecaa8e01b3305 (patch) | |
tree | ef558d2eb804ca033a5166d24f5b4be7cf87727f /kernel/rcutree.h | |
parent | 67b98dba474f293c389fc2b7254dcf7c0492e3bd (diff) | |
download | linux-0ea1f2ebeb217d38770aebf91c4ecaa8e01b3305.tar.gz linux-0ea1f2ebeb217d38770aebf91c4ecaa8e01b3305.tar.bz2 linux-0ea1f2ebeb217d38770aebf91c4ecaa8e01b3305.zip |
rcu: Add boosting to TREE_PREEMPT_RCU tracing
Includes total number of tasks boosted, number boosted on behalf of each
of normal and expedited grace periods, and statistics on attempts to
initiate boosting that failed for various reasons.
Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
Diffstat (limited to 'kernel/rcutree.h')
-rw-r--r-- | kernel/rcutree.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/kernel/rcutree.h b/kernel/rcutree.h index 8db0cdc7f450..d49046c79c59 100644 --- a/kernel/rcutree.h +++ b/kernel/rcutree.h @@ -152,6 +152,25 @@ struct rcu_node { wait_queue_head_t boost_wq; /* Wait queue on which to park the boost */ /* kthread. */ + unsigned long n_tasks_boosted; + /* Total number of tasks boosted. */ + unsigned long n_exp_boosts; + /* Number of tasks boosted for expedited GP. */ + unsigned long n_normal_boosts; + /* Number of tasks boosted for normal GP. */ + unsigned long n_balk_blkd_tasks; + /* Refused to boost: no blocked tasks. */ + unsigned long n_balk_exp_gp_tasks; + /* Refused to boost: nothing blocking GP. */ + unsigned long n_balk_boost_tasks; + /* Refused to boost: already boosting. */ + unsigned long n_balk_notblocked; + /* Refused to boost: RCU RS CS still running. */ + unsigned long n_balk_notyet; + /* Refused to boost: not yet time. */ + unsigned long n_balk_nos; + /* Refused to boost: not sure why, though. */ + /* This can happen due to race conditions. */ #endif /* #ifdef CONFIG_RCU_BOOST */ struct task_struct *node_kthread_task; /* kthread that takes care of this rcu_node */ |