[slurm-users] Nodes stay drained no matter what I do
Patrick Goetz
pgoetz at math.utexas.edu
Fri Aug 25 14:25:51 UTC 2023
Hi Tina -
Thanks for the confirmation! I will make this adjustment to gres.conf.
On 8/25/23 04:50, Tina Friedrich wrote:
> Hi Patrick,
>
> we certainly use that information to set affinity, yes. Our gres.conf
> files (node-specific, as our config management creates them locally from
> 'nvidia-smi topo -m') - look like this:
>
> Name=gpu Type=a100 File=/dev/nvidia0 CPUs=0-23
> Name=gpu Type=a100 File=/dev/nvidia1 CPUs=0-23
> Name=gpu Type=a100 File=/dev/nvidia2 CPUs=24-47
> Name=gpu Type=a100 File=/dev/nvidia3 CPUs=24-47
>
> which means that the processor affinity is known, and you can request
> GPUs as '--gres=gpu:a100:X'.
>
> Tina
>
> On 24/08/2023 23:17, Patrick Goetz wrote:
>> Hi Mick -
>>
>> Thanks for these suggestions. I read over both release notes, but
>> didn't find anything helpful.
>>
>> Note that I didn't include gres.conf in my original post. That would
>> be this:
>>
>> NodeName=titan-[3-15] Name=gpu File=/dev/nvidia[0-7]
>> NodeName=dgx-2 Name=gpu File=/dev/nvidia[0-6]
>> NodeName=dgx-[3-6] Name=gpu File=/dev/nvidia[0-7]
>>
>> Everything is working now, but some schedmd comment alerted me to this
>> highly useful command:
>>
>> # nvidia-smi topo -m
>>
>> Now I'm wondering if I should be expressing CPU affinity explicitly in
>> the gres.conf file.
>>
>>
>> On 8/24/23 11:24, Timony, Mick wrote:
>>> Hi Patrick,
>>>
>>> You may want to review the release notes for 19.05 and any
>>> intermediate versions:
>>>
>>> https://github.com/SchedMD/slurm/blob/slurm-19-05-5-1/RELEASE_NOTES <https://github.com/SchedMD/slurm/blob/slurm-19-05-5-1/RELEASE_NOTES>
>>>
>>> https://github.com/SchedMD/slurm/blob/slurm-18-08-9-1/RELEASE_NOTES <https://github.com/SchedMD/slurm/blob/slurm-18-08-9-1/RELEASE_NOTES>
>>>
>>> I'd also check the |slurmd.log| on the compute nodes. It's usually
>>> in |/var/log/slurm/slurmd.log|
>>>
>>> I'm not 100% sure your gres.conf is correct, we use one gres.conf for
>>> all our nodes, it looks something like this:
>>>
>>> |NodeName=gpu-[1,2] Name=gpu Type=teslaM40 File=/dev/nvidia[0-3]|
>>> |NodeName=gpu-[3,6] Name=gpu Type=teslaK80 File=/dev/nvidia[0-7]|
>>> |NodeName=gpu-[7-9] Name=gpu Type=teslaV100 File=/dev/nvidia[0-3]|
>>>
>>> SchedMd docs example is a little different as they have a unique
>>> gres.conf by node in their example at:
>>>
>>> https://github.com/SchedMD/slurm/blob/slurm-19-05-5-1/doc/man/man5/gres.conf.5 <https://github.com/SchedMD/slurm/blob/slurm-19-05-5-1/doc/man/man5/gres.conf.5>
>>>
>>> |Name=gpu Type=gtx560 File=/dev/nvidia0 COREs=0,1|
>>>
>>> I don't see |Name| in your |gres.conf|?
>>>
>>> Kind regards
>>>
>>> --
>>> Mick Timony
>>> Senior DevOps Engineer
>>> Harvard Medical School
>>> --
>>>
>>> ------------------------------------------------------------------------
>>> *From:* slurm-users <slurm-users-bounces at lists.schedmd.com> on behalf
>>> of Patrick Goetz <pgoetz at math.utexas.edu>
>>> *Sent:* Thursday, August 24, 2023 11:27 AM
>>> *To:* Slurm User Community List <slurm-users at lists.schedmd.com>
>>> *Subject:* [slurm-users] Nodes stay drained no matter what I do
>>>
>>> Master/Nodes: Ubuntu 20.04, Slurm 19.05.5 (as packaged by Debian)
>>>
>>> This is an upgrade from a working Ubuntu 18.04/Slurm 17.x system where I
>>> re-used the original slurm.conf (fearing this might cause issues). The
>>> hardware is the same. The Master and nodes all use the same slurm.conf,
>>> gres.conf, and cgroup.conf files which are soft linked into
>>> /etc/slurm-llnl from an NFS mounted filesystem.
>>>
>>> As per the subject, the nodes refuse to revert to idle:
>>>
>>> -----------------------------------------------------------
>>> root at hypnotoad:~# sinfo -N -l
>>> Thu Aug 24 10:01:20 2023
>>> NODELIST NODES PARTITION STATE CPUS S:C:T MEMORY TMP_DISK
>>> WEIGHT AVAIL_FE REASON
>>> dgx-2 1 dgx drained 80 80:1:1 500000 0
>>> 1 (null) gres/gpu count repor
>>> dgx-3 1 dgx drained 80 80:1:1 500000 0
>>> 1 (null) gres/gpu count repor
>>> dgx-4 1 dgx drained 80 80:1:1 500000 0
>>> 1 (null) gres/gpu count
>>> ...
>>> titan-3 1 titans* drained 40 40:1:1 250000 0
>>> 1 (null) gres/gpu count report
>>> ...
>>> -----------------------------------------------------------
>>>
>>> Neither of these commands has any effect:
>>>
>>> scontrol update NodeName=dgx-[2-6] State=RESUME
>>> scontrol update state=idle nodename=dgx-[2-6]
>>>
>>>
>>> When I check the slurmctld log I find this helpful information:
>>>
>>> -----------------------------------------------------------
>>> ...
>>> [2023-08-24T00:00:00.033] error: _slurm_rpc_node_registration
>>> node=dgx-4: Invalid argument
>>> [2023-08-24T00:00:00.037] error: _slurm_rpc_node_registration
>>> node=dgx-2: Invalid argument
>>> [2023-08-24T00:00:00.216] error: _slurm_rpc_node_registration
>>> node=titan-12: Invalid argument
>>> [2023-08-24T00:00:00.216] error: _slurm_rpc_node_registration
>>> node=titan-11: Invalid argument
>>> [2023-08-24T00:00:00.266] error: _slurm_rpc_node_registration
>>> node=dgx-6: Invalid argument
>>> ...
>>> -----------------------------------------------------------
>>>
>>> Googling, this appears to indicate that there is a resource mismatch
>>> between the actual hardware and what is specified in slurm.conf. Note
>>> that the existing configuration worked for Slurm 17, but I checked, and
>>> it looks fine to me:
>>>
>>> Relevant parts of slurm.conf:
>>>
>>> -----------------------------------------------------------
>>> SchedulerType=sched/backfill
>>> SelectType=select/cons_res
>>> SelectTypeParameters=CR_Core_Memory
>>>
>>> PartitionName=titans Default=YES Nodes=titan-[3-15] State=UP
>>> MaxTime=UNLIMITED
>>> PartitionName=dgx Nodes=dgx-[2-6] State=UP MaxTime=UNLIMITED
>>>
>>> GresTypes=gpu
>>> NodeName=titan-[3-15] Gres=gpu:titanv:8 RealMemory=250000 CPUs=40
>>> NodeName=dgx-2 Gres=gpu:tesla-v100:7 RealMemory=500000 CPUs=80
>>> NodeName=dgx-[3-6] Gres=gpu:tesla-v100:8 RealMemory=500000 CPUs=80
>>> -----------------------------------------------------------
>>>
>>> All the nodes in the titan partition are identical hardware, as are the
>>> nodes in the dgx partition save for dgx-2, which lost a GPU and is no
>>> longer under warranty. So, using a couple of representative nodes:
>>>
>>> root at dgx-4:~# slurmd -C
>>> NodeName=dgx-4 CPUs=80 Boards=1 SocketsPerBoard=2 CoresPerSocket=20
>>> ThreadsPerCore=2 RealMemory=515846
>>>
>>> root at titan-8:~# slurmd -C
>>> NodeName=titan-8 CPUs=40 Boards=1 SocketsPerBoard=2 CoresPerSocket=10
>>> ThreadsPerCore=2 RealMemory=257811
>>>
>>>
>>> I'm at a loss for how to debug this and am looking suggestions. Since
>>> the resources on these machines are strictly dedicated to Slurm jobs,
>>> would it be best to use the output of `slurmd -C` directly for the right
>>> hand side of NodeName, reducing the memory a bit for OS overhead? Is
>>> there any way to get better debugging output? "Invalid argument" doesn't
>>> tell me much.
>>>
>>> Thanks.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> This message is from an external sender. Learn more about why this
>>> matters.
>>> <https://ut.service-now.com/sp?id=kb_article&number=KB0011401>
>>>
>>>
>>
>
>>> This message is from an external sender. Learn more about why this <<
>>> matters at https://links.utexas.edu/rtyclf. <<
More information about the slurm-users
mailing list