Blame view

Documentation/RCU/stallwarn.rst 15.5 KB
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
1
2
3
  .. SPDX-License-Identifier: GPL-2.0
  
  ==============================
4c54005ca   Paul E. McKenney   rcu: 1Q2010 updat...
4
  Using RCU's CPU Stall Detector
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
5
  ==============================
4c54005ca   Paul E. McKenney   rcu: 1Q2010 updat...
6

8e2a43975   Paul E. McKenney   doc: Update stall...
7
8
9
10
11
12
13
  This document first discusses what sorts of issues RCU's CPU stall
  detector can locate, and then discusses kernel parameters and Kconfig
  options that can be used to fine-tune the detector's operation.  Finally,
  this document explains the stall detector's "splat" format.
  
  
  What Causes RCU CPU Stall Warnings?
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
14
  ===================================
8e2a43975   Paul E. McKenney   doc: Update stall...
15
16
17
18
  
  So your kernel printed an RCU CPU stall warning.  The next question is
  "What caused it?"  The following problems can result in RCU CPU stall
  warnings:
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
19
  -	A CPU looping in an RCU read-side critical section.
8e2a43975   Paul E. McKenney   doc: Update stall...
20

f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
21
  -	A CPU looping with interrupts disabled.
8e2a43975   Paul E. McKenney   doc: Update stall...
22

f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
23
  -	A CPU looping with preemption disabled.
8e2a43975   Paul E. McKenney   doc: Update stall...
24

f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
25
  -	A CPU looping with bottom halves disabled.
8e2a43975   Paul E. McKenney   doc: Update stall...
26

f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
27
  -	For !CONFIG_PREEMPT kernels, a CPU looping anywhere in the kernel
f2b1760ae   Paul E. McKenney   doc: Eliminate co...
28
29
30
  	without invoking schedule().  If the looping in the kernel is
  	really expected and desirable behavior, you might need to add
  	some calls to cond_resched().
8e2a43975   Paul E. McKenney   doc: Update stall...
31

f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
32
  -	Booting Linux using a console connection that is too slow to
8e2a43975   Paul E. McKenney   doc: Update stall...
33
34
35
36
37
  	keep up with the boot-time console-message rate.  For example,
  	a 115Kbaud serial console can be -way- too slow to keep up
  	with boot-time message rates, and will frequently result in
  	RCU CPU stall warning messages.  Especially if you have added
  	debug printk()s.
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
38
  -	Anything that prevents RCU's grace-period kthreads from running.
8e2a43975   Paul E. McKenney   doc: Update stall...
39
40
  	This can result in the "All QSes seen" console-log message.
  	This message will include information on when the kthread last
dfa0ee48e   Paul E. McKenney   documentation: Lo...
41
  	ran and how often it should be expected to run.  It can also
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
42
  	result in the ``rcu_.*kthread starved for`` console-log message,
dfa0ee48e   Paul E. McKenney   documentation: Lo...
43
  	which will include additional debugging information.
8e2a43975   Paul E. McKenney   doc: Update stall...
44

f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
45
  -	A CPU-bound real-time task in a CONFIG_PREEMPT kernel, which might
8e2a43975   Paul E. McKenney   doc: Update stall...
46
47
48
49
50
51
52
  	happen to preempt a low-priority task in the middle of an RCU
  	read-side critical section.   This is especially damaging if
  	that low-priority task is not permitted to run on any other CPU,
  	in which case the next RCU grace period can never complete, which
  	will eventually cause the system to run out of memory and hang.
  	While the system is in the process of running itself out of
  	memory, you might see stall-warning messages.
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
53
  -	A CPU-bound real-time task in a CONFIG_PREEMPT_RT kernel that
8e2a43975   Paul E. McKenney   doc: Update stall...
54
55
56
57
58
59
60
  	is running at a higher priority than the RCU softirq threads.
  	This will prevent RCU callbacks from ever being invoked,
  	and in a CONFIG_PREEMPT_RCU kernel will further prevent
  	RCU grace periods from ever completing.  Either way, the
  	system will eventually run out of memory and hang.  In the
  	CONFIG_PREEMPT_RCU case, you might see stall-warning
  	messages.
