Beispiel #1
0
    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
Beispiel #2
0
    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
Beispiel #3
0
    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