hc
2024-02-19 151fecfb72a0d602dfe79790602ef64b4e241574
kernel/tools/perf/scripts/python/netdev-times.py
....@@ -8,6 +8,8 @@
88 # dev=: show only thing related to specified device
99 # debug: work with debug mode. It shows buffer status.
1010
11
+from __future__ import print_function
12
+
1113 import os
1214 import sys
1315
....@@ -17,6 +19,7 @@
1719 from perf_trace_context import *
1820 from Core import *
1921 from Util import *
22
+from functools import cmp_to_key
2023
2124 all_event_list = []; # insert all tracepoint event related with this script
2225 irq_dic = {}; # key is cpu and value is a list which stacks irqs
....@@ -61,12 +64,12 @@
6164 def print_transmit(hunk):
6265 if dev != 0 and hunk['dev'].find(dev) < 0:
6366 return
64
- print "%7s %5d %6d.%06dsec %12.3fmsec %12.3fmsec" % \
67
+ print("%7s %5d %6d.%06dsec %12.3fmsec %12.3fmsec" %
6568 (hunk['dev'], hunk['len'],
6669 nsecs_secs(hunk['queue_t']),
6770 nsecs_nsecs(hunk['queue_t'])/1000,
6871 diff_msec(hunk['queue_t'], hunk['xmit_t']),
69
- diff_msec(hunk['xmit_t'], hunk['free_t']))
72
+ diff_msec(hunk['xmit_t'], hunk['free_t'])))
7073
7174 # Format for displaying rx packet processing
7275 PF_IRQ_ENTRY= " irq_entry(+%.3fmsec irq=%d:%s)"
....@@ -98,55 +101,57 @@
98101 if show_hunk == 0:
99102 return
100103
101
- print "%d.%06dsec cpu=%d" % \
102
- (nsecs_secs(base_t), nsecs_nsecs(base_t)/1000, cpu)
104
+ print("%d.%06dsec cpu=%d" %
105
+ (nsecs_secs(base_t), nsecs_nsecs(base_t)/1000, cpu))
103106 for i in range(len(irq_list)):
104
- print PF_IRQ_ENTRY % \
107
+ print(PF_IRQ_ENTRY %
105108 (diff_msec(base_t, irq_list[i]['irq_ent_t']),
106
- irq_list[i]['irq'], irq_list[i]['name'])
107
- print PF_JOINT
109
+ irq_list[i]['irq'], irq_list[i]['name']))
110
+ print(PF_JOINT)
108111 irq_event_list = irq_list[i]['event_list']
109112 for j in range(len(irq_event_list)):
110113 irq_event = irq_event_list[j]
111114 if irq_event['event'] == 'netif_rx':
112
- print PF_NET_RX % \
115
+ print(PF_NET_RX %
113116 (diff_msec(base_t, irq_event['time']),
114
- irq_event['skbaddr'])
115
- print PF_JOINT
116
- print PF_SOFT_ENTRY % \
117
- diff_msec(base_t, hunk['sirq_ent_t'])
118
- print PF_JOINT
117
+ irq_event['skbaddr']))
118
+ print(PF_JOINT)
119
+ print(PF_SOFT_ENTRY %
120
+ diff_msec(base_t, hunk['sirq_ent_t']))
121
+ print(PF_JOINT)
119122 event_list = hunk['event_list']
120123 for i in range(len(event_list)):
121124 event = event_list[i]
122125 if event['event_name'] == 'napi_poll':
123
- print PF_NAPI_POLL % \
124
- (diff_msec(base_t, event['event_t']), event['dev'])
126
+ print(PF_NAPI_POLL %
127
+ (diff_msec(base_t, event['event_t']),
128
+ event['dev']))
125129 if i == len(event_list) - 1:
126
- print ""
130
+ print("")
127131 else:
128
- print PF_JOINT
132
+ print(PF_JOINT)
129133 else:
130
- print PF_NET_RECV % \
131
- (diff_msec(base_t, event['event_t']), event['skbaddr'],
132
- event['len'])
134
+ print(PF_NET_RECV %
135
+ (diff_msec(base_t, event['event_t']),
136
+ event['skbaddr'],
137
+ event['len']))
133138 if 'comm' in event.keys():
134
- print PF_WJOINT
135
- print PF_CPY_DGRAM % \
139
+ print(PF_WJOINT)
140
+ print(PF_CPY_DGRAM %
136141 (diff_msec(base_t, event['comm_t']),
137
- event['pid'], event['comm'])
142
+ event['pid'], event['comm']))
138143 elif 'handle' in event.keys():
139
- print PF_WJOINT
144
+ print(PF_WJOINT)
140145 if event['handle'] == "kfree_skb":
141
- print PF_KFREE_SKB % \
146
+ print(PF_KFREE_SKB %
142147 (diff_msec(base_t,
143148 event['comm_t']),
144
- event['location'])
149
+ event['location']))
145150 elif event['handle'] == "consume_skb":
146
- print PF_CONS_SKB % \
151
+ print(PF_CONS_SKB %
147152 diff_msec(base_t,
148
- event['comm_t'])
149
- print PF_JOINT
153
+ event['comm_t']))
154
+ print(PF_JOINT)
150155
151156 def trace_begin():
152157 global show_tx
....@@ -172,8 +177,7 @@
172177
173178 def trace_end():
174179 # order all events in time
175
- all_event_list.sort(lambda a,b :cmp(a[EINFO_IDX_TIME],
176
- b[EINFO_IDX_TIME]))
180
+ all_event_list.sort(key=cmp_to_key(lambda a,b :a[EINFO_IDX_TIME] < b[EINFO_IDX_TIME]))
177181 # process all events
178182 for i in range(len(all_event_list)):
179183 event_info = all_event_list[i]
....@@ -210,19 +214,19 @@
210214 print_receive(receive_hunk_list[i])
211215 # display transmit hunks
212216 if show_tx:
213
- print " dev len Qdisc " \
214
- " netdevice free"
217
+ print(" dev len Qdisc "
218
+ " netdevice free")
215219 for i in range(len(tx_free_list)):
216220 print_transmit(tx_free_list[i])
217221 if debug:
218
- print "debug buffer status"
219
- print "----------------------------"
220
- print "xmit Qdisc:remain:%d overflow:%d" % \
221
- (len(tx_queue_list), of_count_tx_queue_list)
222
- print "xmit netdevice:remain:%d overflow:%d" % \
223
- (len(tx_xmit_list), of_count_tx_xmit_list)
224
- print "receive:remain:%d overflow:%d" % \
225
- (len(rx_skb_list), of_count_rx_skb_list)
222
+ print("debug buffer status")
223
+ print("----------------------------")
224
+ print("xmit Qdisc:remain:%d overflow:%d" %
225
+ (len(tx_queue_list), of_count_tx_queue_list))
226
+ print("xmit netdevice:remain:%d overflow:%d" %
227
+ (len(tx_xmit_list), of_count_tx_xmit_list))
228
+ print("receive:remain:%d overflow:%d" %
229
+ (len(rx_skb_list), of_count_rx_skb_list))
226230
227231 # called from perf, when it finds a correspoinding event
228232 def irq__softirq_entry(name, context, cpu, sec, nsec, pid, comm, callchain, vec):
....@@ -254,7 +258,7 @@
254258 all_event_list.append(event_info)
255259
256260 def napi__napi_poll(name, context, cpu, sec, nsec, pid, comm, callchain, napi,
257
- dev_name, work=None, budget=None):
261
+ dev_name, work=None, budget=None):
258262 event_info = (name, context, cpu, nsecs(sec, nsec), pid, comm,
259263 napi, dev_name, work, budget)
260264 all_event_list.append(event_info)
....@@ -351,7 +355,7 @@
351355 if irq_list == [] or event_list == 0:
352356 return
353357 rec_data = {'sirq_ent_t':sirq_ent_t, 'sirq_ext_t':time,
354
- 'irq_list':irq_list, 'event_list':event_list}
358
+ 'irq_list':irq_list, 'event_list':event_list}
355359 # merge information realted to a NET_RX softirq
356360 receive_hunk_list.append(rec_data)
357361
....@@ -388,7 +392,7 @@
388392 skbaddr, skblen, dev_name) = event_info
389393 if cpu in net_rx_dic.keys():
390394 rec_data = {'event_name':'netif_receive_skb',
391
- 'event_t':time, 'skbaddr':skbaddr, 'len':skblen}
395
+ 'event_t':time, 'skbaddr':skbaddr, 'len':skblen}
392396 event_list = net_rx_dic[cpu]['event_list']
393397 event_list.append(rec_data)
394398 rx_skb_list.insert(0, rec_data)