0500873de   Paul E. McKenney   doc: Add rcutree....
61
62
63
64
65
  	You can use the rcutree.kthread_prio kernel boot parameter to
  	increase the scheduling priority of RCU's kthreads, which can
  	help avoid this problem.  However, please note that doing this
  	can increase your system's context-switch rate and thus degrade
  	performance.
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
66
  -	A periodic interrupt whose handler takes longer than the time
dfa0ee48e   Paul E. McKenney   documentation: Lo...
67
68
69
70
71
72
  	interval between successive pairs of interrupts.  This can
  	prevent RCU's kthreads and softirq handlers from running.
  	Note that certain high-overhead debugging options, for example
  	the function_graph tracer, can result in interrupt handler taking
  	considerably longer than normal, which can in turn result in
  	RCU CPU stall warnings.
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
73
  -	Testing a workload on a fast system, tuning the stall-warning
3d916a443   Paul E. McKenney   documentation: Sl...
74
75
76
77
  	timeout down to just barely avoid RCU CPU stall warnings, and then
  	running the same workload with the same stall-warning timeout on a
  	slow system.  Note that thermal throttling and on-demand governors
  	can cause a single system to be sometimes fast and sometimes slow!
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
78
  -	A hardware or software issue shuts off the scheduler-clock
8e2a43975   Paul E. McKenney   doc: Update stall...
79
80
81
  	interrupt on a CPU that is not in dyntick-idle mode.  This
  	problem really has happened, and seems to be most likely to
  	result in RCU CPU stall warnings for CONFIG_NO_HZ_COMMON=n kernels.
b81898e3d   Paul E. McKenney   doc: Timer proble...
82
83
84
85
86
87
  -	A hardware or software issue that prevents time-based wakeups
  	from occurring.  These issues can range from misconfigured or
  	buggy timer hardware through bugs in the interrupt or exception
  	path (whether hardware, firmware, or software) through bugs
  	in Linux's timer subsystem through bugs in the scheduler, and,
  	yes, even including bugs in RCU itself.
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
88
  -	A bug in the RCU implementation.
8e2a43975   Paul E. McKenney   doc: Update stall...
89

f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
90
  -	A hardware failure.  This is quite unlikely, but has occurred
8e2a43975   Paul E. McKenney   doc: Update stall...
91
92
93
94
  	at least once in real life.  A CPU failed in a running system,
  	becoming unresponsive, but not causing an immediate crash.
  	This resulted in a series of RCU CPU stall warnings, eventually
  	leading the realization that the CPU had failed.
77095901b   Paul E. McKenney   doc: Update remov...
95
96
97
  The RCU, RCU-sched, and RCU-tasks implementations have CPU stall warning.
  Note that SRCU does -not- have CPU stall warnings.  Please note that
  RCU only detects CPU stalls when there is a grace period in progress.
8e2a43975   Paul E. McKenney   doc: Update stall...
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
  No grace period, no CPU stall warnings.
  
  To diagnose the cause of the stall, inspect the stack traces.
  The offending function will usually be near the top of the stack.
  If you have a series of stall warnings from a single extended stall,
  comparing the stack traces can often help determine where the stall
  is occurring, which will usually be in the function nearest the top of
  that portion of the stack which remains the same from trace to trace.
  If you can reliably trigger the stall, ftrace can be quite helpful.
  
  RCU bugs can often be debugged with the help of CONFIG_RCU_TRACE
  and with RCU's event tracing.  For information on RCU's event tracing,
  see include/trace/events/rcu.h.
  
  
  Fine-Tuning the RCU CPU Stall Detector
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
114
  ======================================
8e2a43975   Paul E. McKenney   doc: Update stall...
115
116
117
118
119
  
  The rcuupdate.rcu_cpu_stall_suppress module parameter disables RCU's
  CPU stall detector, which detects conditions that unduly delay RCU grace
  periods.  This module parameter enables CPU stall detection by default,
  but may be overridden via boot-time parameter or at runtime via sysfs.
