int set_ncpus( struct pbsnode *current, struct pbsnode *parent, int ncpus) { int difference; int i; int orig_svr_clnodes; if (current == NULL) return(PBSE_BAD_PARAMETER); difference = ncpus - current->nd_slots.get_total_execution_slots(); orig_svr_clnodes = svr_clnodes; for (i = 0; i < abs(difference); i++) { if (difference > 0) { add_execution_slot(current); svr_clnodes++; } else if (difference < 0) { delete_a_subnode(current); svr_clnodes--; } } if (difference < 0) { snprintf(log_buffer, sizeof(log_buffer), "ncpus was reduced from %d to %d", orig_svr_clnodes, svr_clnodes); log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_NODE, __func__, log_buffer); } else if (current->nd_slots.get_total_execution_slots() > parent->max_subnode_nppn) parent->max_subnode_nppn = current->nd_slots.get_total_execution_slots(); #ifdef PENABLE_LINUX_CGROUPS if (current->nd_layout.getTotalThreads() != current->nd_slots.get_total_execution_slots()) { current->nd_layout = Machine(current->nd_slots.get_total_execution_slots()); } #endif return(PBSE_NONE); } /* END set_ncpus() */
int set_ncpus( struct pbsnode *current, struct pbsnode *parent, const char *str) { int ncpus; int difference; int i, orig_svr_clnodes; if (current == NULL) return(PBSE_BAD_PARAMETER); ncpus = atoi(str + ac_cproc_eq_len); difference = ncpus - current->nd_slots.get_total_execution_slots(); orig_svr_clnodes = svr_clnodes; for (i = 0; i < abs(difference); i++) { if (difference > 0) { add_execution_slot(current); svr_clnodes++; } else if (difference < 0) { delete_a_subnode(current); svr_clnodes--; } } if (difference < 0) { snprintf(log_buffer, sizeof(log_buffer), "ncpus was reduced from %d to %d", orig_svr_clnodes, svr_clnodes); log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_NODE, __func__, log_buffer); } else if (current->nd_slots.get_total_execution_slots() > parent->max_subnode_nppn) parent->max_subnode_nppn = current->nd_slots.get_total_execution_slots(); return(PBSE_NONE); } /* END set_ncpus() */