Closed rexcsn closed 2 years ago
Suggestion for possible implementation of scalable workaround: Add a per-queue parameter so users can specify RealMemory for each queue at configuration time. Use this parameter to set up
/opt/slurm/etc/pcluster/slurm_parallelcluster_<PARTITION_NAME>_partition.conf
accordingly. Am I missing something, or would this not work for some reason? Trying to automate by figuring out RealMemory for each node type seems impossible.
How does pcluster determine number of CPUs= and Gres= when building its /opt/slurm/etc/pcluster/*partition.conf files?
Can't that same process be applied to determine RealMemory with a conservative value of say... 90% of physical memory for a particular instance type?
ParallelCluster 3.2.0 with support for memory-based job scheduling in Slurm has been released. See release notes https://github.com/aws/aws-parallelcluster/releases/tag/v3.2.0
Opening this issue as the main thread to collect slurm memory related info/concern/workarounds.
Issue
As mentioned by previously opened issues such as https://github.com/aws/aws-parallelcluster/issues/1517 and https://github.com/aws/aws-parallelcluster/issues/1714, due to changes from slurm, nodes for pcluster>=v2.5.0 are not configured with
RealMemory
information. As a result, ParallelCluster currently does not support scheduling with memory options with slurm.Workarounds
For pcluster>=v2.5.0<v2.9.0, workaround outlined here can be used to configure memory for cluster containing only 1 compute instance type.
For pcluster>=v2.9.0, multiple queue mode is introduced, and a cluster can now have multiple compute instance types. Old workaround can still be used for cluster with only 1 compute instance type. Here are the updated instruction on how to configure memory for multiple instance types in pcluster>=v2.9.0:
/opt/slurm/sbin/slurmd -C
, we should see something likeRealMemory=<SOME_NUMBER>
in the output.RealMemory
information for each instance type.RealMemory
information we need to add this information to the corresponding nodes in each queue/partition. We can do this by modifying the partition configuration file, located at/opt/slurm/etc/pcluster/slurm_parallelcluster_<PARTITION_NAME>_partition.conf
.RealMemory=<CHOSEN_MEMORY>
toNodeName=<YOUR_NODE_NAME> ...
entry for each instance type in each queue/partition.RealMemory=60000
for my nodesqueue1-dy-m54xlarge-[1-10]
. I would modify/opt/slurm/etc/pcluster/slurm_parallelcluster_queue1_partition.conf
, and the modified file should look like:NodeName=queue1-dy-m54xlarge-[1-10] CPUs=16 State=CLOUD Feature=dynamic,m5.4xlarge RealMemory=60000 ...