a00e0d714   Paul E. McKenney   rcu: Remove condi...
120
121
  The stall detector's idea of what constitutes "unduly delayed" is
  controlled by a set of kernel configuration variables and cpp macros:
4c54005ca   Paul E. McKenney   rcu: 1Q2010 updat...
122

a00e0d714   Paul E. McKenney   rcu: Remove condi...
123
  CONFIG_RCU_CPU_STALL_TIMEOUT
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
124
  ----------------------------
4c54005ca   Paul E. McKenney   rcu: 1Q2010 updat...
125

a00e0d714   Paul E. McKenney   rcu: Remove condi...
126
127
128
  	This kernel configuration parameter defines the period of time
  	that RCU will wait from the beginning of a grace period until it
  	issues an RCU CPU stall warning.  This time period is normally
64d3b7a1d   Paul E. McKenney   rcu: Update stall...
129
  	21 seconds.
4c54005ca   Paul E. McKenney   rcu: 1Q2010 updat...
130

24cd7fd0e   Paul E. McKenney   rcu: Update stall...
131
  	This configuration parameter may be changed at runtime via the
84596ccbf   Xie XiuQi   documentation: Up...
132
  	/sys/module/rcupdate/parameters/rcu_cpu_stall_timeout, however
24cd7fd0e   Paul E. McKenney   rcu: Update stall...
133
  	this parameter is checked only at the beginning of a cycle.
64d3b7a1d   Paul E. McKenney   rcu: Update stall...
134
  	So if you are 10 seconds into a 40-second stall, setting this
24cd7fd0e   Paul E. McKenney   rcu: Update stall...
135
136
137
138
  	sysfs parameter to (say) five will shorten the timeout for the
  	-next- stall, or the following warning for the current stall
  	(assuming the stall lasts long enough).  It will not affect the
  	timing of the next warning for the current stall.
4c54005ca   Paul E. McKenney   rcu: 1Q2010 updat...
139

24cd7fd0e   Paul E. McKenney   rcu: Update stall...
140
  	Stall-warning messages may be enabled and disabled completely via
96224daa1   Paul E. McKenney   documentation: Up...
141
  	/sys/module/rcupdate/parameters/rcu_cpu_stall_suppress.
24cd7fd0e   Paul E. McKenney   rcu: Update stall...
142

24cd7fd0e   Paul E. McKenney   rcu: Update stall...
143
  RCU_STALL_DELAY_DELTA
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
144
  ---------------------
24cd7fd0e   Paul E. McKenney   rcu: Update stall...
145
146
147
148
  
  	Although the lockdep facility is extremely useful, it does add
  	some overhead.  Therefore, under CONFIG_PROVE_RCU, the
  	RCU_STALL_DELAY_DELTA macro allows five extra seconds before
64d3b7a1d   Paul E. McKenney   rcu: Update stall...
149
150
  	giving an RCU CPU stall warning message.  (This is a cpp
  	macro, not a kernel configuration parameter.)
4c54005ca   Paul E. McKenney   rcu: 1Q2010 updat...
151
152
  
  RCU_STALL_RAT_DELAY
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
153
  -------------------
4c54005ca   Paul E. McKenney   rcu: 1Q2010 updat...
154

f1d507bee   Paul E. McKenney   rcu: improve the ...
155
156
157
158
159
  	The CPU stall detector tries to make the offending CPU print its
  	own warnings, as this often gives better-quality stack traces.
  	However, if the offending CPU does not detect its own stall in
  	the number of jiffies specified by RCU_STALL_RAT_DELAY, then
  	some other CPU will complain.  This delay is normally set to
64d3b7a1d   Paul E. McKenney   rcu: Update stall...
160
161
  	two jiffies.  (This is a cpp macro, not a kernel configuration
  	parameter.)
4c54005ca   Paul E. McKenney   rcu: 1Q2010 updat...
162

