def cmd_collect_metadata(args): filename = args.output if filename and os.path.exists(filename): print("ERROR: The JSON file %r already exists" % filename) sys.exit(1) cpus = args.affinity if cpus: if not set_cpu_affinity(cpus): print("ERROR: failed to set the CPU affinity") sys.exit(1) else: cpus = get_isolated_cpus() if cpus: set_cpu_affinity(cpus) # ignore if set_cpu_affinity() failed run = perf.Run([1.0]) metadata = run.get_metadata() if metadata: print("Metadata:") for line in format_metadata(metadata): print(line) if filename: run = run._update_metadata({'name': 'metadata'}) bench = perf.Benchmark([run]) bench.dump(filename)
def _cpu_affinity(self): cpus = self.args.affinity if not cpus: # --affinity option is not set: detect isolated CPUs isolated = True cpus = get_isolated_cpus() if not cpus: # no isolated CPUs or unable to get the isolated CPUs return else: isolated = False cpus = parse_cpu_list(cpus) if set_cpu_affinity(cpus): if self.args.verbose: if isolated: text = ("Pin process to isolated CPUs: %s" % format_cpu_list(cpus)) else: text = ("Pin process to CPUs: %s" % format_cpu_list(cpus)) print(text) if isolated: self.args.affinity = format_cpu_list(cpus) else: if not isolated: print("ERROR: CPU affinity not available.", file=sys.stderr) print("Use Python 3.3 or newer, or install psutil dependency") sys.exit(1) elif not self.args.quiet: print("WARNING: unable to pin worker processes to " "isolated CPUs, CPU affinity not available") print("Use Python 3.3 or newer, or install psutil dependency")