diff options
| author | Paul Mundt <lethal@linux-sh.org> | 2011-11-04 10:15:29 -0400 |
|---|---|---|
| committer | Paul Mundt <lethal@linux-sh.org> | 2011-11-04 10:15:29 -0400 |
| commit | d63638440cfad75fb339fd1261bea0485c7c3ecc (patch) | |
| tree | d1705ceeef82eb0b7b58f9503a472be810f418f2 /tools/perf/scripts/python | |
| parent | f1e0477a7b7a541f51eea279910eed4ddd010033 (diff) | |
| parent | 1a67a573b8d9f02211f36fbab50f6265dc49384a (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into rmobile-latest
Diffstat (limited to 'tools/perf/scripts/python')
| -rwxr-xr-x | tools/perf/scripts/python/bin/net_dropmonitor-record | 2 | ||||
| -rwxr-xr-x | tools/perf/scripts/python/bin/net_dropmonitor-report | 4 | ||||
| -rwxr-xr-x | tools/perf/scripts/python/net_dropmonitor.py | 72 |
3 files changed, 78 insertions, 0 deletions
diff --git a/tools/perf/scripts/python/bin/net_dropmonitor-record b/tools/perf/scripts/python/bin/net_dropmonitor-record new file mode 100755 index 000000000000..423fb81dadae --- /dev/null +++ b/tools/perf/scripts/python/bin/net_dropmonitor-record | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | #!/bin/bash | ||
| 2 | perf record -e skb:kfree_skb $@ | ||
diff --git a/tools/perf/scripts/python/bin/net_dropmonitor-report b/tools/perf/scripts/python/bin/net_dropmonitor-report new file mode 100755 index 000000000000..8d698f5a06aa --- /dev/null +++ b/tools/perf/scripts/python/bin/net_dropmonitor-report | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | #!/bin/bash | ||
| 2 | # description: display a table of dropped frames | ||
| 3 | |||
| 4 | perf script -s "$PERF_EXEC_PATH"/scripts/python/net_dropmonitor.py $@ | ||
diff --git a/tools/perf/scripts/python/net_dropmonitor.py b/tools/perf/scripts/python/net_dropmonitor.py new file mode 100755 index 000000000000..a4ffc9500023 --- /dev/null +++ b/tools/perf/scripts/python/net_dropmonitor.py | |||
| @@ -0,0 +1,72 @@ | |||
| 1 | # Monitor the system for dropped packets and proudce a report of drop locations and counts | ||
| 2 | |||
| 3 | import os | ||
| 4 | import sys | ||
| 5 | |||
| 6 | sys.path.append(os.environ['PERF_EXEC_PATH'] + \ | ||
| 7 | '/scripts/python/Perf-Trace-Util/lib/Perf/Trace') | ||
| 8 | |||
| 9 | from perf_trace_context import * | ||
| 10 | from Core import * | ||
| 11 | from Util import * | ||
| 12 | |||
| 13 | drop_log = {} | ||
| 14 | kallsyms = [] | ||
| 15 | |||
| 16 | def get_kallsyms_table(): | ||
| 17 | global kallsyms | ||
| 18 | try: | ||
| 19 | f = open("/proc/kallsyms", "r") | ||
| 20 | linecount = 0 | ||
| 21 | for line in f: | ||
| 22 | linecount = linecount+1 | ||
| 23 | f.seek(0) | ||
| 24 | except: | ||
| 25 | return | ||
| 26 | |||
| 27 | |||
| 28 | j = 0 | ||
| 29 | for line in f: | ||
| 30 | loc = int(line.split()[0], 16) | ||
| 31 | name = line.split()[2] | ||
| 32 | j = j +1 | ||
| 33 | if ((j % 100) == 0): | ||
| 34 | print "\r" + str(j) + "/" + str(linecount), | ||
| 35 | kallsyms.append({ 'loc': loc, 'name' : name}) | ||
| 36 | |||
| 37 | print "\r" + str(j) + "/" + str(linecount) | ||
| 38 | kallsyms.sort() | ||
| 39 | return | ||
| 40 | |||
| 41 | def get_sym(sloc): | ||
| 42 | loc = int(sloc) | ||
| 43 | for i in kallsyms: | ||
| 44 | if (i['loc'] >= loc): | ||
| 45 | return (i['name'], i['loc']-loc) | ||
| 46 | return (None, 0) | ||
| 47 | |||
| 48 | def print_drop_table(): | ||
| 49 | print "%25s %25s %25s" % ("LOCATION", "OFFSET", "COUNT") | ||
| 50 | for i in drop_log.keys(): | ||
| 51 | (sym, off) = get_sym(i) | ||
| 52 | if sym == None: | ||
| 53 | sym = i | ||
| 54 | print "%25s %25s %25s" % (sym, off, drop_log[i]) | ||
| 55 | |||
| 56 | |||
| 57 | def trace_begin(): | ||
| 58 | print "Starting trace (Ctrl-C to dump results)" | ||
| 59 | |||
| 60 | def trace_end(): | ||
| 61 | print "Gathering kallsyms data" | ||
| 62 | get_kallsyms_table() | ||
| 63 | print_drop_table() | ||
| 64 | |||
| 65 | # called from perf, when it finds a correspoinding event | ||
| 66 | def skb__kfree_skb(name, context, cpu, sec, nsec, pid, comm, | ||
| 67 | skbaddr, protocol, location): | ||
| 68 | slocation = str(location) | ||
| 69 | try: | ||
| 70 | drop_log[slocation] = drop_log[slocation] + 1 | ||
| 71 | except: | ||
| 72 | drop_log[slocation] = 1 | ||
