From 136d685e3d9079778b10fb1d3d704a77cad72d23 Mon Sep 17 00:00:00 2001 From: Andi Kleen Date: Tue, 3 Feb 2015 08:22:02 -0800 Subject: [PATCH] toplev: Avoid measuring frequency in SMT mode with level 1 as we would need more counters than available, due to the extra cycles count. Add a new --frequency argument to override. Thanks to Ahmad for the report. --- toplev.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/toplev.py b/toplev.py index 10983a36..af2ebfa5 100755 --- a/toplev.py +++ b/toplev.py @@ -171,6 +171,7 @@ def event_group(evlist): p.add_argument('--cpu', '-C', help=argparse.SUPPRESS) p.add_argument('--tsx', help="Measure TSX metrics", action='store_true') p.add_argument('--all', help="Measure everything available", action='store_true') +p.add_argument('--frequency', help="Measure frequency", action='store_true') p.add_argument('--no-group', help='Dont use groups', action='store_true') p.add_argument('--no-multiplex', help='Do not multiplex, but run the workload multiple times as needed. Requires reproducible workloads.', @@ -192,6 +193,7 @@ def event_group(evlist): args.power = True args.sw = True args.metrics = True + args.frequency = True args.level = 5 if args.graph: @@ -1016,11 +1018,12 @@ def setup_with_metrics(p, runner): import tsx_metrics setup_with_metrics(tsx_metrics, runner) -import frequency -old_metrics = args.metrics -args.metrics = True -frequency.SetupCPU(runner, cpu) -args.metrics = old_metrics +if (args.level > 2 or not need_any) or args.frequency: + import frequency + old_metrics = args.metrics + args.metrics = True + frequency.SetupCPU(runner, cpu) + args.metrics = old_metrics if need_any: print "Running in HyperThreading mode. Will measure complete system."