コード例 #1
0
    def __init__(self, resources):
        # Available resources
        self.total = resources

        # Consumed resource
        self.consumed = ResourceVector([0] * resources.dimensions())

        # User vector
        self.users = {}

        # Max fair share per user
        self.max_fair_share = {}
コード例 #2
0
def main():
    allocator = Allocator()

    # Take
    allocator.add_agent('default', ResourceVector([9, 18]))

    allocator.add_framework(Scheduler('B', allocator, ResourceVector([1, 4])))
    allocator.add_framework(Scheduler('A', allocator, ResourceVector([3, 1])))

    # TODO: Replace with simulator run
    simulator = Simulator(allocator)
    simulator.tick(5)
コード例 #3
0
def main():
    allocator = Allocator()

    # Take
    allocator.add_agent('default', ResourceVector([9, 18]))

    allocator.add_framework(InactiveScheduler('A', allocator))
    allocator.add_framework(InactiveScheduler('B', allocator))
    allocator.add_framework(InactiveScheduler('C', allocator))
    allocator.add_framework(InactiveScheduler('D', allocator))
    allocator.add_framework(InactiveScheduler('E', allocator))
    allocator.add_framework(
        StarvedScheduler('F', allocator, ResourceVector([1, 3])))

    # TODO: Replace with simulator run
    simulator = Simulator(allocator)
    simulator.tick(15)
コード例 #4
0
class DRFList:
    def __init__(self, resources):
        # Available resources
        self.total = resources

        # Consumed resource
        self.consumed = ResourceVector([0] * resources.dimensions())

        # User vector
        self.users = {}

        # Max fair share per user
        self.max_fair_share = {}

    def available(self):
        return self.total.subtract(self.consumed)

    def order(self):
        return sorted(self.max_fair_share.items(), key=operator.itemgetter(1))

    def add_user(self, name):
        self.max_fair_share[name] = 0.0
        self.users[name] = ResourceVector([0] * self.total.dimensions())

    def allocate(self, user, resources):
        # Update consumed vector
        self.consumed = self.consumed.add(resources)

        # Update user vector
        self.users[user] = self.users[user].add(resources)

        s = self.users[user].divide(self.total)
        self.max_fair_share[user] = max(s.vector)

    def recover(self, user, resources):
        # Update consumed vector
        self.consumed = self.consumed.subtract(resources)

        # Update user vector
        self.users[user] = self.users[user].subtract(resources)

        s = self.users[user].divide(self.total)
        self.max_fair_share[user] = max(s.vector)
コード例 #5
0
class DRFList:
    def __init__(self, resources):
        # Available resources
        self.total = resources

        # Consumed resource
        self.consumed = ResourceVector([0] * resources.dimensions())

        # User vector
        self.users = {}

        # Max fair share per user
        self.max_fair_share = {}

    def available(self):
        return self.total.subtract(self.consumed)

    def order(self):
        return sorted(self.max_fair_share.items(), key=operator.itemgetter(1))

    def add_user(self, name):
        self.max_fair_share[name] = 0.0
        self.users[name] = ResourceVector([0] * self.total.dimensions())

    def allocate(self, user, resources):
        # Update consumed vector
        self.consumed = self.consumed.add(resources)

        # Update user vector
        self.users[user] = self.users[user].add(resources)

        s = self.users[user].divide(self.total)
        self.max_fair_share[user] = max(s.vector)

    def recover(self, user, resources):
        # Update consumed vector
        self.consumed = self.consumed.subtract(resources)

        # Update user vector
        self.users[user] = self.users[user].subtract(resources)

        s = self.users[user].divide(self.total)
        self.max_fair_share[user] = max(s.vector)
コード例 #6
0
    def __init__(self, resources):
        # Available resources
        self.total = resources

        # Consumed resource
        self.consumed = ResourceVector([0] * resources.dimensions())

        # User vector
        self.users = {}

        # Max fair share per user
        self.max_fair_share = {}
コード例 #7
0
 def add_user(self, name):
     self.max_fair_share[name] = 0.0
     self.users[name] = ResourceVector([0] * self.total.dimensions())