Skip to content

Commit 01b4bb5

Browse files
Bojun-Seodkruces
authored andcommitted
tools/hardirqs: Print results in descending order (iovisor#5148)
Users are usually interested in events that happen frequently and consume more time. So, print the results in descending order.
1 parent 8eb8899 commit 01b4bb5

File tree

2 files changed

+152
-152
lines changed

2 files changed

+152
-152
lines changed

tools/hardirqs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@
245245
dist.print_log2_hist(label, "hardirq", section_print_fn=bytes.decode)
246246
else:
247247
print("%-26s %11s" % ("HARDIRQ", "TOTAL_" + label))
248-
for k, v in sorted(dist.items(), key=lambda dist: dist[1].value):
248+
for k, v in sorted(dist.items(), key=lambda dist: -dist[1].value):
249249
print("%-26s %11d" % (k.name.decode('utf-8', 'replace'), v.value / factor))
250250
dist.clear()
251251

tools/hardirqs_example.txt

Lines changed: 151 additions & 151 deletions
Original file line numberDiff line numberDiff line change
@@ -8,28 +8,28 @@ in-kernel for efficiency. For example:
88
Tracing hard irq event time... Hit Ctrl-C to end.
99
^C
1010
HARDIRQ TOTAL_usecs
11-
callfuncsingle0 2
12-
callfuncsingle5 5
13-
callfuncsingle6 5
14-
callfuncsingle7 21
15-
blkif 66
16-
timer7 84
17-
resched5 94
18-
resched0 97
19-
resched3 102
20-
resched7 111
21-
resched6 255
22-
timer3 362
23-
resched4 367
24-
timer5 474
25-
timer1 529
26-
timer6 679
27-
timer2 746
28-
timer4 943
29-
resched1 1048
30-
timer0 1558
31-
resched2 1750
3211
eth0 11441
12+
resched2 1750
13+
timer0 1558
14+
resched1 1048
15+
timer4 943
16+
timer2 746
17+
timer6 679
18+
timer1 529
19+
timer5 474
20+
resched4 367
21+
timer3 362
22+
resched6 255
23+
resched7 111
24+
resched3 102
25+
resched0 97
26+
resched5 94
27+
timer7 84
28+
blkif 66
29+
callfuncsingle7 21
30+
callfuncsingle6 5
31+
callfuncsingle5 5
32+
callfuncsingle0 2
3333

3434
The HARDIRQ column prints the interrupt action name. While tracing, the eth0
3535
hard irq action ran for 11441 microseconds (11 milliseconds) in total.
@@ -47,80 +47,80 @@ Tracing hard irq event time... Hit Ctrl-C to end.
4747

4848
22:16:14
4949
HARDIRQ TOTAL_usecs
50-
callfuncsingle0 2
51-
callfuncsingle7 5
52-
callfuncsingle3 5
53-
callfuncsingle2 5
54-
callfuncsingle6 6
55-
callfuncsingle1 11
56-
resched0 32
57-
blkif 51
58-
resched5 71
59-
resched7 71
60-
resched4 72
61-
resched6 82
62-
timer7 172
63-
resched1 187
64-
resched2 236
65-
timer3 252
66-
resched3 282
67-
timer1 320
68-
timer2 374
69-
timer6 396
70-
timer5 427
71-
timer4 470
72-
timer0 1430
7350
eth0 7498
51+
timer0 1430
52+
timer4 470
53+
timer5 427
54+
timer6 396
55+
timer2 374
56+
timer1 320
57+
resched3 282
58+
timer3 252
59+
resched2 236
60+
resched1 187
61+
timer7 172
62+
resched6 82
63+
resched4 72
64+
resched7 71
65+
resched5 71
66+
blkif 51
67+
resched0 32
68+
callfuncsingle1 11
69+
callfuncsingle6 6
70+
callfuncsingle2 5
71+
callfuncsingle3 5
72+
callfuncsingle7 5
73+
callfuncsingle0 2
7474

7575
22:16:15
7676
HARDIRQ TOTAL_usecs
77-
callfuncsingle7 6
78-
callfuncsingle5 11
79-
callfuncsingle4 13
80-
timer2 17
81-
callfuncsingle6 18
82-
resched0 21
83-
blkif 33
84-
resched3 40
85-
resched5 60
86-
resched4 69
87-
resched6 70
88-
resched7 74
89-
timer7 86
90-
resched2 91
91-
timer3 134
92-
resched1 293
93-
timer5 354
94-
timer1 433
95-
timer6 497
96-
timer4 1112
97-
timer0 1768
9877
eth0 6972
78+
timer0 1768
79+
timer4 1112
80+
timer6 497
81+
timer1 433
82+
timer5 354
83+
resched1 293
84+
timer3 134
85+
resched2 91
86+
timer7 86
87+
resched7 74
88+
resched6 70
89+
resched4 69
90+
resched5 60
91+
resched3 40
92+
blkif 33
93+
resched0 21
94+
callfuncsingle6 18
95+
timer2 17
96+
callfuncsingle4 13
97+
callfuncsingle5 11
98+
callfuncsingle7 6
9999

100100
22:16:16
101101
HARDIRQ TOTAL_usecs
102-
callfuncsingle7 5
103-
callfuncsingle3 5
104-
callfuncsingle2 6
105-
timer3 10
106-
resched0 18
107-
callfuncsingle4 22
108-
resched5 27
109-
resched6 44
110-
blkif 45
111-
resched7 65
112-
resched4 69
113-
timer4 77
114-
resched2 97
115-
timer7 98
116-
resched3 103
117-
timer2 169
118-
resched1 226
119-
timer5 525
120-
timer1 691
121-
timer6 697
122-
timer0 1415
123102
eth0 7152
103+
timer0 1415
104+
timer6 697
105+
timer1 691
106+
timer5 525
107+
resched1 226
108+
timer2 169
109+
resched3 103
110+
timer7 98
111+
resched2 97
112+
timer4 77
113+
resched4 69
114+
resched7 65
115+
blkif 45
116+
resched6 44
117+
resched5 27
118+
callfuncsingle4 22
119+
resched0 18
120+
timer3 10
121+
callfuncsingle2 6
122+
callfuncsingle3 5
123+
callfuncsingle7 5
124124

125125
This can be useful for quantifying where CPU cycles are spent among the hard
126126
interrupts (summarized as the %irq column from mpstat(1)). The output above
@@ -133,57 +133,57 @@ perf tool is performing a 999 Hertz CPU profile ("perf record -F 999 -a ..."):
133133

134134
22:13:59
135135
HARDIRQ TOTAL_usecs
136-
callfuncsingle7 5
137-
callfuncsingle5 5
138-
callfuncsingle3 6
139-
callfuncsingle4 7
140-
callfuncsingle6 19
141-
blkif 66
142-
resched0 66
143-
resched2 82
144-
resched7 87
145-
resched3 96
146-
resched4 118
147-
resched5 120
148-
resched6 130
149-
resched1 230
150-
timer3 946
151-
timer1 1981
152-
timer7 2618
153-
timer5 3063
154-
timer6 3141
155-
timer4 3511
156-
timer2 3554
157-
timer0 5044
158136
eth0 16015
137+
timer0 5044
138+
timer2 3554
139+
timer4 3511
140+
timer6 3141
141+
timer5 3063
142+
timer7 2618
143+
timer1 1981
144+
timer3 946
145+
resched1 230
146+
resched6 130
147+
resched5 120
148+
resched4 118
149+
resched3 96
150+
resched7 87
151+
resched2 82
152+
resched0 66
153+
blkif 66
154+
callfuncsingle6 19
155+
callfuncsingle4 7
156+
callfuncsingle3 6
157+
callfuncsingle5 5
158+
callfuncsingle7 5
159159

160160
This sheds some light into the CPU overhead of the perf profiler, which cost
161161
around 3 milliseconds per second. Note that I'm usually profiling at a much
162162
lower rate, 99 Hertz, which looks like this:
163163

164164
22:22:12
165165
HARDIRQ TOTAL_usecs
166-
callfuncsingle3 5
167-
callfuncsingle6 5
168-
callfuncsingle5 22
169-
blkif 46
170-
resched6 47
171-
resched5 57
172-
resched4 66
173-
resched7 78
174-
resched2 97
175-
resched0 214
176-
timer2 326
177-
timer0 498
178-
timer5 536
179-
timer6 576
180-
timer1 600
181-
timer4 982
182-
resched1 1315
183-
timer7 1364
184-
timer3 1825
185-
resched3 5708
186166
eth0 9743
167+
resched3 5708
168+
timer3 1825
169+
timer7 1364
170+
resched1 1315
171+
timer4 982
172+
timer1 600
173+
timer6 576
174+
timer5 536
175+
timer0 498
176+
timer2 326
177+
resched0 214
178+
resched2 97
179+
resched7 78
180+
resched4 66
181+
resched5 57
182+
resched6 47
183+
blkif 46
184+
callfuncsingle5 22
185+
callfuncsingle6 5
186+
callfuncsingle3 5
187187

188188
Much lower (and remember to compare this to the baseline). Note that perf has
189189
other overheads (non-irq CPU cycles, file system storage).
@@ -621,30 +621,30 @@ of times. You can use the -C or --count option:
621621
Tracing hard irq events... Hit Ctrl-C to end.
622622
^C
623623
HARDIRQ TOTAL_count
624-
blkif 2
625-
callfuncsingle3 8
626-
callfuncsingle2 10
627-
callfuncsingle1 18
628-
resched7 25
629-
callfuncsingle6 25
630-
callfuncsingle5 27
631-
callfuncsingle0 27
632-
eth0 34
633-
resched2 40
634-
resched1 66
635-
timer7 70
636-
resched6 71
637-
resched0 73
638-
resched5 79
639-
resched4 90
640-
timer6 95
641-
timer4 100
642-
timer1 109
643-
timer2 115
644-
timer0 117
645-
timer3 123
646-
resched3 140
647624
timer5 288
625+
resched3 140
626+
timer3 123
627+
timer0 117
628+
timer2 115
629+
timer1 109
630+
timer4 100
631+
timer6 95
632+
resched4 90
633+
resched5 79
634+
resched0 73
635+
resched6 71
636+
timer7 70
637+
resched1 66
638+
resched2 40
639+
eth0 34
640+
callfuncsingle0 27
641+
callfuncsingle5 27
642+
callfuncsingle6 25
643+
resched7 25
644+
callfuncsingle1 18
645+
callfuncsingle2 10
646+
callfuncsingle3 8
647+
blkif 2
648648

649649

650650
USAGE message:

0 commit comments

Comments
 (0)