jrcu: show #passes affected by NMI
PATCH 24/24 jrcu: show #passes affected by NMI
jrcu: show #passes affected by NMIs.
If one has a system that generates lots of NMIs, they may disturb jrcu significantly. It is good to see that happening in the rcudata file stats.
Signed-off-by Joe Korty <[email protected]>
kernel/jrcu.c +11 -7
@@ -122,6 +122,7 @@ static struct rcu_stats {unsigned npasses;/* #passes made */ unsigned nlast;/* #passes since last end-of-batch */ unsigned nbatches;/* #end-of-batches (eobs) seen */ +unsigned nmis;/* #passes discarded due to NMI */ atomic_t nbarriers;/* #rcu barriers processed */ atomic_t nsyncs;/* #rcu syncs processed */ u64 ninvoked;/* #invoked (ie, finished) callbacks */
@@ -302,17 +303,20 @@ static void __rcu_delimit_batches(structstruct rcu_list *plist;int cpu, eob, prev; +if (!rcu_scheduler_active) +return ; + + rcu_stats.nlast++; +/* If an NMI occured then the previous batch may not yet be * quiescent. Let's wait till it is. */ if (rcu_nmi_seen) { rcu_nmi_seen =0 ; + rcu_stats.nmis++;return ; } -if (!rcu_scheduler_active) -return ; -/* * Find out if the current batch has ended * (end-of-batch).
@@ -329,8 +333,6 @@ static void __rcu_delimit_batches(struct } } - rcu_stats.nlast++; -/* * Exit if batch has not ended. But first, tickle all non-cooperating * CPUs if enough time has passed.
@@ -345,7 +347,7 @@ static void __rcu_delimit_batches(struct } } rcu_wdog_ctr += rcu_hz_period_us; -return eob; +return ; }/*
@@ -603,10 +605,12 @@ static int rcu_debugfs_show(struct seq_fseq_printf (m,"\n" );seq_printf (m,"%14u: #passes\n" , rcu_stats.npasses); +seq_printf (m,"%14u: #passes discarded due to NMI\n" , + rcu_stats.nmis);seq_printf (m,"%14u: #passes resulting in end-of-batch\n" , rcu_stats.nbatches);seq_printf (m,"%14u: #passes not resulting in end-of-batch\n" , - rcu_stats.npasses - rcu_stats.nbatches); + rcu_stats.npasses - rcu_stats.nbatches - rcu_stats.nmis);seq_printf (m,"%14u: #passes since last end-of-batch\n" , rcu_stats.nlast); seq_printf(m, "%14u: #passes forced (0 is best)\n",