Exemple #1
0
 def static_schedule(self):
     workers = self.simulator.workers
     tasks = self.simulator.task_graph.tasks
     return [
         TaskAssignment(workers[0], tasks[0]),
         TaskAssignment(workers[1], tasks[1]),
         TaskAssignment(workers[2], tasks[3]),
         TaskAssignment(workers[0], tasks[4]),
         TaskAssignment(workers[2], tasks[2])
     ]
Exemple #2
0
def test_worker_estimate_earliest_time_offset_now():
    tg = TaskGraph()
    t0 = tg.new_task(expected_duration=3, cpus=1)
    t1 = tg.new_task(expected_duration=5, cpus=1)
    t2 = tg.new_task(expected_duration=3, cpus=2)

    worker = Worker(cpus=2)
    worker.assignments = [
        TaskAssignment(worker, t0),
        TaskAssignment(worker, t1)
    ]
    worker.running_tasks[t0] = RunningTask(t0, 0)
    worker.running_tasks[t1] = RunningTask(t1, 0)

    assert worker_estimate_earliest_time(worker, t2, 2) == 3
Exemple #3
0
def test_estimate_schedule(plan1):
    netmodel = SimpleNetModel(1)
    workers = [Worker(cpus=4) for _ in range(4)]

    schedule = [TaskAssignment(w, t) for (w, t) in zip(itertools.cycle(workers), plan1.tasks)]

    assert estimate_schedule(schedule, plan1, netmodel) == 16
Exemple #4
0
 def schedule(self, new_ready, new_finished):
     times.append(self.simulator.env.now)
     workers = self.simulator.workers
     return [
         TaskAssignment(workers[0], t)
         for t in new_ready
     ]
Exemple #5
0
        def schedule(self, new_ready, new_finished):
            workers = self.simulator.workers

            remaining_times.append([[
                t.remaining_time(self.simulator.env.now)
                for t in w.running_tasks.values()
            ] for w in workers])

            if not self.scheduled:
                tasks = self.simulator.task_graph.tasks
                self.scheduled = True
                return [
                    TaskAssignment(workers[0], tasks[0]),
                    TaskAssignment(workers[1], tasks[1]),
                    TaskAssignment(workers[1], tasks[2])
                ]
            else:
                return ()
Exemple #6
0
def test_estimate_schedule_zero_expected_time(plan1):
    netmodel = SimpleNetModel(1)
    workers = [Worker(cpus=4) for _ in range(4)]

    plan1.tasks[1].expected_duration = 0
    plan1.tasks[5].expected_duration = 0

    schedule = [TaskAssignment(w, t) for (w, t) in zip(itertools.cycle(workers), plan1.tasks)]

    assert estimate_schedule(schedule, plan1, netmodel) == 15
Exemple #7
0
def test_worker_estimate_earliest_time():
    tg = TaskGraph()
    t0 = tg.new_task(expected_duration=3, cpus=2)
    t1 = tg.new_task(expected_duration=5, cpus=1)
    t2 = tg.new_task(expected_duration=4, cpus=3)
    t4 = tg.new_task(expected_duration=4, cpus=2)
    t5 = tg.new_task(expected_duration=4, cpus=2)

    worker = Worker(cpus=4)
    worker.assignments = [
        TaskAssignment(worker, t0),
        TaskAssignment(worker, t1),
        TaskAssignment(worker, t2),
        TaskAssignment(worker, t4)
    ]
    worker.running_tasks[t0] = RunningTask(t0, 0)
    worker.running_tasks[t1] = RunningTask(t1, 0)

    assert worker_estimate_earliest_time(worker, t5, 0) == 7
Exemple #8
0
 def static_schedule(self):
     workers = self.simulator.workers
     return [
         TaskAssignment(workers[definition[0]], *definition[1:])
         for definition in assignments
     ]
Exemple #9
0
 def schedule(self, new_ready, new_finished):
     worker = self.simulator.workers[0]
     free_cpus.append(worker.free_cpus)
     return [TaskAssignment(worker, t) for t in new_ready]