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

rcu: Add callbacks-invoked counters



This commit adds a count of the callbacks invoked to the per-CPU rcu_data
structure.  This count is printed by the show_rcu_gp_kthreads() that
is invoked by rcutorture and the RCU CPU stall-warning code.  It is also
intended for use by drgn.

Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
parent abfce041
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2443,6 +2443,7 @@ static void rcu_do_batch(struct rcu_data *rdp)
	local_irq_save(flags);
	rcu_nocb_lock(rdp);
	count = -rcl.len;
	rdp->n_cbs_invoked += count;
	trace_rcu_batch_end(rcu_state.name, count, !!rcl.head, need_resched(),
			    is_idle_task(current), rcu_is_callbacks_kthread());

+1 −0
Original line number Diff line number Diff line
@@ -171,6 +171,7 @@ struct rcu_data {
					/* different grace periods. */
	long		qlen_last_fqs_check;
					/* qlen at last check for QS forcing */
	unsigned long	n_cbs_invoked;	/* # callbacks invoked since boot. */
	unsigned long	n_force_qs_snap;
					/* did other CPU force QS recently? */
	long		blimit;		/* Upper limit on a processed batch */
+3 −0
Original line number Diff line number Diff line
@@ -649,6 +649,7 @@ static void check_cpu_stall(struct rcu_data *rdp)
 */
void show_rcu_gp_kthreads(void)
{
	unsigned long cbs = 0;
	int cpu;
	unsigned long j;
	unsigned long ja;
@@ -690,9 +691,11 @@ void show_rcu_gp_kthreads(void)
	}
	for_each_possible_cpu(cpu) {
		rdp = per_cpu_ptr(&rcu_data, cpu);
		cbs += data_race(rdp->n_cbs_invoked);
		if (rcu_segcblist_is_offloaded(&rdp->cblist))
			show_rcu_nocb_state(rdp);
	}
	pr_info("RCU callbacks invoked since boot: %lu\n", cbs);
	show_rcu_tasks_gp_kthreads();
}
EXPORT_SYMBOL_GPL(show_rcu_gp_kthreads);