From a260397a46dd0732194a336a48926d8a50ff8b10 Mon Sep 17 00:00:00 2001 From: Morris Jette <jette@schedmd.com> Date: Tue, 19 Jan 2016 12:26:17 -0800 Subject: [PATCH] Fix for socket allocations and specialized cores Previous logic would prevent allocation of sockets to a job unless the entire socket was available. If there were any specialized cores, the socket was treated as being not available and unusable. For example, if a node had 2 sockets, then a job requesting 2 specialized cores would reserve one core on each of the two sockets and render the job not runnable. --- src/plugins/select/cons_res/job_test.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/plugins/select/cons_res/job_test.c b/src/plugins/select/cons_res/job_test.c index 4dee62fa3da..3fd31825d2a 100644 --- a/src/plugins/select/cons_res/job_test.c +++ b/src/plugins/select/cons_res/job_test.c @@ -217,6 +217,11 @@ static uint16_t _allocate_sc(struct job_record *job_ptr, bitstr_t *core_map, uint16_t ncpus_per_core = 0xffff; /* Usable CPUs per core */ uint32_t free_cpu_count = 0, used_cpu_count = 0, *used_cpu_array = NULL; + if (entire_sockets_only && job_ptr->details->whole_node && + (job_ptr->details->core_spec != (uint16_t) NO_VAL)) { + /* Ignore specialized cores when allocating "entire" socket */ + entire_sockets_only = false; + } if (job_ptr->details && job_ptr->details->mc_ptr) { uint32_t threads_per_socket; multi_core_data_t *mc_ptr = job_ptr->details->mc_ptr; -- GitLab