Commit 271a8467 authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

rcuscale: Measure RCU Tasks Trace grace-period kthread CPU time



This commit causes RCU Tasks Trace to output the CPU time consumed by
its grace-period kthread.  The CPU time is whatever is in the designated
task's current->stime field, and thus is controlled by whatever CPU-time
accounting scheme is in effect.

This output appears in microseconds as follows on the console:

rcu_scale: Grace-period kthread CPU time: 42367.037

[ paulmck: Apply Willy Tarreau feedback. ]

Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
parent 1d702e2e
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -505,6 +505,9 @@ void rcu_async_relax(void);
void rcupdate_announce_bootup_oddness(void);
#ifdef CONFIG_TASKS_RCU_GENERIC
void show_rcu_tasks_gp_kthreads(void);
# ifdef CONFIG_TASKS_RCU
struct task_struct *get_rcu_tasks_gp_kthread(void);
# endif // # ifdef CONFIG_TASKS_RCU
#else /* #ifdef CONFIG_TASKS_RCU_GENERIC */
static inline void show_rcu_tasks_gp_kthreads(void) {}
#endif /* #else #ifdef CONFIG_TASKS_RCU_GENERIC */
+1 −0
Original line number Diff line number Diff line
@@ -298,6 +298,7 @@ static struct rcu_scale_ops tasks_ops = {
	.gp_barrier	= rcu_barrier_tasks,
	.sync		= synchronize_rcu_tasks,
	.exp_sync	= synchronize_rcu_tasks,
	.rso_gp_kthread	= get_rcu_tasks_gp_kthread,
	.name		= "tasks"
};

+6 −0
Original line number Diff line number Diff line
@@ -1042,6 +1042,12 @@ void show_rcu_tasks_classic_gp_kthread(void)
EXPORT_SYMBOL_GPL(show_rcu_tasks_classic_gp_kthread);
#endif // !defined(CONFIG_TINY_RCU)

struct task_struct *get_rcu_tasks_gp_kthread(void)
{
	return rcu_tasks.kthread_ptr;
}
EXPORT_SYMBOL_GPL(get_rcu_tasks_gp_kthread);

/*
 * Contribute to protect against tasklist scan blind spot while the
 * task is exiting and may be removed from the tasklist. See