37fe5f0e2   Paul E. McKenney   documentation: Ad...
163
  rcupdate.rcu_task_stall_timeout
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
164
  -------------------------------
37fe5f0e2   Paul E. McKenney   documentation: Ad...
165
166
167
168
  
  	This boot/sysfs parameter controls the RCU-tasks stall warning
  	interval.  A value of zero or less suppresses RCU-tasks stall
  	warnings.  A positive value sets the stall-warning interval
588759a39   Zhenzhong Duan   doc: Fixup defini...
169
  	in seconds.  An RCU-tasks stall warning starts with the line:
37fe5f0e2   Paul E. McKenney   documentation: Ad...
170
171
172
173
174
  
  		INFO: rcu_tasks detected stalls on tasks:
  
  	And continues with the output of sched_show_task() for each
  	task stalling the current RCU-tasks grace period.
8e2a43975   Paul E. McKenney   doc: Update stall...
175
176
  
  Interpreting RCU's CPU Stall-Detector "Splats"
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
177
  ==============================================
8e2a43975   Paul E. McKenney   doc: Update stall...
178

37fe5f0e2   Paul E. McKenney   documentation: Ad...
179
  For non-RCU-tasks flavors of RCU, when a CPU detects that it is stalling,
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
180
  it will print a message similar to the following::
f1d507bee   Paul E. McKenney   rcu: improve the ...
181

d3cf5176d   Paul E. McKenney   documentation: Up...
182
183
184
  	INFO: rcu_sched detected stalls on CPUs/tasks:
  	2-...: (3 GPs behind) idle=06c/0/0 softirq=1453/1455 fqs=0
  	16-...: (0 ticks this GP) idle=81c/0/0 softirq=764/764 fqs=0
e1333462e   Paul E. McKenney   doc: Update RCU C...
185
  	(detected by 32, t=2603 jiffies, g=7075, q=625)
f1d507bee   Paul E. McKenney   rcu: improve the ...
186

d3cf5176d   Paul E. McKenney   documentation: Up...
187
188
  This message indicates that CPU 32 detected that CPUs 2 and 16 were both
  causing stalls, and that the stall was affecting RCU-sched.  This message
f1d507bee   Paul E. McKenney   rcu: improve the ...
189
  will normally be followed by stack dumps for each CPU.  Please note that
d3cf5176d   Paul E. McKenney   documentation: Up...
190
191
  PREEMPT_RCU builds can be stalled by tasks as well as by CPUs, and that
  the tasks will be indicated by PID, for example, "P3421".  It is even
dd944caa8   Joel Fernandes (Google)   doc: Remove rcu_p...
192
193
  possible for an rcu_state stall to be caused by both CPUs -and- tasks,
  in which case the offending CPUs and tasks will all be called out in the list.
24cd7fd0e   Paul E. McKenney   rcu: Update stall...
194

d3cf5176d   Paul E. McKenney   documentation: Up...
195
196
197
198
  CPU 2's "(3 GPs behind)" indicates that this CPU has not interacted with
  the RCU core for the past three grace periods.  In contrast, CPU 16's "(0
  ticks this GP)" indicates that this CPU has not taken any scheduling-clock
  interrupts during the current stalled grace period.
24cd7fd0e   Paul E. McKenney   rcu: Update stall...
199
200
201
  
  The "idle=" portion of the message prints the dyntick-idle state.
  The hex number before the first "/" is the low-order 12 bits of the
d3cf5176d   Paul E. McKenney   documentation: Up...
202
203
204
205
206
  dynticks counter, which will have an even-numbered value if the CPU
  is in dyntick-idle mode and an odd-numbered value otherwise.  The hex
  number between the two "/"s is the value of the nesting, which will be
  a small non-negative number if in the idle loop (as shown above) and a
  very large positive number otherwise.
24cd7fd0e   Paul E. McKenney   rcu: Update stall...
207

