Example #1
0
def increase(self, servers, length, dummy):

    servers.sort(key=lambda x: x.utilization, reverse=False)

    from collections import namedtuple
    # pylint: disable-msg=C0103
    IdleTask = namedtuple('IdleTask', ['utilization', 'deadline', 'name'])

    idle = length - sum([s.utilization for s in servers])

    packed_servers = []
    for server in servers:
        packed_servers.sort(key=lambda x: x.utilization, reverse=False)
        for p_server in packed_servers:
            if p_server.utilization + server.utilization <= 1:
                p_server.add_child(server)

                # Add dummy to complete server utilization
                if p_server.utilization < 1 and idle > 0:
                    d = IdleTask(min(1 - p_server.utilization, idle), 0,
                                 'IdleTask')
                    t = TaskServer(d)
                    update_deadline2(self.sim, t, INFINITO)
                    self.Tdummy.append(t)
                    p_server.add_child(t)
                    idle -= d.utilization
                break
        else:
            p_server = EDFServer()
            p_server.add_child(server)
            packed_servers.append(p_server)

    return packed_servers
Example #2
0
def decrease(self, servers, length, dummy):

    servers.sort(key=lambda x: x.utilization, reverse=True)

    from collections import namedtuple
    # pylint: disable-msg=C0103
    IdleTask = namedtuple('IdleTask', ['utilization', 'deadline', 'name'])

    idle = length - sum([s.utilization for s in servers])

    packed_servers = []
    for server in servers:
        #Try to place the item in the fullest bin that will accommodate it, i.e., the one that will leave the least space remaining
        packed_servers.sort(key=lambda x: x.utilization, reverse=True)
        for p_server in packed_servers:
            if p_server.utilization + server.utilization <= 1:
                p_server.add_child(server)

                # Add dummy to complete server utilization
                if p_server.utilization < 1 and idle > 0:
                    d = IdleTask(min(1 - p_server.utilization, idle), 0,
                                 'IdleTask')
                    t = TaskServer(d)
                    update_deadline2(self.sim, t, INFINITO)
                    self.Tdummy.append(t)
                    p_server.add_child(t)
                    idle -= d.utilization
                break
        else:
            p_server = EDFServer()
            p_server.add_child(server)
            packed_servers.append(p_server)

    return packed_servers
Example #3
0
def pack_FF(servers):
    """
    Create a list of EDF Servers by packing servers. First-Fit  
    packing algorithm.
    """
    packed_servers = []
    for server in servers:
        for p_server in packed_servers:
            if p_server.utilization + server.utilization <= 1:
                p_server.add_child(server)
                break
        else:
            p_server = EDFServer()
            p_server.add_child(server)
            packed_servers.append(p_server)

    return packed_servers
Example #4
0
def pack(servers):
    """
    Create a list of EDF Servers by packing servers. Currently use a
    First-Fit but the original article states they used a Worst-Fit packing
    algorithm. According to the article, a First-Fit should also work.
    """
    packed_servers = []
    for server in servers:
        for p_server in packed_servers:
            if p_server.utilization + server.utilization <= 1:
                p_server.add_child(server)
                break
        else:
            p_server = EDFServer()
            p_server.add_child(server)
            packed_servers.append(p_server)

    return packed_servers
Example #5
0
def pack(servers):
    """
    Create a list of EDF Servers by packing servers. Currently use a
    First-Fit but the original article states they used a Worst-Fit packing
    algorithm. According to the article, a First-Fit should also work.
    """
    packed_servers = []
    for server in servers:
        for p_server in packed_servers:
            if p_server.utilization + server.utilization <= 1:
                p_server.add_child(server)
                break
        else:
            p_server = EDFServer()
            p_server.add_child(server)
            packed_servers.append(p_server)

    return packed_servers
Example #6
0
    def add_idle_tasks(self, servers):
        """
        Create IdleTasks in order to reach 100% system utilization.
        """
        from collections import namedtuple
        # pylint: disable-msg=C0103
        IdleTask = namedtuple('IdleTask', ['utilization'])

        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))
                server.add_child(TaskServer(task))
                idle -= task.utilization
        while idle > 0:
            task = IdleTask(min(1, idle))
            server = EDFServer()
            server.add_child(TaskServer(task))
            idle -= task.utilization
            servers.append(server)
Example #7
0
    def add_idle_tasks(self, servers):
        """
        Create IdleTasks in order to reach 100% system utilization.
        """
        from collections import namedtuple
        # pylint: disable-msg=C0103
        IdleTask = namedtuple('IdleTask', ['utilization'])

        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))
                server.add_child(TaskServer(task))
                idle -= task.utilization
        while idle > 0:
            task = IdleTask(min(1, idle))
            server = EDFServer()
            server.add_child(TaskServer(task))
            idle -= task.utilization
            servers.append(server)
Example #8
0
def pack_BF(servers):
    """
    Create a list of EDF Servers by packing servers. Best-Fit 
    packing algorithm.
    """

    # Find packed servers if there is one (EDFServer)
    packed_servers = []  #[s for s in servers if s is EDFServer()]
    for server in servers:
        #Try to place the item in the fullest bin that will accommodate it, i.e., the one that will leave the least space remaining
        packed_servers.sort(key=lambda x: x.utilization, reverse=True)
        for p_server in packed_servers:
            if p_server.utilization + server.utilization <= 1:
                p_server.add_child(server)
                break
        else:
            p_server = EDFServer()
            p_server.add_child(server)
            packed_servers.append(p_server)

    return packed_servers