aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/scripts/python/net_dropmonitor.py
blob: a150164b44a3fad380349213e2c63ebecb3952d8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# Monitor the system for dropped packets and proudce a report of drop locations and counts
# SPDX-License-Identifier: GPL-2.0

import os
import sys

sys.path.append(os.environ['PERF_EXEC_PATH'] + \
		'/scripts/python/Perf-Trace-Util/lib/Perf/Trace')

from perf_trace_context import *
from Core import *
from Util import *

drop_log = {}
kallsyms = []

def get_kallsyms_table():
	global kallsyms

	try:
		f = open("/proc/kallsyms", "r")
	except:
		return

	for line in f:
		loc = int(line.split()[0], 16)
		name = line.split()[2]
		kallsyms.append((loc, name))
	kallsyms.sort()

def get_sym(sloc):
	loc = int(sloc)

	# Invariant: kallsyms[i][0] <= loc for all 0 <= i <= start
	#            kallsyms[i][0] > loc for all end <= i < len(kallsyms)
	start, end = -1, len(kallsyms)
	while end != start + 1:
		pivot = (start + end) // 2
		if loc < kallsyms[pivot][0]:
			end = pivot
		else:
			start = pivot

	# Now (start == -1 or kallsyms[start][0] <= loc)
	# and (start == len(kallsyms) - 1 or loc < kallsyms[start + 1][0])
	if start >= 0:
		symloc, name = kallsyms[start]
		return (name, loc - symloc)
	else:
		return (None, 0)

def print_drop_table():
	print "%25s %25s %25s" % ("LOCATION", "OFFSET", "COUNT")
	for i in drop_log.keys():
		(sym, off) = get_sym(i)
		if sym == None:
			sym = i
		print "%25s %25s %25s" % (sym, off, drop_log[i])


def trace_begin():
	print "Starting trace (Ctrl-C to dump results)"

def trace_end():
	print "Gathering kallsyms data"
	get_kallsyms_table()
	print_drop_table()

# called from perf, when it finds a correspoinding event
def skb__kfree_skb(name, context, cpu, sec, nsec, pid, comm, callchain,
		   skbaddr, location, protocol):
	slocation = str(location)
	try:
		drop_log[slocation] = drop_log[slocation] + 1
	except:
		drop_log[slocation] = 1
> 2011-01-06atyfb: Fix bootup hangs on sparc64.David S. Miller1-22/+5 2011-01-06net: bridge: check the length of skb after nf_bridge_maybe_copy_header()Changli Gao1-10/+6 2011-01-06netconsole: clarify stopping messageFerenc Wagner1-2/+2 2011-01-06netconsole: don't announce stopping if nothing happenedFerenc Wagner1-1/+3 2011-01-06cnic: Fix the type field in SPQ messagesMichael Chan1-21/+12 2011-01-06netfilter: fix export secctx error handlingPablo Neira Ayuso3-13/+16 2011-01-06netfilter: fix the race when initializing nf_ct_expect_hash_rndChangli Gao3-20/+22 2011-01-06ipv4: IP defragmentation must be ECN awareEric Dumazet1-0/+34 2011-01-06net: r6040: Return proper error for r6040_init_oneAxel Lin1-0/+2 2011-01-06dcb: use after free in dcb_flushapp()Dan Carpenter1-1/+2 2011-01-06dcb: unlock on error in dcbnl_ieee_get()Dan Carpenter1-3/+8 2011-01-06net: ixp4xx_eth: Return proper error for eth_init_oneAxel Lin1-1/+3 2011-01-06include/linux/if_ether.h: Add #define ETH_P_LINK_CTL for HPNA and wlan local ...Henry Ptasinski1-0/+1 2011-01-06net: add POLLPRI to sock_def_readable()Eric Dumazet1-1/+1 2011-01-06kernel-doc: code reorganizationRandy Dunlap1-48/+54 2011-01-06Documentation: update kernel-docs.txtNicolas Kaiser1-25/+2 2011-01-06Documentation/dontdiff: add further autogenerated files to ignore listMichael Prokop1-0/+26 2011-01-06[media] radio-aimslab.c: Fix gcc 4.5+ bugMauro Carvalho Chehab1-17/+6 2011-01-06video: udlfb: Kill off special printk wrappers, use pr_fmt().Paul Mundt2-53/+39 2011-01-06video: udlfb: Kill off some magic constants for EDID sizing.Paul Mundt2-14/+7 2011-01-06video: udlfb: deifdefify (yes, that's a word).Paul Mundt1-39/+2 2011-01-06sh: include Migo-R TS driver in Migo-R defconfigMagnus Damm1-0/+2 2011-01-06fbdev: modedb: Add a new mode for 864x480 TAAL panels.Mayuresh Janorkar1-0/+4 2011-01-06drivers/video/i810/i810-i2c.c: fix i2c bus handlingStefani Seibold1-4/+8 2011-01-06video: Fix the HGA framebuffer driverBrent Cook2-25/+11 2011-01-06drivers/video/carminefb.c: improve error handlingJulia Lawall1-4/+2 2011-01-06video: imxfb: Fix the maximum value for yresFabio Estevam1-6/+3 2011-01-06fbdev: sh_mobile_lcdcfb: Enable 32 bpp and 24 bpp supportMagnus Damm1-11/+63 2011-01-05af_unix: Avoid socket->sk NULL OOPS in stream connect security hooks.David S. Miller6-24/+22 2011-01-05net_sched: pfifo_head_drop problemEric Dumazet1-2/+0 2011-01-05mac80211: remove stray externJohannes Berg1-2/+2 2011-01-05mac80211: implement off-channel TX using hw r-o-c offloadJohannes Berg3-10/+81 2011-01-05mac80211: implement hardware offload for remain-on-channelJohannes Berg8-3/+306