6231069bd   Paul E. McKenney   rcu: Add softirq-...
208
209
210
211
212
213
214
215
216
217
218
219
  The "softirq=" portion of the message tracks the number of RCU softirq
  handlers that the stalled CPU has executed.  The number before the "/"
  is the number that had executed since boot at the time that this CPU
  last noted the beginning of a grace period, which might be the current
  (stalled) grace period, or it might be some earlier grace period (for
  example, if the CPU might have been in dyntick-idle mode for an extended
  time period.  The number after the "/" is the number that have executed
  since boot until the current time.  If this latter number stays constant
  across repeated stall-warning messages, it is possible that RCU's softirq
  handlers are no longer able to execute on this CPU.  This can happen if
  the stalled CPU is spinning with interrupts are disabled, or, in -rt
  kernels, if a high-priority process is starving RCU's softirq handler.
a78ad16c7   Joel Fernandes (Google)   doc: Correct para...
220
  The "fqs=" shows the number of force-quiescent-state idle/offline
d3cf5176d   Paul E. McKenney   documentation: Up...
221
222
223
224
225
  detection passes that the grace-period kthread has made across this
  CPU since the last time that this CPU noted the beginning of a grace
  period.
  
  The "detected by" line indicates which CPU detected the stall (in this
e1333462e   Paul E. McKenney   doc: Update RCU C...
226
227
228
229
  case, CPU 32), how many jiffies have elapsed since the start of the grace
  period (in this case 2603), the grace-period sequence number (7075), and
  an estimate of the total number of RCU callbacks queued across all CPUs
  (625 in this case).
d3cf5176d   Paul E. McKenney   documentation: Up...
230
231
  
  In kernels with CONFIG_RCU_FAST_NO_HZ, more information is printed
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
232
  for each CPU::
d3cf5176d   Paul E. McKenney   documentation: Up...
233

77a40f970   Joel Fernandes (Google)   rcu: Remove kfree...
234
  	0: (64628 ticks this GP) idle=dd5/3fffffffffffffff/0 softirq=82/543 last_accelerate: a345/d342 dyntick_enabled: 1
d3cf5176d   Paul E. McKenney   documentation: Up...
235
236
237
238
  
  The "last_accelerate:" prints the low-order 16 bits (in hex) of the
  jiffies counter when this CPU last invoked rcu_try_advance_all_cbs()
  from rcu_needs_cpu() or last invoked rcu_accelerate_cbs() from
77a40f970   Joel Fernandes (Google)   rcu: Remove kfree...
239
240
  rcu_prepare_for_idle(). "dyntick_enabled: 1" indicates that dyntick-idle
  processing is enabled.
d3cf5176d   Paul E. McKenney   documentation: Up...
241
242
243
  
  If the grace period ends just as the stall warning starts printing,
  there will be a spurious stall-warning message, which will include
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
244
  the following::
d3cf5176d   Paul E. McKenney   documentation: Up...
245
246
247
248
249
250
251
252
253
254
255
256
  
  	INFO: Stall ended before state dump start
  
  This is rare, but does happen from time to time in real life.  It is also
  possible for a zero-jiffy stall to be flagged in this case, depending
  on how the stall warning and the grace-period initialization happen to
  interact.  Please note that it is not possible to entirely eliminate this
  sort of false positive without resorting to things like stop_machine(),
  which is overkill for this sort of problem.
  
  If all CPUs and tasks have passed through quiescent states, but the
  grace period has nevertheless failed to end, the stall-warning splat
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
257
  will include something like the following::
d3cf5176d   Paul E. McKenney   documentation: Up...
258
259
260
261
262
263
264
265
266
  
  	All QSes seen, last rcu_preempt kthread activity 23807 (4297905177-4297881370), jiffies_till_next_fqs=3, root ->qsmask 0x0
  
  The "23807" indicates that it has been more than 23 thousand jiffies
  since the grace-period kthread ran.  The "jiffies_till_next_fqs"
  indicates how frequently that kthread should run, giving the number
  of jiffies between force-quiescent-state scans, in this case three,
  which is way less than 23807.  Finally, the root rcu_node structure's
  ->qsmask field is printed, which will normally be zero.
24cd7fd0e   Paul E. McKenney   rcu: Update stall...
267

fb81a44b8   Paul E. McKenney   rcu: Add GP-kthre...
268
  If the relevant grace-period kthread has been unable to run prior to
d3cf5176d   Paul E. McKenney   documentation: Up...
269
  the stall warning, as was the case in the "All QSes seen" line above,
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
270
  the following additional line is printed::
fb81a44b8   Paul E. McKenney   rcu: Add GP-kthre...
271

e1333462e   Paul E. McKenney   doc: Update RCU C...
272
  	kthread starved for 23807 jiffies! g7075 f0x0 RCU_GP_WAIT_FQS(3) ->state=0x1 ->cpu=5
fb81a44b8   Paul E. McKenney   rcu: Add GP-kthre...
273

d3cf5176d   Paul E. McKenney   documentation: Up...
274
275
  Starving the grace-period kthreads of CPU time can of course result
  in RCU CPU stall warnings even when all CPUs and tasks have passed
e1333462e   Paul E. McKenney   doc: Update RCU C...
276
277
278
279
280
281
  through the required quiescent states.  The "g" number shows the current
  grace-period sequence number, the "f" precedes the ->gp_flags command
  to the grace-period kthread, the "RCU_GP_WAIT_FQS" indicates that the
  kthread is waiting for a short timeout, the "state" precedes value of the
  task_struct ->state field, and the "cpu" indicates that the grace-period
  kthread last ran on CPU 5.
fb81a44b8   Paul E. McKenney   rcu: Add GP-kthre...
282

24cd7fd0e   Paul E. McKenney   rcu: Update stall...
283
284
  
  Multiple Warnings From One Stall
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
285
  ================================
24cd7fd0e   Paul E. McKenney   rcu: Update stall...
286
287
288
289
290
291
  
  If a stall lasts long enough, multiple stall-warning messages will be
  printed for it.  The second and subsequent messages are printed at
  longer intervals, so that the time between (say) the first and second
  message will be about three times the interval between the beginning
  of the stall and the first message.
99a930b0d   Paul E. McKenney   documentation: De...
292
  Stall Warnings for Expedited Grace Periods
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
293
  ==========================================
99a930b0d   Paul E. McKenney   documentation: De...
294
295
  
  If an expedited grace period detects a stall, it will place a message
f2286ab99   Mauro Carvalho Chehab   docs: RCU: Conver...
296
  like the following in dmesg::
99a930b0d   Paul E. McKenney   documentation: De...
297

d3cf5176d   Paul E. McKenney   documentation: Up...
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
  	INFO: rcu_sched detected expedited stalls on CPUs/tasks: { 7-... } 21119 jiffies s: 73 root: 0x2/.
  
  This indicates that CPU 7 has failed to respond to a reschedule IPI.
  The three periods (".") following the CPU number indicate that the CPU
  is online (otherwise the first period would instead have been "O"),
  that the CPU was online at the beginning of the expedited grace period
  (otherwise the second period would have instead been "o"), and that
  the CPU has been online at least once since boot (otherwise, the third
  period would instead have been "N").  The number before the "jiffies"
  indicates that the expedited grace period has been going on for 21,119
  jiffies.  The number following the "s:" indicates that the expedited
  grace-period sequence counter is 73.  The fact that this last value is
  odd indicates that an expedited grace period is in flight.  The number
  following "root:" is a bitmask that indicates which children of the root
  rcu_node structure correspond to CPUs and/or tasks that are blocking the
  current expedited grace period.  If the tree had more than one level,
  additional hex numbers would be printed for the states of the other
  rcu_node structures in the tree.
  
  As with normal grace periods, PREEMPT_RCU builds can be stalled by
  tasks as well as by CPUs, and that the tasks will be indicated by PID,
  for example, "P3421".
99a930b0d   Paul E. McKenney   documentation: De...
320
321
  
  It is entirely possible to see stall warnings from normal and from
d3cf5176d   Paul E. McKenney   documentation: Up...
322
  expedited grace periods at about the same time during the same run.