def __add_workload(self, workload): log.info("Assigning '{}' thread(s) to workload: '{}'".format(workload.get_thread_count(), workload.get_id())) workload_map = self.get_workload_map_copy() workload_map[workload.get_id()] = workload request = self.__get_threads_request(workload.get_id(), workload_map, "assign") response = self.__cpu_allocator.assign_threads(request) self.__update_state(response.get_cpu(), workload_map) report_cpu_event(request, response)
def __remove_workload(self, workload_id): log.info("Removing workload: {}".format(workload_id)) if workload_id not in self.__workloads: log.error("Attempted to remove unknown workload: '{}'".format(workload_id)) return workload_map = self.get_workload_map_copy() request = self.__get_threads_request(workload_id, workload_map, "free") response = self.__cpu_allocator.free_threads(request) workload_map.pop(workload_id) self.__update_state(response.get_cpu(), workload_map) report_cpu_event(request, response)
def __rebalance(self, dummy): request = self.__get_rebalance_request() response = self.__cpu_allocator.rebalance(request) self.__update_state(response.get_cpu(), request.get_workloads()) report_cpu_event(request, response)