diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2011-05-20 14:06:24 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2011-05-20 14:08:05 -0400 |
commit | 250f972d85effad5b6e10da4bbd877e6a4b503b6 (patch) | |
tree | 007393a6fc6439af7e0121dd99a6f9f9fb8405bc /Documentation/RCU/trace.txt | |
parent | 7372b0b122af0f6675f3ab65bfd91c8a438e0480 (diff) | |
parent | bbe7b8bef48c567f5ff3f6041c1fb011292e8f12 (diff) |
Merge branch 'timers/urgent' into timers/core
Reason: Get upstream fixes and kfree_rcu which is necessary for a
follow up patch.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'Documentation/RCU/trace.txt')
-rw-r--r-- | Documentation/RCU/trace.txt | 278 |
1 files changed, 231 insertions, 47 deletions
diff --git a/Documentation/RCU/trace.txt b/Documentation/RCU/trace.txt index 6a8c73f55b80..c078ad48f7a1 100644 --- a/Documentation/RCU/trace.txt +++ b/Documentation/RCU/trace.txt | |||
@@ -10,34 +10,46 @@ for rcutree and next for rcutiny. | |||
10 | 10 | ||
11 | CONFIG_TREE_RCU and CONFIG_TREE_PREEMPT_RCU debugfs Files and Formats | 11 | CONFIG_TREE_RCU and CONFIG_TREE_PREEMPT_RCU debugfs Files and Formats |
12 | 12 | ||
13 | These implementations of RCU provides five debugfs files under the | 13 | These implementations of RCU provides several debugfs files under the |
14 | top-level directory RCU: rcu/rcudata (which displays fields in struct | 14 | top-level directory "rcu": |
15 | rcu_data), rcu/rcudata.csv (which is a .csv spreadsheet version of | 15 | |
16 | rcu/rcudata), rcu/rcugp (which displays grace-period counters), | 16 | rcu/rcudata: |
17 | rcu/rcuhier (which displays the struct rcu_node hierarchy), and | 17 | Displays fields in struct rcu_data. |
18 | rcu/rcu_pending (which displays counts of the reasons that the | 18 | rcu/rcudata.csv: |
19 | rcu_pending() function decided that there was core RCU work to do). | 19 | Comma-separated values spreadsheet version of rcudata. |
20 | rcu/rcugp: | ||
21 | Displays grace-period counters. | ||
22 | rcu/rcuhier: | ||
23 | Displays the struct rcu_node hierarchy. | ||
24 | rcu/rcu_pending: | ||
25 | Displays counts of the reasons rcu_pending() decided that RCU had | ||
26 | work to do. | ||
27 | rcu/rcutorture: | ||
28 | Displays rcutorture test progress. | ||
29 | rcu/rcuboost: | ||
30 | Displays RCU boosting statistics. Only present if | ||
31 | CONFIG_RCU_BOOST=y. | ||
20 | 32 | ||
21 | The output of "cat rcu/rcudata" looks as follows: | 33 | The output of "cat rcu/rcudata" looks as follows: |
22 | 34 | ||
23 | rcu_sched: | 35 | rcu_sched: |
24 | 0 c=17829 g=17829 pq=1 pqc=17829 qp=0 dt=10951/1 dn=0 df=1101 of=0 ri=36 ql=0 b=10 | 36 | 0 c=20972 g=20973 pq=1 pqc=20972 qp=0 dt=545/1/0 df=50 of=0 ri=0 ql=163 qs=NRW. kt=0/W/0 ktl=ebc3 b=10 ci=153737 co=0 ca=0 |
25 | 1 c=17829 g=17829 pq=1 pqc=17829 qp=0 dt=16117/1 dn=0 df=1015 of=0 ri=0 ql=0 b=10 | 37 | 1 c=20972 g=20973 pq=1 pqc=20972 qp=0 dt=967/1/0 df=58 of=0 ri=0 ql=634 qs=NRW. kt=0/W/1 ktl=58c b=10 ci=191037 co=0 ca=0 |
26 | 2 c=17829 g=17829 pq=1 pqc=17829 qp=0 dt=1445/1 dn=0 df=1839 of=0 ri=0 ql=0 b=10 | 38 | 2 c=20972 g=20973 pq=1 pqc=20972 qp=0 dt=1081/1/0 df=175 of=0 ri=0 ql=74 qs=N.W. kt=0/W/2 ktl=da94 b=10 ci=75991 co=0 ca=0 |
27 | 3 c=17829 g=17829 pq=1 pqc=17829 qp=0 dt=6681/1 dn=0 df=1545 of=0 ri=0 ql=0 b=10 | 39 | 3 c=20942 g=20943 pq=1 pqc=20942 qp=1 dt=1846/0/0 df=404 of=0 ri=0 ql=0 qs=.... kt=0/W/3 ktl=d1cd b=10 ci=72261 co=0 ca=0 |
28 | 4 c=17829 g=17829 pq=1 pqc=17829 qp=0 dt=1003/1 dn=0 df=1992 of=0 ri=0 ql=0 b=10 | 40 | 4 c=20972 g=20973 pq=1 pqc=20972 qp=0 dt=369/1/0 df=83 of=0 ri=0 ql=48 qs=N.W. kt=0/W/4 ktl=e0e7 b=10 ci=128365 co=0 ca=0 |
29 | 5 c=17829 g=17830 pq=1 pqc=17829 qp=1 dt=3887/1 dn=0 df=3331 of=0 ri=4 ql=2 b=10 | 41 | 5 c=20972 g=20973 pq=1 pqc=20972 qp=0 dt=381/1/0 df=64 of=0 ri=0 ql=169 qs=NRW. kt=0/W/5 ktl=fb2f b=10 ci=164360 co=0 ca=0 |
30 | 6 c=17829 g=17829 pq=1 pqc=17829 qp=0 dt=859/1 dn=0 df=3224 of=0 ri=0 ql=0 b=10 | 42 | 6 c=20972 g=20973 pq=1 pqc=20972 qp=0 dt=1037/1/0 df=183 of=0 ri=0 ql=62 qs=N.W. kt=0/W/6 ktl=d2ad b=10 ci=65663 co=0 ca=0 |
31 | 7 c=17829 g=17830 pq=0 pqc=17829 qp=1 dt=3761/1 dn=0 df=1818 of=0 ri=0 ql=2 b=10 | 43 | 7 c=20897 g=20897 pq=1 pqc=20896 qp=0 dt=1572/0/0 df=382 of=0 ri=0 ql=0 qs=.... kt=0/W/7 ktl=cf15 b=10 ci=75006 co=0 ca=0 |
32 | rcu_bh: | 44 | rcu_bh: |
33 | 0 c=-275 g=-275 pq=1 pqc=-275 qp=0 dt=10951/1 dn=0 df=0 of=0 ri=0 ql=0 b=10 | 45 | 0 c=1480 g=1480 pq=1 pqc=1479 qp=0 dt=545/1/0 df=6 of=0 ri=1 ql=0 qs=.... kt=0/W/0 ktl=ebc3 b=10 ci=0 co=0 ca=0 |
34 | 1 c=-275 g=-275 pq=1 pqc=-275 qp=0 dt=16117/1 dn=0 df=13 of=0 ri=0 ql=0 b=10 | 46 | 1 c=1480 g=1480 pq=1 pqc=1479 qp=0 dt=967/1/0 df=3 of=0 ri=1 ql=0 qs=.... kt=0/W/1 ktl=58c b=10 ci=151 co=0 ca=0 |
35 | 2 c=-275 g=-275 pq=1 pqc=-275 qp=0 dt=1445/1 dn=0 df=15 of=0 ri=0 ql=0 b=10 | 47 | 2 c=1480 g=1480 pq=1 pqc=1479 qp=0 dt=1081/1/0 df=6 of=0 ri=1 ql=0 qs=.... kt=0/W/2 ktl=da94 b=10 ci=0 co=0 ca=0 |
36 | 3 c=-275 g=-275 pq=1 pqc=-275 qp=0 dt=6681/1 dn=0 df=9 of=0 ri=0 ql=0 b=10 | 48 | 3 c=1480 g=1480 pq=1 pqc=1479 qp=0 dt=1846/0/0 df=8 of=0 ri=1 ql=0 qs=.... kt=0/W/3 ktl=d1cd b=10 ci=0 co=0 ca=0 |
37 | 4 c=-275 g=-275 pq=1 pqc=-275 qp=0 dt=1003/1 dn=0 df=15 of=0 ri=0 ql=0 b=10 | 49 | 4 c=1480 g=1480 pq=1 pqc=1479 qp=0 dt=369/1/0 df=6 of=0 ri=1 ql=0 qs=.... kt=0/W/4 ktl=e0e7 b=10 ci=0 co=0 ca=0 |
38 | 5 c=-275 g=-275 pq=1 pqc=-275 qp=0 dt=3887/1 dn=0 df=15 of=0 ri=0 ql=0 b=10 | 50 | 5 c=1480 g=1480 pq=1 pqc=1479 qp=0 dt=381/1/0 df=4 of=0 ri=1 ql=0 qs=.... kt=0/W/5 ktl=fb2f b=10 ci=0 co=0 ca=0 |
39 | 6 c=-275 g=-275 pq=1 pqc=-275 qp=0 dt=859/1 dn=0 df=15 of=0 ri=0 ql=0 b=10 | 51 | 6 c=1480 g=1480 pq=1 pqc=1479 qp=0 dt=1037/1/0 df=6 of=0 ri=1 ql=0 qs=.... kt=0/W/6 ktl=d2ad b=10 ci=0 co=0 ca=0 |
40 | 7 c=-275 g=-275 pq=1 pqc=-275 qp=0 dt=3761/1 dn=0 df=15 of=0 ri=0 ql=0 b=10 | 52 | 7 c=1474 g=1474 pq=1 pqc=1473 qp=0 dt=1572/0/0 df=8 of=0 ri=1 ql=0 qs=.... kt=0/W/7 ktl=cf15 b=10 ci=0 co=0 ca=0 |
41 | 53 | ||
42 | The first section lists the rcu_data structures for rcu_sched, the second | 54 | The first section lists the rcu_data structures for rcu_sched, the second |
43 | for rcu_bh. Note that CONFIG_TREE_PREEMPT_RCU kernels will have an | 55 | for rcu_bh. Note that CONFIG_TREE_PREEMPT_RCU kernels will have an |
@@ -52,17 +64,18 @@ o The number at the beginning of each line is the CPU number. | |||
52 | substantially larger than the number of actual CPUs. | 64 | substantially larger than the number of actual CPUs. |
53 | 65 | ||
54 | o "c" is the count of grace periods that this CPU believes have | 66 | o "c" is the count of grace periods that this CPU believes have |
55 | completed. CPUs in dynticks idle mode may lag quite a ways | 67 | completed. Offlined CPUs and CPUs in dynticks idle mode may |
56 | behind, for example, CPU 4 under "rcu_sched" above, which has | 68 | lag quite a ways behind, for example, CPU 6 under "rcu_sched" |
57 | slept through the past 25 RCU grace periods. It is not unusual | 69 | above, which has been offline through not quite 40,000 RCU grace |
58 | to see CPUs lagging by thousands of grace periods. | 70 | periods. It is not unusual to see CPUs lagging by thousands of |
71 | grace periods. | ||
59 | 72 | ||
60 | o "g" is the count of grace periods that this CPU believes have | 73 | o "g" is the count of grace periods that this CPU believes have |
61 | started. Again, CPUs in dynticks idle mode may lag behind. | 74 | started. Again, offlined CPUs and CPUs in dynticks idle mode |
62 | If the "c" and "g" values are equal, this CPU has already | 75 | may lag behind. If the "c" and "g" values are equal, this CPU |
63 | reported a quiescent state for the last RCU grace period that | 76 | has already reported a quiescent state for the last RCU grace |
64 | it is aware of, otherwise, the CPU believes that it owes RCU a | 77 | period that it is aware of, otherwise, the CPU believes that it |
65 | quiescent state. | 78 | owes RCU a quiescent state. |
66 | 79 | ||
67 | o "pq" indicates that this CPU has passed through a quiescent state | 80 | o "pq" indicates that this CPU has passed through a quiescent state |
68 | for the current grace period. It is possible for "pq" to be | 81 | for the current grace period. It is possible for "pq" to be |
@@ -81,7 +94,8 @@ o "pqc" indicates which grace period the last-observed quiescent | |||
81 | the next grace period! | 94 | the next grace period! |
82 | 95 | ||
83 | o "qp" indicates that RCU still expects a quiescent state from | 96 | o "qp" indicates that RCU still expects a quiescent state from |
84 | this CPU. | 97 | this CPU. Offlined CPUs and CPUs in dyntick idle mode might |
98 | well have qp=1, which is OK: RCU is still ignoring them. | ||
85 | 99 | ||
86 | o "dt" is the current value of the dyntick counter that is incremented | 100 | o "dt" is the current value of the dyntick counter that is incremented |
87 | when entering or leaving dynticks idle state, either by the | 101 | when entering or leaving dynticks idle state, either by the |
@@ -108,7 +122,7 @@ o "df" is the number of times that some other CPU has forced a | |||
108 | 122 | ||
109 | o "of" is the number of times that some other CPU has forced a | 123 | o "of" is the number of times that some other CPU has forced a |
110 | quiescent state on behalf of this CPU due to this CPU being | 124 | quiescent state on behalf of this CPU due to this CPU being |
111 | offline. In a perfect world, this might neve happen, but it | 125 | offline. In a perfect world, this might never happen, but it |
112 | turns out that offlining and onlining a CPU can take several grace | 126 | turns out that offlining and onlining a CPU can take several grace |
113 | periods, and so there is likely to be an extended period of time | 127 | periods, and so there is likely to be an extended period of time |
114 | when RCU believes that the CPU is online when it really is not. | 128 | when RCU believes that the CPU is online when it really is not. |
@@ -125,6 +139,62 @@ o "ql" is the number of RCU callbacks currently residing on | |||
125 | of what state they are in (new, waiting for grace period to | 139 | of what state they are in (new, waiting for grace period to |
126 | start, waiting for grace period to end, ready to invoke). | 140 | start, waiting for grace period to end, ready to invoke). |
127 | 141 | ||
142 | o "qs" gives an indication of the state of the callback queue | ||
143 | with four characters: | ||
144 | |||
145 | "N" Indicates that there are callbacks queued that are not | ||
146 | ready to be handled by the next grace period, and thus | ||
147 | will be handled by the grace period following the next | ||
148 | one. | ||
149 | |||
150 | "R" Indicates that there are callbacks queued that are | ||
151 | ready to be handled by the next grace period. | ||
152 | |||
153 | "W" Indicates that there are callbacks queued that are | ||
154 | waiting on the current grace period. | ||
155 | |||
156 | "D" Indicates that there are callbacks queued that have | ||
157 | already been handled by a prior grace period, and are | ||
158 | thus waiting to be invoked. Note that callbacks in | ||
159 | the process of being invoked are not counted here. | ||
160 | Callbacks in the process of being invoked are those | ||
161 | that have been removed from the rcu_data structures | ||
162 | queues by rcu_do_batch(), but which have not yet been | ||
163 | invoked. | ||
164 | |||
165 | If there are no callbacks in a given one of the above states, | ||
166 | the corresponding character is replaced by ".". | ||
167 | |||
168 | o "kt" is the per-CPU kernel-thread state. The digit preceding | ||
169 | the first slash is zero if there is no work pending and 1 | ||
170 | otherwise. The character between the first pair of slashes is | ||
171 | as follows: | ||
172 | |||
173 | "S" The kernel thread is stopped, in other words, all | ||
174 | CPUs corresponding to this rcu_node structure are | ||
175 | offline. | ||
176 | |||
177 | "R" The kernel thread is running. | ||
178 | |||
179 | "W" The kernel thread is waiting because there is no work | ||
180 | for it to do. | ||
181 | |||
182 | "O" The kernel thread is waiting because it has been | ||
183 | forced off of its designated CPU or because its | ||
184 | ->cpus_allowed mask permits it to run on other than | ||
185 | its designated CPU. | ||
186 | |||
187 | "Y" The kernel thread is yielding to avoid hogging CPU. | ||
188 | |||
189 | "?" Unknown value, indicates a bug. | ||
190 | |||
191 | The number after the final slash is the CPU that the kthread | ||
192 | is actually running on. | ||
193 | |||
194 | o "ktl" is the low-order 16 bits (in hexadecimal) of the count of | ||
195 | the number of times that this CPU's per-CPU kthread has gone | ||
196 | through its loop servicing invoke_rcu_cpu_kthread() requests. | ||
197 | |||
128 | o "b" is the batch limit for this CPU. If more than this number | 198 | o "b" is the batch limit for this CPU. If more than this number |
129 | of RCU callbacks is ready to invoke, then the remainder will | 199 | of RCU callbacks is ready to invoke, then the remainder will |
130 | be deferred. | 200 | be deferred. |
@@ -174,14 +244,14 @@ o "gpnum" is the number of grace periods that have started. It is | |||
174 | The output of "cat rcu/rcuhier" looks as follows, with very long lines: | 244 | The output of "cat rcu/rcuhier" looks as follows, with very long lines: |
175 | 245 | ||
176 | c=6902 g=6903 s=2 jfq=3 j=72c7 nfqs=13142/nfqsng=0(13142) fqlh=6 | 246 | c=6902 g=6903 s=2 jfq=3 j=72c7 nfqs=13142/nfqsng=0(13142) fqlh=6 |
177 | 1/1 .>. 0:127 ^0 | 247 | 1/1 ..>. 0:127 ^0 |
178 | 3/3 .>. 0:35 ^0 0/0 .>. 36:71 ^1 0/0 .>. 72:107 ^2 0/0 .>. 108:127 ^3 | 248 | 3/3 ..>. 0:35 ^0 0/0 ..>. 36:71 ^1 0/0 ..>. 72:107 ^2 0/0 ..>. 108:127 ^3 |
179 | 3/3f .>. 0:5 ^0 2/3 .>. 6:11 ^1 0/0 .>. 12:17 ^2 0/0 .>. 18:23 ^3 0/0 .>. 24:29 ^4 0/0 .>. 30:35 ^5 0/0 .>. 36:41 ^0 0/0 .>. 42:47 ^1 0/0 .>. 48:53 ^2 0/0 .>. 54:59 ^3 0/0 .>. 60:65 ^4 0/0 .>. 66:71 ^5 0/0 .>. 72:77 ^0 0/0 .>. 78:83 ^1 0/0 .>. 84:89 ^2 0/0 .>. 90:95 ^3 0/0 .>. 96:101 ^4 0/0 .>. 102:107 ^5 0/0 .>. 108:113 ^0 0/0 .>. 114:119 ^1 0/0 .>. 120:125 ^2 0/0 .>. 126:127 ^3 | 249 | 3/3f ..>. 0:5 ^0 2/3 ..>. 6:11 ^1 0/0 ..>. 12:17 ^2 0/0 ..>. 18:23 ^3 0/0 ..>. 24:29 ^4 0/0 ..>. 30:35 ^5 0/0 ..>. 36:41 ^0 0/0 ..>. 42:47 ^1 0/0 ..>. 48:53 ^2 0/0 ..>. 54:59 ^3 0/0 ..>. 60:65 ^4 0/0 ..>. 66:71 ^5 0/0 ..>. 72:77 ^0 0/0 ..>. 78:83 ^1 0/0 ..>. 84:89 ^2 0/0 ..>. 90:95 ^3 0/0 ..>. 96:101 ^4 0/0 ..>. 102:107 ^5 0/0 ..>. 108:113 ^0 0/0 ..>. 114:119 ^1 0/0 ..>. 120:125 ^2 0/0 ..>. 126:127 ^3 |
180 | rcu_bh: | 250 | rcu_bh: |
181 | c=-226 g=-226 s=1 jfq=-5701 j=72c7 nfqs=88/nfqsng=0(88) fqlh=0 | 251 | c=-226 g=-226 s=1 jfq=-5701 j=72c7 nfqs=88/nfqsng=0(88) fqlh=0 |
182 | 0/1 .>. 0:127 ^0 | 252 | 0/1 ..>. 0:127 ^0 |
183 | 0/3 .>. 0:35 ^0 0/0 .>. 36:71 ^1 0/0 .>. 72:107 ^2 0/0 .>. 108:127 ^3 | 253 | 0/3 ..>. 0:35 ^0 0/0 ..>. 36:71 ^1 0/0 ..>. 72:107 ^2 0/0 ..>. 108:127 ^3 |
184 | 0/3f .>. 0:5 ^0 0/3 .>. 6:11 ^1 0/0 .>. 12:17 ^2 0/0 .>. 18:23 ^3 0/0 .>. 24:29 ^4 0/0 .>. 30:35 ^5 0/0 .>. 36:41 ^0 0/0 .>. 42:47 ^1 0/0 .>. 48:53 ^2 0/0 .>. 54:59 ^3 0/0 .>. 60:65 ^4 0/0 .>. 66:71 ^5 0/0 .>. 72:77 ^0 0/0 .>. 78:83 ^1 0/0 .>. 84:89 ^2 0/0 .>. 90:95 ^3 0/0 .>. 96:101 ^4 0/0 .>. 102:107 ^5 0/0 .>. 108:113 ^0 0/0 .>. 114:119 ^1 0/0 .>. 120:125 ^2 0/0 .>. 126:127 ^3 | 254 | 0/3f ..>. 0:5 ^0 0/3 ..>. 6:11 ^1 0/0 ..>. 12:17 ^2 0/0 ..>. 18:23 ^3 0/0 ..>. 24:29 ^4 0/0 ..>. 30:35 ^5 0/0 ..>. 36:41 ^0 0/0 ..>. 42:47 ^1 0/0 ..>. 48:53 ^2 0/0 ..>. 54:59 ^3 0/0 ..>. 60:65 ^4 0/0 ..>. 66:71 ^5 0/0 ..>. 72:77 ^0 0/0 ..>. 78:83 ^1 0/0 ..>. 84:89 ^2 0/0 ..>. 90:95 ^3 0/0 ..>. 96:101 ^4 0/0 ..>. 102:107 ^5 0/0 ..>. 108:113 ^0 0/0 ..>. 114:119 ^1 0/0 ..>. 120:125 ^2 0/0 ..>. 126:127 ^3 |
185 | 255 | ||
186 | This is once again split into "rcu_sched" and "rcu_bh" portions, | 256 | This is once again split into "rcu_sched" and "rcu_bh" portions, |
187 | and CONFIG_TREE_PREEMPT_RCU kernels will again have an additional | 257 | and CONFIG_TREE_PREEMPT_RCU kernels will again have an additional |
@@ -240,13 +310,20 @@ o Each element of the form "1/1 0:127 ^0" represents one struct | |||
240 | current grace period. | 310 | current grace period. |
241 | 311 | ||
242 | o The characters separated by the ">" indicate the state | 312 | o The characters separated by the ">" indicate the state |
243 | of the blocked-tasks lists. A "T" preceding the ">" | 313 | of the blocked-tasks lists. A "G" preceding the ">" |
244 | indicates that at least one task blocked in an RCU | 314 | indicates that at least one task blocked in an RCU |
245 | read-side critical section blocks the current grace | 315 | read-side critical section blocks the current grace |
246 | period, while a "." preceding the ">" indicates otherwise. | 316 | period, while a "E" preceding the ">" indicates that |
247 | The character following the ">" indicates similarly for | 317 | at least one task blocked in an RCU read-side critical |
248 | the next grace period. A "T" should appear in this | 318 | section blocks the current expedited grace period. |
249 | field only for rcu-preempt. | 319 | A "T" character following the ">" indicates that at |
320 | least one task is blocked within an RCU read-side | ||
321 | critical section, regardless of whether any current | ||
322 | grace period (expedited or normal) is inconvenienced. | ||
323 | A "." character appears if the corresponding condition | ||
324 | does not hold, so that "..>." indicates that no tasks | ||
325 | are blocked. In contrast, "GE>T" indicates maximal | ||
326 | inconvenience from blocked tasks. | ||
250 | 327 | ||
251 | o The numbers separated by the ":" are the range of CPUs | 328 | o The numbers separated by the ":" are the range of CPUs |
252 | served by this struct rcu_node. This can be helpful | 329 | served by this struct rcu_node. This can be helpful |
@@ -328,6 +405,113 @@ o "nn" is the number of times that this CPU needed nothing. Alert | |||
328 | is due to short-circuit evaluation in rcu_pending(). | 405 | is due to short-circuit evaluation in rcu_pending(). |
329 | 406 | ||
330 | 407 | ||
408 | The output of "cat rcu/rcutorture" looks as follows: | ||
409 | |||
410 | rcutorture test sequence: 0 (test in progress) | ||
411 | rcutorture update version number: 615 | ||
412 | |||
413 | The first line shows the number of rcutorture tests that have completed | ||
414 | since boot. If a test is currently running, the "(test in progress)" | ||
415 | string will appear as shown above. The second line shows the number of | ||
416 | update cycles that the current test has started, or zero if there is | ||
417 | no test in progress. | ||
418 | |||
419 | |||
420 | The output of "cat rcu/rcuboost" looks as follows: | ||
421 | |||
422 | 0:5 tasks=.... kt=W ntb=0 neb=0 nnb=0 j=2f95 bt=300f | ||
423 | balk: nt=0 egt=989 bt=0 nb=0 ny=0 nos=16 | ||
424 | 6:7 tasks=.... kt=W ntb=0 neb=0 nnb=0 j=2f95 bt=300f | ||
425 | balk: nt=0 egt=225 bt=0 nb=0 ny=0 nos=6 | ||
426 | |||
427 | This information is output only for rcu_preempt. Each two-line entry | ||
428 | corresponds to a leaf rcu_node strcuture. The fields are as follows: | ||
429 | |||
430 | o "n:m" is the CPU-number range for the corresponding two-line | ||
431 | entry. In the sample output above, the first entry covers | ||
432 | CPUs zero through five and the second entry covers CPUs 6 | ||
433 | and 7. | ||
434 | |||
435 | o "tasks=TNEB" gives the state of the various segments of the | ||
436 | rnp->blocked_tasks list: | ||
437 | |||
438 | "T" This indicates that there are some tasks that blocked | ||
439 | while running on one of the corresponding CPUs while | ||
440 | in an RCU read-side critical section. | ||
441 | |||
442 | "N" This indicates that some of the blocked tasks are preventing | ||
443 | the current normal (non-expedited) grace period from | ||
444 | completing. | ||
445 | |||
446 | "E" This indicates that some of the blocked tasks are preventing | ||
447 | the current expedited grace period from completing. | ||
448 | |||
449 | "B" This indicates that some of the blocked tasks are in | ||
450 | need of RCU priority boosting. | ||
451 | |||
452 | Each character is replaced with "." if the corresponding | ||
453 | condition does not hold. | ||
454 | |||
455 | o "kt" is the state of the RCU priority-boosting kernel | ||
456 | thread associated with the corresponding rcu_node structure. | ||
457 | The state can be one of the following: | ||
458 | |||
459 | "S" The kernel thread is stopped, in other words, all | ||
460 | CPUs corresponding to this rcu_node structure are | ||
461 | offline. | ||
462 | |||
463 | "R" The kernel thread is running. | ||
464 | |||
465 | "W" The kernel thread is waiting because there is no work | ||
466 | for it to do. | ||
467 | |||
468 | "Y" The kernel thread is yielding to avoid hogging CPU. | ||
469 | |||
470 | "?" Unknown value, indicates a bug. | ||
471 | |||
472 | o "ntb" is the number of tasks boosted. | ||
473 | |||
474 | o "neb" is the number of tasks boosted in order to complete an | ||
475 | expedited grace period. | ||
476 | |||
477 | o "nnb" is the number of tasks boosted in order to complete a | ||
478 | normal (non-expedited) grace period. When boosting a task | ||
479 | that was blocking both an expedited and a normal grace period, | ||
480 | it is counted against the expedited total above. | ||
481 | |||
482 | o "j" is the low-order 16 bits of the jiffies counter in | ||
483 | hexadecimal. | ||
484 | |||
485 | o "bt" is the low-order 16 bits of the value that the jiffies | ||
486 | counter will have when we next start boosting, assuming that | ||
487 | the current grace period does not end beforehand. This is | ||
488 | also in hexadecimal. | ||
489 | |||
490 | o "balk: nt" counts the number of times we didn't boost (in | ||
491 | other words, we balked) even though it was time to boost because | ||
492 | there were no blocked tasks to boost. This situation occurs | ||
493 | when there is one blocked task on one rcu_node structure and | ||
494 | none on some other rcu_node structure. | ||
495 | |||
496 | o "egt" counts the number of times we balked because although | ||
497 | there were blocked tasks, none of them were blocking the | ||
498 | current grace period, whether expedited or otherwise. | ||
499 | |||
500 | o "bt" counts the number of times we balked because boosting | ||
501 | had already been initiated for the current grace period. | ||
502 | |||
503 | o "nb" counts the number of times we balked because there | ||
504 | was at least one task blocking the current non-expedited grace | ||
505 | period that never had blocked. If it is already running, it | ||
506 | just won't help to boost its priority! | ||
507 | |||
508 | o "ny" counts the number of times we balked because it was | ||
509 | not yet time to start boosting. | ||
510 | |||
511 | o "nos" counts the number of times we balked for other | ||
512 | reasons, e.g., the grace period ended first. | ||
513 | |||
514 | |||
331 | CONFIG_TINY_RCU and CONFIG_TINY_PREEMPT_RCU debugfs Files and Formats | 515 | CONFIG_TINY_RCU and CONFIG_TINY_PREEMPT_RCU debugfs Files and Formats |
332 | 516 | ||
333 | These implementations of RCU provides a single debugfs file under the | 517 | These implementations of RCU provides a single debugfs file under the |
@@ -394,9 +578,9 @@ o "neb" is the number of expedited grace periods that have had | |||
394 | o "nnb" is the number of normal grace periods that have had | 578 | o "nnb" is the number of normal grace periods that have had |
395 | to resort to RCU priority boosting since boot. | 579 | to resort to RCU priority boosting since boot. |
396 | 580 | ||
397 | o "j" is the low-order 12 bits of the jiffies counter in hexadecimal. | 581 | o "j" is the low-order 16 bits of the jiffies counter in hexadecimal. |
398 | 582 | ||
399 | o "bt" is the low-order 12 bits of the value that the jiffies counter | 583 | o "bt" is the low-order 16 bits of the value that the jiffies counter |
400 | will have at the next time that boosting is scheduled to begin. | 584 | will have at the next time that boosting is scheduled to begin. |
401 | 585 | ||
402 | o In the line beginning with "normal balk", the fields are as follows: | 586 | o In the line beginning with "normal balk", the fields are as follows: |