def get_rtapp_profile(cls, plat_info): profile = {} cpus = cls.get_migration_cpus(plat_info) for task in ["migr", "static0", "static1"]: # An empty RTATask just to sum phases up profile[task] = RTATask() common_phase_settings = dict( duration_s=cls.PHASE_DURATION_S, period_ms=cls.TASK_PERIOD_MS, ) for cpu in cpus: # A task that will migrate to another CPU profile["migr"] += Periodic( duty_cycle_pct=cls.unscaled_utilization(plat_info, cpu, 20), cpus=[cpu], **common_phase_settings) # Just some tasks that won't move to get some background utilization profile["static0"] += Periodic( duty_cycle_pct=cls.unscaled_utilization( plat_info, cpus[0], 30), cpus=[cpus[0]], **common_phase_settings) profile["static1"] += Periodic( duty_cycle_pct=cls.unscaled_utilization( plat_info, cpus[1], 20), cpus=[cpus[1]], **common_phase_settings) return profile
def get_rtapp_profile(cls, plat_info): cpus = cls.get_migration_cpus(plat_info) make_name = lambda i: 'migrating{}'.format(i) nr_tasks = len(cpus) profile = {make_name(i): RTATask() for i in range(nr_tasks)} # Define one task per CPU, and create all the possible migrations by # shuffling around these tasks for cpus_combi in itertools.permutations(cpus, r=nr_tasks): for i, cpu in enumerate(cpus_combi): profile[make_name(i)] += Periodic( duty_cycle_pct=cls.unscaled_utilization( plat_info, cpu, 50), duration_s=cls.PHASE_DURATION_S, period_ms=cls.TASK_PERIOD_MS, cpus=[cpu], ) return profile
def get_rtapp_profile(cls, plat_info): profile = {} cpus = cls.get_migration_cpus(plat_info) for task in ["migrating0", "migrating1"]: # An empty RTATask just to sum phases up profile[task] = RTATask() for i in range(2): # A task that will migrate from CPU A to CPU B profile["migrating0"] += Periodic(duty_cycle_pct=20, duration_s=cls.PHASE_DURATION_S, period_ms=cls.TASK_PERIOD_MS, cpus=[cpus[i]]) # A task that will migrate from CPU B to CPU A profile["migrating1"] += Periodic(duty_cycle_pct=20, duration_s=cls.PHASE_DURATION_S, period_ms=cls.TASK_PERIOD_MS, cpus=[cpus[1 - i]]) return profile