SchedTune (TaskOnly) on JUNO
In [1]:
import logging
from conf import LisaLogging
LisaLogging.setup()
In [2]:
# Generate plots inline
%matplotlib inline
import json
import os
# Support for trace events analysis
from trace import Trace
# Support for performance analysis of RTApp workloads
from perf_analysis import PerfAnalysis
# Suport for FTrace events parsing and visualization
import trappy
In [3]:
# Base folder where tests folder are located
res_dir = '../../results_ipynb/stune_juno_taskonly_rampL'
logging.info('Content of the output folder %s', res_dir)
!tree {res_dir}
In [4]:
# Full analysis function
def analysis(test_id, t_min=None, t_max=None):
test_dir = '{}/rtapp:{}:mixprof'.format(res_dir, test_id)
run_dir = '{}/1/'.format(test_dir)
platform_json = '{}/platform.json'.format(test_dir)
trace_file = '{}/trace.dat'.format(run_dir)
# Load platform description data
with open(platform_json, 'r') as fh:
platform = json.load(fh)
# Load RTApp Performance data
pa = PerfAnalysis(run_dir)
logging.info("Loaded performance data for tasks: %s", pa.tasks())
# Load Trace data
events = [
"sched_switch",
"sched_contrib_scale_f",
"sched_load_avg_cpu",
"sched_load_avg_task",
"sched_tune_tasks_update",
"sched_boost_cpu",
"sched_boost_task",
"sched_energy_diff",
"cpu_frequency",
"cpu_capacity"
]
trace = Trace(run_dir, events, platform)
# Define time ranges for all the temporal plots
trace.setXTimeRange(t_min, t_max)
# Tasks plots
trace.analysis.tasks.plotTasks(pa.tasks())
for task in pa.tasks():
pa.plotPerf(task)
# Cluster plots
trace.analysis.frequency.plotClusterFrequencies()
In [5]:
analysis('noboost')
In [6]:
analysis('boost15')
In [7]:
analysis('boost30')