diff --git a/eval.py b/eval.py index 71f20c4a48ebb33d9ec06f9a8dae1e29d826cdf8..a0629d4a2c2cc04e339ccae7e3cf55b6800f18f6 100755 --- a/eval.py +++ b/eval.py @@ -135,15 +135,17 @@ MEASURE_CMD = f'{PERF_EXE} stat -x; -e {PERF_EVENTS} -o {{RESULT_FILE_STEM}}.sta def perf_get_energy_events() -> str: """Return the energy events supported by this system""" - return ','.join([ # type: ignore - l.split()[0] for l in subprocess.check_output('perf list'.split(), - text=True).splitlines() - if 'energy' in l - ]) + if not perf_get_energy_events.events: # type: ignore + perf_get_energy_events.events = ','.join([ # type: ignore + l.split()[0] for l in subprocess.check_output( + 'perf list'.split(), text=True).splitlines() if 'energy' in l + ]) + return perf_get_energy_events.events # type: ignore -MEASURE_ENERGY_CMD = (f'{PERF_EXE} stat -a -x; -e {perf_get_energy_events()}' - ' -o {RESULT_FILE_STEM}.energy.stats') +perf_get_energy_events.events = '' # type: ignore + +MEASURE_ENERGY_CMD = f'{PERF_EXE} stat -a -x; -e {{ENERGY_EVENTS}} -o {{RESULT_FILE_STEM}}.energy.stats' CACHE_DROP_FILE = '/proc/sys/vm/drop_caches' @@ -311,8 +313,10 @@ def main(args): f'{target}.{run}.emper-stats') measure_energy_proc = None if args.measure_energy: + energy_events = perf_get_energy_events() measure_energy_cmd = MEASURE_ENERGY_CMD.format( - RESULT_FILE_STEM=result_file_stem) + RESULT_FILE_STEM=result_file_stem, + ENERGY_EVENTS=energy_events) measure_energy_proc = subprocess.Popen( measure_energy_cmd.split())