in benchmarking/platforms/host/host_platform.py [0:0]
def runBenchmark(self, cmd, *args, **kwargs):
if not isinstance(cmd, list):
cmd = shlex.split(cmd)
platform_args = {}
env = os.environ
if "platform_args" in kwargs:
platform_args = kwargs["platform_args"]
if "env" in platform_args:
customized_env = platform_args["env"]
for k in customized_env:
env[k] = str(customized_env[k])
platform_args["env"] = env
# enable async if profiling was requested
runAsync = False
if "enable_profiling" in platform_args:
runAsync = platform_args["enable_profiling"]
del platform_args["enable_profiling"]
if runAsync and not self._isGPUMachine():
if "env" not in platform_args:
platform_args["env"] = env
platform_args["env"]["GPUMON_CPU_ONLY_MODE"] = "y"
platform_args["async"] = runAsync
profiler_args = {}
if "profiler_args" in platform_args:
profiler_args = platform_args["profiler_args"]
del platform_args["profiler_args"]
# meta is used to store any data about the benchmark run
# that is not the output of the command
meta = {}
if not runAsync:
output, _ = processRun(cmd, **platform_args)
if not output and getRunTimeout():
getLogger().info("Terminating...")
sys.exit(0)
return output, meta
# from_time = datetime.datetime.now()
procAndTimeout, err = processRun(cmd, **platform_args)
if err:
return [], meta
ps, _ = procAndTimeout
# profiler_server = getProfilerByUsage("server", ps.pid)
# if profiler_server:
# profilerServerFuture = profiler_server.start(**profiler_args)
profiler_trace = getProfilerByUsage("trace", ps.pid)
if profiler_trace:
profiler_trace.start(**profiler_args)
platform_args["filter"] = profiler_trace.getFilter()
output, _ = processWait(procAndTimeout, **platform_args)
# if profiler_server:
# profilerRunId = profiler_server.getId(profilerServerFuture)
# meta["profiler_run_id"] = profilerRunId
# self._sleepHost(from_time)
if profiler_trace:
traceryLink = profiler_trace.getLink()
filePathes = profiler_trace.getFilePathes()
meta["tracery_link"] = traceryLink
meta["file_pathes"] = filePathes
return output, meta