Esempio n. 1
0
    def fill(self, servers, dummy):
        """
        Create IdleTasks in order to reach 100% system utilization.
        """
        from collections import namedtuple
        # pylint: disable-msg=C0103
        IdleTask = namedtuple('IdleTask', ['utilization', 'deadline', 'name'])

        idle = len(self.processors) - sum([s.utilization for s in servers])
        for server in servers:
            if server.utilization < 1 and idle > 0:
                task = IdleTask(min(1 - server.utilization, idle), 0, 'IdleTask')
                t = TaskServer(task)
                self.Tdummy.append(t)
                dummy.append(t)
                server.add_child(t)
                idle -= task.utilization
        while idle > 0:
            task = IdleTask(min(1, idle), 0, 'IdleTask')
            t = TaskServer(task)
            
            server = EDFServer()
            server.add_child(TaskServer(task))
            idle -= task.utilization
            servers.append(server)
Esempio n. 2
0
    def independent(self, servers, dummy):
        """
        Add dummy sem misturar
        """
        from collections import namedtuple
        # pylint: disable-msg=C0103
        IdleTask = namedtuple('IdleTask', ['utilization', 'deadline', 'name'])

        u = sum([s.utilization for s in servers])

        idle = ceil(u) - u

        while idle > 0:
            task = IdleTask(min(1, idle), 0, 'IdleTask')
            server = EDFServer()
            server.dummyServer = True

            t = TaskServer(task)
            self.Tdummy.append(t)
            t.dummyServer = True

            server.add_child(t)

            servers.append(server)
            dummy.append(t)

            idle -= min(1, idle)
Esempio n. 3
0
    def before(self, servers, dummy):
        """
        Create IdleTasks in order to reach 100% system utilization.
        """
        from collections import namedtuple
        # pylint: disable-msg=C0103
        IdleTask = namedtuple('IdleTask', ['utilization', 'deadline', 'name'])

        idle = len(self.processors) - sum([s.utilization for s in servers])
        new_servers = []
        for server in servers:
            if server.utilization < 1 and idle > 0:
                dummy = IdleTask(min(1 - server.utilization, idle), 0,
                                 'IdleTask')
                # Create a EDFserver to add dummy and the task server
                s = EDFServer()
                s.add_child(TaskServer(dummy))
                s.add_child(server)

                idle -= dummy.utilization
                new_servers.append(s)
            else:
                new_servers.append(server)

        return new_servers
Esempio n. 4
0
    def independent2(self, servers, dummy):
        """
        Add dummy sem misturar
        """
        from collections import namedtuple
        # pylint: disable-msg=C0103
        IdleTask = namedtuple('IdleTask', ['utilization', 'deadline', 'name'])

        idle = len(self.processors) - sum([s.utilization for s in servers])

        while idle > 0:
            task = IdleTask(min(1, idle), 0, 'IdleTask')
            
            t = TaskServer(task)
            self.Tdummy.append(t)
            t.dummyServer = True
           
            servers[0].add_child(t)
            
            dummy.append(t)
            #self.sim.logger.log("add dummy {} to server {} idle = {}".format(t.identifier, server.identifier, Fraction(round(min(1, idle),2))))
            idle -= min(1, idle)
Esempio n. 5
0
    def init(self):
        """
        Initialization of the scheduler. This function is called when the
        system is ready to run.
        """
        self.subsystems = []  # List of all the sub-systems.
        self.available_cpus = self.processors[:]  # Not yet affected cpus.
        self.task_to_subsystem = {}  # map: Task -> SubSystem
        self.Tdummy = []

        # Create the Task Servers. Those are the leaves of the reduction tree.
        list_servers = [TaskServer(task) for task in self.task_list]

        # map: Task -> TaskServer. Used to quickly find the servers to update.
        self.servers = dict(zip(self.task_list, list_servers))

        assert (sum([s.utilization for s in list_servers]) <= len(
            self.processors)), "Load exceeds 100%!"

        # Instanciate the reduction tree and the various sub-systems.
        self.reduce_iterations(list_servers)