in cluster-trace-gpu-v2020/simulator/scheduler.py [0:0]
def preempt_job_node(self, node, preempted_job_list):
# Svc is updated, but the job is not
node.update_idl_gpus()
node.update_idl_cpus()
if self.preempt_policy in PREEMPT_POLICY_DICT.keys():
# Sort node.job_runn_list in place
self.preempt_job_sort_node(node=node, preempt_policy=self.preempt_policy)
for job_i in preempted_job_list:
for job_j in node.job_runn_list:
if job_i['job_id'] == job_j['job_id']: # these instances belong to the same job
succ = node.release_job(job_i)
assert succ is True
preempted_job_list.append(job_i)
while node.idl_gpus < 0 or node.idl_cpus < 0:
job_to_preempt = node.job_runn_list[0]
succ = node.release_job(job_to_preempt)
assert succ is True
preempted_job_list.append(job_to_preempt)
else:
raise KeyError("Uncaptured Preemption Policy Input: %d" % self.preempt_policy)
return preempted_job_list