diff options
Diffstat (limited to 'tools/perf/scripts/python')
24 files changed, 395 insertions, 20 deletions
diff --git a/tools/perf/scripts/python/Perf-Trace-Util/Context.c b/tools/perf/scripts/python/Perf-Trace-Util/Context.c index 957085dd5d8..fcd1dd66790 100644 --- a/tools/perf/scripts/python/Perf-Trace-Util/Context.c +++ b/tools/perf/scripts/python/Perf-Trace-Util/Context.c @@ -1,5 +1,5 @@  /* - * Context.c.  Python interfaces for perf trace. + * Context.c.  Python interfaces for perf script.   *   * Copyright (C) 2010 Tom Zanussi <tzanussi@gmail.com>   * @@ -25,7 +25,7 @@  PyMODINIT_FUNC initperf_trace_context(void); -static PyObject *perf_trace_context_common_pc(PyObject *self, PyObject *args) +static PyObject *perf_trace_context_common_pc(PyObject *obj, PyObject *args)  {  	static struct scripting_context *scripting_context;  	PyObject *context; @@ -40,7 +40,7 @@ static PyObject *perf_trace_context_common_pc(PyObject *self, PyObject *args)  	return Py_BuildValue("i", retval);  } -static PyObject *perf_trace_context_common_flags(PyObject *self, +static PyObject *perf_trace_context_common_flags(PyObject *obj,  						 PyObject *args)  {  	static struct scripting_context *scripting_context; @@ -56,7 +56,7 @@ static PyObject *perf_trace_context_common_flags(PyObject *self,  	return Py_BuildValue("i", retval);  } -static PyObject *perf_trace_context_common_lock_depth(PyObject *self, +static PyObject *perf_trace_context_common_lock_depth(PyObject *obj,  						      PyObject *args)  {  	static struct scripting_context *scripting_context; diff --git a/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Core.py b/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Core.py index aad7525bca1..de7211e4fa4 100644 --- a/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Core.py +++ b/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Core.py @@ -1,4 +1,4 @@ -# Core.py - Python extension for perf trace, core functions +# Core.py - Python extension for perf script, core functions  #  # Copyright (C) 2010 by Tom Zanussi <tzanussi@gmail.com>  # diff --git a/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/EventClass.py b/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/EventClass.py new file mode 100755 index 00000000000..9e0985794e2 --- /dev/null +++ b/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/EventClass.py @@ -0,0 +1,94 @@ +# EventClass.py +# +# This is a library defining some events types classes, which could +# be used by other scripts to analyzing the perf samples. +# +# Currently there are just a few classes defined for examples, +# PerfEvent is the base class for all perf event sample, PebsEvent +# is a HW base Intel x86 PEBS event, and user could add more SW/HW +# event classes based on requirements. + +import struct + +# Event types, user could add more here +EVTYPE_GENERIC  = 0 +EVTYPE_PEBS     = 1     # Basic PEBS event +EVTYPE_PEBS_LL  = 2     # PEBS event with load latency info +EVTYPE_IBS      = 3 + +# +# Currently we don't have good way to tell the event type, but by +# the size of raw buffer, raw PEBS event with load latency data's +# size is 176 bytes, while the pure PEBS event's size is 144 bytes. +# +def create_event(name, comm, dso, symbol, raw_buf): +        if (len(raw_buf) == 144): +                event = PebsEvent(name, comm, dso, symbol, raw_buf) +        elif (len(raw_buf) == 176): +                event = PebsNHM(name, comm, dso, symbol, raw_buf) +        else: +                event = PerfEvent(name, comm, dso, symbol, raw_buf) + +        return event + +class PerfEvent(object): +        event_num = 0 +        def __init__(self, name, comm, dso, symbol, raw_buf, ev_type=EVTYPE_GENERIC): +                self.name       = name +                self.comm       = comm +                self.dso        = dso +                self.symbol     = symbol +                self.raw_buf    = raw_buf +                self.ev_type    = ev_type +                PerfEvent.event_num += 1 + +        def show(self): +                print "PMU event: name=%12s, symbol=%24s, comm=%8s, dso=%12s" % (self.name, self.symbol, self.comm, self.dso) + +# +# Basic Intel PEBS (Precise Event-based Sampling) event, whose raw buffer +# contains the context info when that event happened: the EFLAGS and +# linear IP info, as well as all the registers. +# +class PebsEvent(PerfEvent): +        pebs_num = 0 +        def __init__(self, name, comm, dso, symbol, raw_buf, ev_type=EVTYPE_PEBS): +                tmp_buf=raw_buf[0:80] +                flags, ip, ax, bx, cx, dx, si, di, bp, sp = struct.unpack('QQQQQQQQQQ', tmp_buf) +                self.flags = flags +                self.ip    = ip +                self.ax    = ax +                self.bx    = bx +                self.cx    = cx +                self.dx    = dx +                self.si    = si +                self.di    = di +                self.bp    = bp +                self.sp    = sp + +                PerfEvent.__init__(self, name, comm, dso, symbol, raw_buf, ev_type) +                PebsEvent.pebs_num += 1 +                del tmp_buf + +# +# Intel Nehalem and Westmere support PEBS plus Load Latency info which lie +# in the four 64 bit words write after the PEBS data: +#       Status: records the IA32_PERF_GLOBAL_STATUS register value +#       DLA:    Data Linear Address (EIP) +#       DSE:    Data Source Encoding, where the latency happens, hit or miss +#               in L1/L2/L3 or IO operations +#       LAT:    the actual latency in cycles +# +class PebsNHM(PebsEvent): +        pebs_nhm_num = 0 +        def __init__(self, name, comm, dso, symbol, raw_buf, ev_type=EVTYPE_PEBS_LL): +                tmp_buf=raw_buf[144:176] +                status, dla, dse, lat = struct.unpack('QQQQ', tmp_buf) +                self.status = status +                self.dla = dla +                self.dse = dse +                self.lat = lat + +                PebsEvent.__init__(self, name, comm, dso, symbol, raw_buf, ev_type) +                PebsNHM.pebs_nhm_num += 1 +                del tmp_buf diff --git a/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/SchedGui.py b/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/SchedGui.py index ae9a56e43e0..fdd92f69905 100644 --- a/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/SchedGui.py +++ b/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/SchedGui.py @@ -1,4 +1,4 @@ -# SchedGui.py - Python extension for perf trace, basic GUI code for +# SchedGui.py - Python extension for perf script, basic GUI code for  #		traces drawing and overview.  #  # Copyright (C) 2010 by Frederic Weisbecker <fweisbec@gmail.com> diff --git a/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Util.py b/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Util.py index 13cc02b5893..15c8400240f 100644 --- a/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Util.py +++ b/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Util.py @@ -1,4 +1,4 @@ -# Util.py - Python extension for perf trace, miscellaneous utility code +# Util.py - Python extension for perf script, miscellaneous utility code  #  # Copyright (C) 2010 by Tom Zanussi <tzanussi@gmail.com>  # diff --git a/tools/perf/scripts/python/bin/event_analyzing_sample-record b/tools/perf/scripts/python/bin/event_analyzing_sample-record new file mode 100644 index 00000000000..5ce652dabd0 --- /dev/null +++ b/tools/perf/scripts/python/bin/event_analyzing_sample-record @@ -0,0 +1,8 @@ +#!/bin/bash + +# +# event_analyzing_sample.py can cover all type of perf samples including +# the tracepoints, so no special record requirements, just record what +# you want to analyze. +# +perf record $@ diff --git a/tools/perf/scripts/python/bin/event_analyzing_sample-report b/tools/perf/scripts/python/bin/event_analyzing_sample-report new file mode 100644 index 00000000000..0941fc94e15 --- /dev/null +++ b/tools/perf/scripts/python/bin/event_analyzing_sample-report @@ -0,0 +1,3 @@ +#!/bin/bash +# description: analyze all perf samples +perf script $@ -s "$PERF_EXEC_PATH"/scripts/python/event_analyzing_sample.py diff --git a/tools/perf/scripts/python/bin/failed-syscalls-by-pid-report b/tools/perf/scripts/python/bin/failed-syscalls-by-pid-report index 03587021463..fda5096d0cb 100644 --- a/tools/perf/scripts/python/bin/failed-syscalls-by-pid-report +++ b/tools/perf/scripts/python/bin/failed-syscalls-by-pid-report @@ -7,4 +7,4 @@ if [ $# -gt 0 ] ; then  	shift      fi  fi -perf trace $@ -s "$PERF_EXEC_PATH"/scripts/python/failed-syscalls-by-pid.py $comm +perf script $@ -s "$PERF_EXEC_PATH"/scripts/python/failed-syscalls-by-pid.py $comm diff --git a/tools/perf/scripts/python/bin/futex-contention-report b/tools/perf/scripts/python/bin/futex-contention-report index c8268138fb7..6c44271091a 100644 --- a/tools/perf/scripts/python/bin/futex-contention-report +++ b/tools/perf/scripts/python/bin/futex-contention-report @@ -1,4 +1,4 @@  #!/bin/bash  # description: futext contention measurement -perf trace $@ -s "$PERF_EXEC_PATH"/scripts/python/futex-contention.py +perf script $@ -s "$PERF_EXEC_PATH"/scripts/python/futex-contention.py 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 00000000000..423fb81dada --- /dev/null +++ b/tools/perf/scripts/python/bin/net_dropmonitor-record @@ -0,0 +1,2 @@ +#!/bin/bash +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 00000000000..8d698f5a06a --- /dev/null +++ b/tools/perf/scripts/python/bin/net_dropmonitor-report @@ -0,0 +1,4 @@ +#!/bin/bash +# description: display a table of dropped frames + +perf script -s "$PERF_EXEC_PATH"/scripts/python/net_dropmonitor.py $@ diff --git a/tools/perf/scripts/python/bin/netdev-times-report b/tools/perf/scripts/python/bin/netdev-times-report index 4ad361b3124..8f759291da8 100644 --- a/tools/perf/scripts/python/bin/netdev-times-report +++ b/tools/perf/scripts/python/bin/netdev-times-report @@ -2,4 +2,4 @@  # description: display a process of packet and processing time  # args: [tx] [rx] [dev=] [debug] -perf trace -s "$PERF_EXEC_PATH"/scripts/python/netdev-times.py $@ +perf script -s "$PERF_EXEC_PATH"/scripts/python/netdev-times.py $@ diff --git a/tools/perf/scripts/python/bin/sched-migration-report b/tools/perf/scripts/python/bin/sched-migration-report index df1791f07c2..68b037a1849 100644 --- a/tools/perf/scripts/python/bin/sched-migration-report +++ b/tools/perf/scripts/python/bin/sched-migration-report @@ -1,3 +1,3 @@  #!/bin/bash  # description: sched migration overview -perf trace $@ -s "$PERF_EXEC_PATH"/scripts/python/sched-migration.py +perf script $@ -s "$PERF_EXEC_PATH"/scripts/python/sched-migration.py diff --git a/tools/perf/scripts/python/bin/sctop-report b/tools/perf/scripts/python/bin/sctop-report index 36b409c05e5..c32db294124 100644 --- a/tools/perf/scripts/python/bin/sctop-report +++ b/tools/perf/scripts/python/bin/sctop-report @@ -21,4 +21,4 @@ elif [ "$n_args" -gt 0 ] ; then      interval=$1      shift  fi -perf trace $@ -s "$PERF_EXEC_PATH"/scripts/python/sctop.py $comm $interval +perf script $@ -s "$PERF_EXEC_PATH"/scripts/python/sctop.py $comm $interval diff --git a/tools/perf/scripts/python/bin/syscall-counts-by-pid-report b/tools/perf/scripts/python/bin/syscall-counts-by-pid-report index 4eb88c9fc83..16eb8d65c54 100644 --- a/tools/perf/scripts/python/bin/syscall-counts-by-pid-report +++ b/tools/perf/scripts/python/bin/syscall-counts-by-pid-report @@ -7,4 +7,4 @@ if [ $# -gt 0 ] ; then  	shift      fi  fi -perf trace $@ -s "$PERF_EXEC_PATH"/scripts/python/syscall-counts-by-pid.py $comm +perf script $@ -s "$PERF_EXEC_PATH"/scripts/python/syscall-counts-by-pid.py $comm diff --git a/tools/perf/scripts/python/bin/syscall-counts-report b/tools/perf/scripts/python/bin/syscall-counts-report index cb2f9c5cf17..0f0e9d453bb 100644 --- a/tools/perf/scripts/python/bin/syscall-counts-report +++ b/tools/perf/scripts/python/bin/syscall-counts-report @@ -7,4 +7,4 @@ if [ $# -gt 0 ] ; then  	shift      fi  fi -perf trace $@ -s "$PERF_EXEC_PATH"/scripts/python/syscall-counts.py $comm +perf script $@ -s "$PERF_EXEC_PATH"/scripts/python/syscall-counts.py $comm diff --git a/tools/perf/scripts/python/check-perf-trace.py b/tools/perf/scripts/python/check-perf-trace.py index d9f7893e315..4647a7694cf 100644 --- a/tools/perf/scripts/python/check-perf-trace.py +++ b/tools/perf/scripts/python/check-perf-trace.py @@ -1,4 +1,4 @@ -# perf trace event handlers, generated by perf trace -g python +# perf script event handlers, generated by perf script -g python  # (c) 2010, Tom Zanussi <tzanussi@gmail.com>  # Licensed under the terms of the GNU GPL License version 2  # diff --git a/tools/perf/scripts/python/event_analyzing_sample.py b/tools/perf/scripts/python/event_analyzing_sample.py new file mode 100644 index 00000000000..163c39fa12d --- /dev/null +++ b/tools/perf/scripts/python/event_analyzing_sample.py @@ -0,0 +1,189 @@ +# event_analyzing_sample.py: general event handler in python +# +# Current perf report is already very powerful with the annotation integrated, +# and this script is not trying to be as powerful as perf report, but +# providing end user/developer a flexible way to analyze the events other +# than trace points. +# +# The 2 database related functions in this script just show how to gather +# the basic information, and users can modify and write their own functions +# according to their specific requirement. +# +# The first function "show_general_events" just does a basic grouping for all +# generic events with the help of sqlite, and the 2nd one "show_pebs_ll" is +# for a x86 HW PMU event: PEBS with load latency data. +# + +import os +import sys +import math +import struct +import sqlite3 + +sys.path.append(os.environ['PERF_EXEC_PATH'] + \ +        '/scripts/python/Perf-Trace-Util/lib/Perf/Trace') + +from perf_trace_context import * +from EventClass import * + +# +# If the perf.data has a big number of samples, then the insert operation +# will be very time consuming (about 10+ minutes for 10000 samples) if the +# .db database is on disk. Move the .db file to RAM based FS to speedup +# the handling, which will cut the time down to several seconds. +# +con = sqlite3.connect("/dev/shm/perf.db") +con.isolation_level = None + +def trace_begin(): +	print "In trace_begin:\n" + +        # +        # Will create several tables at the start, pebs_ll is for PEBS data with +        # load latency info, while gen_events is for general event. +        # +        con.execute(""" +                create table if not exists gen_events ( +                        name text, +                        symbol text, +                        comm text, +                        dso text +                );""") +        con.execute(""" +                create table if not exists pebs_ll ( +                        name text, +                        symbol text, +                        comm text, +                        dso text, +                        flags integer, +                        ip integer, +                        status integer, +                        dse integer, +                        dla integer, +                        lat integer +                );""") + +# +# Create and insert event object to a database so that user could +# do more analysis with simple database commands. +# +def process_event(param_dict): +        event_attr = param_dict["attr"] +        sample     = param_dict["sample"] +        raw_buf    = param_dict["raw_buf"] +        comm       = param_dict["comm"] +        name       = param_dict["ev_name"] + +        # Symbol and dso info are not always resolved +        if (param_dict.has_key("dso")): +                dso = param_dict["dso"] +        else: +                dso = "Unknown_dso" + +        if (param_dict.has_key("symbol")): +                symbol = param_dict["symbol"] +        else: +                symbol = "Unknown_symbol" + +        # Create the event object and insert it to the right table in database +        event = create_event(name, comm, dso, symbol, raw_buf) +        insert_db(event) + +def insert_db(event): +        if event.ev_type == EVTYPE_GENERIC: +                con.execute("insert into gen_events values(?, ?, ?, ?)", +                                (event.name, event.symbol, event.comm, event.dso)) +        elif event.ev_type == EVTYPE_PEBS_LL: +                event.ip &= 0x7fffffffffffffff +                event.dla &= 0x7fffffffffffffff +                con.execute("insert into pebs_ll values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", +                        (event.name, event.symbol, event.comm, event.dso, event.flags, +                                event.ip, event.status, event.dse, event.dla, event.lat)) + +def trace_end(): +	print "In trace_end:\n" +        # We show the basic info for the 2 type of event classes +        show_general_events() +        show_pebs_ll() +        con.close() + +# +# As the event number may be very big, so we can't use linear way +# to show the histogram in real number, but use a log2 algorithm. +# + +def num2sym(num): +        # Each number will have at least one '#' +        snum = '#' * (int)(math.log(num, 2) + 1) +        return snum + +def show_general_events(): + +        # Check the total record number in the table +        count = con.execute("select count(*) from gen_events") +        for t in count: +                print "There is %d records in gen_events table" % t[0] +                if t[0] == 0: +                        return + +        print "Statistics about the general events grouped by thread/symbol/dso: \n" + +         # Group by thread +        commq = con.execute("select comm, count(comm) from gen_events group by comm order by -count(comm)") +        print "\n%16s %8s %16s\n%s" % ("comm", "number", "histogram", "="*42) +        for row in commq: +             print "%16s %8d     %s" % (row[0], row[1], num2sym(row[1])) + +        # Group by symbol +        print "\n%32s %8s %16s\n%s" % ("symbol", "number", "histogram", "="*58) +        symbolq = con.execute("select symbol, count(symbol) from gen_events group by symbol order by -count(symbol)") +        for row in symbolq: +             print "%32s %8d     %s" % (row[0], row[1], num2sym(row[1])) + +        # Group by dso +        print "\n%40s %8s %16s\n%s" % ("dso", "number", "histogram", "="*74) +        dsoq = con.execute("select dso, count(dso) from gen_events group by dso order by -count(dso)") +        for row in dsoq: +             print "%40s %8d     %s" % (row[0], row[1], num2sym(row[1])) + +# +# This function just shows the basic info, and we could do more with the +# data in the tables, like checking the function parameters when some +# big latency events happen. +# +def show_pebs_ll(): + +        count = con.execute("select count(*) from pebs_ll") +        for t in count: +                print "There is %d records in pebs_ll table" % t[0] +                if t[0] == 0: +                        return + +        print "Statistics about the PEBS Load Latency events grouped by thread/symbol/dse/latency: \n" + +        # Group by thread +        commq = con.execute("select comm, count(comm) from pebs_ll group by comm order by -count(comm)") +        print "\n%16s %8s %16s\n%s" % ("comm", "number", "histogram", "="*42) +        for row in commq: +             print "%16s %8d     %s" % (row[0], row[1], num2sym(row[1])) + +        # Group by symbol +        print "\n%32s %8s %16s\n%s" % ("symbol", "number", "histogram", "="*58) +        symbolq = con.execute("select symbol, count(symbol) from pebs_ll group by symbol order by -count(symbol)") +        for row in symbolq: +             print "%32s %8d     %s" % (row[0], row[1], num2sym(row[1])) + +        # Group by dse +        dseq = con.execute("select dse, count(dse) from pebs_ll group by dse order by -count(dse)") +        print "\n%32s %8s %16s\n%s" % ("dse", "number", "histogram", "="*58) +        for row in dseq: +             print "%32s %8d     %s" % (row[0], row[1], num2sym(row[1])) + +        # Group by latency +        latq = con.execute("select lat, count(lat) from pebs_ll group by lat order by lat") +        print "\n%32s %8s %16s\n%s" % ("latency", "number", "histogram", "="*58) +        for row in latq: +             print "%32s %8d     %s" % (row[0], row[1], num2sym(row[1])) + +def trace_unhandled(event_name, context, event_fields_dict): +		print ' '.join(['%s=%s'%(k,str(v))for k,v in sorted(event_fields_dict.items())]) diff --git a/tools/perf/scripts/python/failed-syscalls-by-pid.py b/tools/perf/scripts/python/failed-syscalls-by-pid.py index acd7848717b..85805fac411 100644 --- a/tools/perf/scripts/python/failed-syscalls-by-pid.py +++ b/tools/perf/scripts/python/failed-syscalls-by-pid.py @@ -15,7 +15,7 @@ from perf_trace_context import *  from Core import *  from Util import * -usage = "perf trace -s syscall-counts-by-pid.py [comm|pid]\n"; +usage = "perf script -s syscall-counts-by-pid.py [comm|pid]\n";  for_comm = None  for_pid = None diff --git a/tools/perf/scripts/python/net_dropmonitor.py b/tools/perf/scripts/python/net_dropmonitor.py new file mode 100755 index 00000000000..b5740599aab --- /dev/null +++ b/tools/perf/scripts/python/net_dropmonitor.py @@ -0,0 +1,75 @@ +# Monitor the system for dropped packets and proudce a report of drop locations and counts + +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, +		   skbaddr, location, protocol): +	slocation = str(location) +	try: +		drop_log[slocation] = drop_log[slocation] + 1 +	except: +		drop_log[slocation] = 1 diff --git a/tools/perf/scripts/python/sched-migration.py b/tools/perf/scripts/python/sched-migration.py index b934383c336..74d55ec08ae 100644 --- a/tools/perf/scripts/python/sched-migration.py +++ b/tools/perf/scripts/python/sched-migration.py @@ -4,7 +4,7 @@  #  # Copyright (C) 2010 Frederic Weisbecker <fweisbec@gmail.com>  # -# perf trace event handlers have been generated by perf trace -g python +# perf script event handlers have been generated by perf script -g python  #  # This software is distributed under the terms of the GNU General  # Public License ("GPL") version 2 as published by the Free Software diff --git a/tools/perf/scripts/python/sctop.py b/tools/perf/scripts/python/sctop.py index 7a6ec2c7d8a..42c267e292f 100644 --- a/tools/perf/scripts/python/sctop.py +++ b/tools/perf/scripts/python/sctop.py @@ -17,7 +17,7 @@ from perf_trace_context import *  from Core import *  from Util import * -usage = "perf trace -s sctop.py [comm] [interval]\n"; +usage = "perf script -s sctop.py [comm] [interval]\n";  for_comm = None  default_interval = 3 diff --git a/tools/perf/scripts/python/syscall-counts-by-pid.py b/tools/perf/scripts/python/syscall-counts-by-pid.py index d1ee3ec10cf..c64d1c55d74 100644 --- a/tools/perf/scripts/python/syscall-counts-by-pid.py +++ b/tools/perf/scripts/python/syscall-counts-by-pid.py @@ -14,7 +14,7 @@ from perf_trace_context import *  from Core import *  from Util import syscall_name -usage = "perf trace -s syscall-counts-by-pid.py [comm]\n"; +usage = "perf script -s syscall-counts-by-pid.py [comm]\n";  for_comm = None  for_pid = None diff --git a/tools/perf/scripts/python/syscall-counts.py b/tools/perf/scripts/python/syscall-counts.py index ea183dc82d2..b435d3f188e 100644 --- a/tools/perf/scripts/python/syscall-counts.py +++ b/tools/perf/scripts/python/syscall-counts.py @@ -15,7 +15,7 @@ from perf_trace_context import *  from Core import *  from Util import syscall_name -usage = "perf trace -s syscall-counts.py [comm]\n"; +usage = "perf script -s syscall-counts.py [comm]\n";  for_comm = None  | 
