On 01/15/2014 05:29 PM, Paul Edmon wrote:
I was wondering if it is possible in SLURM to have the scheduler charge for both CPU time and memory usage? After in a setting where you don't have exclusive access to each node you can end up in a situation where a node may only be using one core but all the memory. In SLURM if you are just doing CPU charging you only get hit for the 1 core you are using, not for the additional other cores (lets say for the sake of argument 64 total cores per node) that are idling because no other job can run. That seems unfair. Thoughts? If this doesn't exist it may be a good thing to add into the next version of SLURM as it would be handy in our environment. -Paul Edmon-
We use the MaxMemPerCPU configuration parameter. If your job e.g. ask for one out of 16 cores but half of the RAM, SLURM automatically upgrades the core usage to eight cores. And if your job says nothing about memory usage, it will be allowed to use up to the same proportion of available RAM as the proportion of available cores that it asks for. This does not allow for a one-core job to use half of the memory, while some other job uses the remaining cores and the other half of the memory. On the other side, it is a simple concept to explain and to charge. In a heterogeneous environment, with different amounts of cores and memory GBs, this solution does not work for all nodes. We have mostly one type of nodes in a cluster and those can be allocated core by core (with the corresponding proportion of memory attached), and the other nodes are fatter. The fatter nodes are not allowed to be split up core by core and are instead allocated node by node (with partition configuration flag "Shared=EXCLUSIVE"). -- Lennart Karlsson, UPPMAX, Uppsala University, Sweden
