Index: client/tests/tracing_microbenchmark/tracers.py |
diff --git a/client/tests/tracing_microbenchmark/tracers.py b/client/tests/tracing_microbenchmark/tracers.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..bdd5194de0ccfa8caf52f0acecb5f961378fd880 |
--- /dev/null |
+++ b/client/tests/tracing_microbenchmark/tracers.py |
@@ -0,0 +1,60 @@ |
+import os |
+from autotest_lib.client.bin import utils |
+ |
+import base_tracer |
+try: |
+ from site_tracers import * |
+except ImportError: |
+ pass |
+ |
+ |
+off = base_tracer.Tracer |
+ |
+ |
+class ftrace(base_tracer.Tracer): |
+ |
+ mountpoint = '/sys/kernel/debug' |
+ tracing_dir = os.path.join(mountpoint, 'tracing') |
+ |
+ def warmup(self, buffer_size_kb): |
+ if not os.path.exists(self.tracing_dir): |
+ utils.system('mount -t debugfs debugfs %s' % self.mountpoint) |
+ |
+ # ensure clean state: |
+ self.trace_config('tracing_enabled', '0') |
+ self.trace_config('current_tracer', 'nop') |
+ self.trace_config('events/enable', '0') |
+ self.trace_config('trace', '') |
+ # set ring buffer size: |
+ self.trace_config('buffer_size_kb', str(buffer_size_kb)) |
+ # enable tracepoints: |
+ self.trace_config('events/syscalls/sys_enter_getuid/enable', '1') |
+ |
+ def cleanup(self): |
+ # reset ring buffer size: |
+ self.trace_config('buffer_size_kb', '1408') |
+ # disable tracepoints: |
+ self.trace_config('events/enable', '0') |
+ |
+ def start_tracing(self): |
+ self.trace_config('tracing_enabled', '1') |
+ |
+ def stop_tracing(self): |
+ self.trace_config('tracing_enabled', '0') |
+ |
+ def reset_tracing(self): |
+ self.trace_config('trace', '') |
+ |
+ def gather_stats(self, results): |
+ per_cpu = os.path.join(self.tracing_dir, 'per_cpu') |
+ for cpu in os.listdir(per_cpu): |
+ cpu_stats = os.path.join(per_cpu, cpu, 'stats') |
+ for line in utils.read_file(cpu_stats).splitlines(): |
+ key, val = line.split(': ') |
+ key = key.replace(' ', '_') |
+ val = int(val) |
+ cpu_key = '%s_%s' % (cpu, key) |
+ total_key = 'total_' + key |
+ results[cpu_key] = val |
+ results[total_key] = (results.get(total_key, 0) + |
+ results[cpu_key]) |