def preempt_job_node()

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