As well as reports, one of the other most useful things you can
generate from perf is trace output. Support generating that with
trace=True added to the profiler, e.g.:
job.profilers.add('perf', events=['fs:*'], trace=True)
the output is a raw trace file in the profiling directory.
Change-Id: I84e1e0332611f5d31b44a4a5e9e7a11e73005364
Signed-off-by: Scott James Remnant <[email protected]>
---
client/profilers/perf/perf.py | 15 ++++++++++++++-
1 files changed, 14 insertions(+), 1 deletions(-)
diff --git a/client/profilers/perf/perf.py b/client/profilers/perf/perf.py
index e6f9bb7..70ed8aa 100644
--- a/client/profilers/perf/perf.py
+++ b/client/profilers/perf/perf.py
@@ -13,11 +13,12 @@ from autotest_lib.client.bin import profiler, os_dep, utils
class perf(profiler.profiler):
version = 1
- def initialize(self, events=["cycles","instructions"]):
+ def initialize(self, events=["cycles","instructions"], trace=False):
if type(events) == str:
self.events = [events]
else:
self.events = events
+ self.trace = trace
self.perf_bin = os_dep.command('perf')
perf_help = utils.run('%s report help' % self.perf_bin,
ignore_status=True).stderr
@@ -36,6 +37,8 @@ class perf(profiler.profiler):
self.logfile = os.path.join(test.profdir, "perf")
cmd = ("%s record -a -o %s" %
(self.perf_bin, self.logfile))
+ if self.trace:
+ cmd += " -R"
for event in self.events:
cmd += " -e %s" % event
self._process = subprocess.Popen(cmd, shell=True,
@@ -57,6 +60,16 @@ class perf(profiler.profiler):
p = subprocess.Popen(cmd, shell=True, stdout=outfile,
stderr=subprocess.STDOUT)
p.wait()
+
+ if self.trace:
+ tracefile = os.path.join(test.profdir, 'trace')
+ cmd = ("%s trace -i %s" % (self.perf_bin, self.logfile,))
+
+ outfile = open(tracefile, 'w')
+ p = subprocess.Popen(cmd, shell=True, stdout=outfile,
+ stderr=subprocess.STDOUT)
+ p.wait()
+
# The raw detailed perf output is HUGE. We cannot store it by default.
perf_log_size = os.stat(self.logfile)[stat.ST_SIZE]
logging.info('Removing %s after generating reports (saving %s bytes).',
--
1.7.3.1
_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest