Hello,

The Slurm documentation states that "The default allocation method within a 
node is cyclic allocation (allocate available CPUs in a round-robin fashion 
across the sockets within a node)." 

In our case, we are using hyperthreading, which means that if two jobs 
requesting one CPU each arrive at the same time on an empty node, they will be 
assigned to the two threads of the same physical core. To improve performance, 
we would like Slurm to allocate CPUs (in our case, threads) in a way that 
prioritizes using one thread per physical core first, and only once all cores 
are occupied, assign the second thread of each core. This would be similar to 
the Least Loaded Node (LLN) approach, but instead of distributing jobs across 
nodes, it would distribute them across physical cores (Least Loaded Core).

We do not want to disable hyperthreading; we simply want to optimize core usage 
when a machine is not fully loaded. We also want this to be a cluster-wide 
setting, and not a user and/or job setting.

Our current slurm.conf contains:
ConstrainCores          = no
SelectType              = select/cons_tres
SelectTypeParameters    = CR_CPU_MEMORY

And our cgroup.conf contains:
ConstrainDevices=yes
ConstrainCores=yes

Does anyone know how to achieve this?

Thanks,
Guillaume 

-- 
slurm-users mailing list -- slurm-users@lists.schedmd.com
To unsubscribe send an email to slurm-users-le...@lists.schedmd.com

Reply via email to