Skip to contentSkip to conversation

jrcu: track #passes since last end-of-batch

PATCH New Joe Korty 1 participant 1 message Mar 24, 2011

lore
Share & tools
lore

Joe Korty

author
#0 lore raw

PATCH 17/24 jrcu: track #passes since last end-of-batch

jrcu: track how many passes have gone by since last end-of-batch.

kernel/jrcu.c +6 -0
Index: b/kernel/jrcu.c
===================================================================
@@ -120,6 +120,7 @@ static struct rcu_data rcu_data[NR_CPUS]
 /* debug & statistics stuff */
 static struct rcu_stats {
 	unsigned npasses;	/* #passes made */
+	unsigned nlast;		/* #passes since last end-of-batch */
 	unsigned nbatches;	/* #end-of-batches (eobs) seen */
 	atomic_t nbarriers;	/* #rcu barriers processed */
 	atomic_t nsyncs;	/* #rcu syncs processed */
@@ -329,6 +330,8 @@ static void __rcu_delimit_batches(struct
 	 * gone by.
 	 */
 	rcu_now = sched_clock();
+	rcu_stats.nlast++;
+
 	if (!eob && !rcu_timestamp
 	&& ((rcu_now - rcu_timestamp) > (s64)rcu_wdog * NSEC_PER_SEC)) {
 		rcu_stats.nforced++;
@@ -389,6 +392,7 @@ static void __rcu_delimit_batches(struct
 	 */
 	xchg(&rcu_which, prev); /* only place where rcu_which is written to */
 	rcu_stats.nbatches++;
+	rcu_stats.nlast = 0;
 }
 
 static void rcu_delimit_batches(void)
@@ -598,6 +602,8 @@ static int rcu_debugfs_show(struct seq_f
 		rcu_stats.nbatches);
 	seq_printf(m, "%14u: #passes not resulting in end-of-batch\n",
 		rcu_stats.npasses - rcu_stats.nbatches);
+	seq_printf(m, "%14u: #passes since last end-of-batch\n",
+		rcu_stats.nlast);
 	seq_printf(m, "%14u: #msecs since last end-of-batch\n",
 		msecs);
 	seq_printf(m, "%14u: #passes forced (0 is best)\n",