View | Details | Raw Unified | Return to ticket 352
Collapse All | Expand All

(-)a/src/slurmctld/job_mgr.c (-9 / +1 lines)
Lines 4802-4808 static bool _valid_pn_min_mem(job_desc_msg_t * job_desc_msg, Link Here
4802
{
4802
{
4803
	uint32_t job_mem_limit = job_desc_msg->pn_min_memory;
4803
	uint32_t job_mem_limit = job_desc_msg->pn_min_memory;
4804
	uint32_t sys_mem_limit;
4804
	uint32_t sys_mem_limit;
4805
	uint16_t cpus_per_node, ratio;
4805
	uint16_t cpus_per_node;
4806
4806
4807
	if (part_ptr && part_ptr->max_mem_per_cpu)
4807
	if (part_ptr && part_ptr->max_mem_per_cpu)
4808
		sys_mem_limit = part_ptr->max_mem_per_cpu;
4808
		sys_mem_limit = part_ptr->max_mem_per_cpu;
Lines 4817-4830 static bool _valid_pn_min_mem(job_desc_msg_t * job_desc_msg, Link Here
4817
		sys_mem_limit &= (~MEM_PER_CPU);
4817
		sys_mem_limit &= (~MEM_PER_CPU);
4818
		if (job_mem_limit <= sys_mem_limit)
4818
		if (job_mem_limit <= sys_mem_limit)
4819
			return true;
4819
			return true;
4820
		ratio = (job_mem_limit + sys_mem_limit - 1) / sys_mem_limit;
4821
		if (job_desc_msg->cpus_per_task == (uint16_t) NO_VAL) {
4822
			job_desc_msg->cpus_per_task = ratio;
4823
			job_desc_msg->pn_min_memory  = job_mem_limit + ratio-1;
4824
			job_desc_msg->pn_min_memory /= ratio;
4825
			job_desc_msg->pn_min_memory |= MEM_PER_CPU;
4826
			return true;
4827
		}
4828
		return false;
4820
		return false;
4829
	}
4821
	}
4830
4822

Return to ticket 352