Skip to content

Commit

Permalink
Merge branch 'perf_net_dropmonitor'
Browse files Browse the repository at this point in the history
Ben Hutchings says:

====================
Somewhat surprisingly, the net_dropmonitor reporting script doesn't work
at all.  This series fixes it and then makes it slightly more efficient.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
  • Loading branch information
David S. Miller committed May 22, 2013
2 parents 3680354 + 6b75c73 commit 09fd61d
Showing 1 changed file with 21 additions and 18 deletions.
39 changes: 21 additions & 18 deletions tools/perf/scripts/python/net_dropmonitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,35 +15,38 @@

def get_kallsyms_table():
global kallsyms

try:
f = open("/proc/kallsyms", "r")
linecount = 0
for line in f:
linecount = linecount+1
f.seek(0)
except:
return


j = 0
for line in f:
loc = int(line.split()[0], 16)
name = line.split()[2]
j = j +1
if ((j % 100) == 0):
print "\r" + str(j) + "/" + str(linecount),
kallsyms.append({ 'loc': loc, 'name' : name})

print "\r" + str(j) + "/" + str(linecount)
kallsyms.append((loc, name))
kallsyms.sort()
return

def get_sym(sloc):
loc = int(sloc)
for i in kallsyms:
if (i['loc'] >= loc):
return (i['name'], i['loc']-loc)
return (None, 0)

# 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")
Expand All @@ -64,7 +67,7 @@ def trace_end():

# called from perf, when it finds a correspoinding event
def skb__kfree_skb(name, context, cpu, sec, nsec, pid, comm,
skbaddr, protocol, location):
skbaddr, location, protocol):
slocation = str(location)
try:
drop_log[slocation] = drop_log[slocation] + 1
Expand Down

0 comments on commit 09fd61d

Please sign in to comment.