Hi Paul, as Slurm uses hwloc, I was looking into these tools a little bit deeper. Using your script, I saw e.g. the following output on one node:
=== 31495434 CPU_IDs=21-23,25 21-23,25 === 31495433 CPU_IDs=16-18,20 10-11,15,17 === 31487399 CPU_IDs=15 9 That does not match your schemes and on first sight seems to be more random. It seems, Slurm uses hwlocs logical indices, whereas cgroups uses the OS/physical indices. According to the example above (excerpt of the full output of hwloc-ls) NUMANode L#1 (P#1 47GB) L2 L#12 (1024KB) + L1d L#12 (32KB) + L1i L#12 (32KB) + Core L#12 + PU L#12 (P#3) L2 L#13 (1024KB) + L1d L#13 (32KB) + L1i L#13 (32KB) + Core L#13 + PU L#13 (P#4) L2 L#14 (1024KB) + L1d L#14 (32KB) + L1i L#14 (32KB) + Core L#14 + PU L#14 (P#5) L2 L#15 (1024KB) + L1d L#15 (32KB) + L1i L#15 (32KB) + Core L#15 + PU L#15 (P#9) L2 L#16 (1024KB) + L1d L#16 (32KB) + L1i L#16 (32KB) + Core L#16 + PU L#16 (P#10) L2 L#17 (1024KB) + L1d L#17 (32KB) + L1i L#17 (32KB) + Core L#17 + PU L#17 (P#11) L2 L#18 (1024KB) + L1d L#18 (32KB) + L1i L#18 (32KB) + Core L#18 + PU L#18 (P#15) L2 L#19 (1024KB) + L1d L#19 (32KB) + L1i L#19 (32KB) + Core L#19 + PU L#19 (P#16) L2 L#20 (1024KB) + L1d L#20 (32KB) + L1i L#20 (32KB) + Core L#20 + PU L#20 (P#17) L2 L#21 (1024KB) + L1d L#21 (32KB) + L1i L#21 (32KB) + Core L#21 + PU L#21 (P#21) L2 L#22 (1024KB) + L1d L#22 (32KB) + L1i L#22 (32KB) + Core L#22 + PU L#22 (P#22) L2 L#23 (1024KB) + L1d L#23 (32KB) + L1i L#23 (32KB) + Core L#23 + PU L#23 (P#23) That does seem to match. and in short, to get the mapping, one can use $> hwloc-ls --only pu ... PU L#10 (P#19) PU L#11 (P#20) PU L#12 (P#3) PU L#13 (P#4) PU L#14 (P#5) PU L#15 (P#9) PU L#16 (P#10) PU L#17 (P#11) PU L#18 (P#15) PU L#19 (P#16) PU L#20 (P#17) PU L#21 (P#21) PU L#22 (P#22) PU L#23 (P#23) ... Best Marcus Am 14.12.2022 um 18:11 schrieb Paul Raines:
Ugh. Guess I cannot count. The mapping on that last node DOES work with the "alternating" scheme where we have 0 0 1 2 2 4 3 6 4 8 5 10 6 12 7 14 8 16 9 18 10 20 11 22 12 1 13 3 14 5 15 7 16 9 17 11 18 13 19 15 20 17 21 19 22 21 23 23 so CPU_IDs=8-11,20-23 does correspond to cgroup 16-23 Using the script cd /sys/fs/cgroup/cpuset/slurm for d in $(find -name 'job*') ; do j=$(echo $d | cut -d_ -f3) echo === $j scontrol -d show job $j | grep CPU_ID | cut -d' ' -f7 cat $d/cpuset.effective_cpus done === 1967214 CPU_IDs=8-11,20-23 16-23 === 1960208 CPU_IDs=12-19 1,3,5,7,9,11,13,15 === 1966815 CPU_IDs=0 0 === 1966821 CPU_IDs=6 12 === 1966818 CPU_IDs=3 6 === 1966816 CPU_IDs=1 2 === 1966822 CPU_IDs=7 14 === 1966820 CPU_IDs=5 10 === 1966819 CPU_IDs=4 8 === 1966817 CPU_IDs=2 4 On all my nodes I see just two schemes. The alternating odd/even one above and one that is does not alternate like on this box with CPUs=32 Boards=1 SocketsPerBoard=2 CoresPerSocket=16 ThreadsPerCore=1 === 1966495 CPU_IDs=0-2 0-2 === 1966498 CPU_IDs=10-12 10-12 === 1966502 CPU_IDs=26-28 26-28 === 1960064 CPU_IDs=7-9,13-25 7-9,13-25 === 1954480 CPU_IDs=3-6 3-6 On Wed, 14 Dec 2022 9:42am, Paul Raines wrote:Yes, I see that on some of my other machines too. So apicid is definitely not what SLURM is using but somehow just lines up that way on this one machine I have. I think the issue is cgroups counts starting at 0 all the cores on the first socket, then all the cores on the second socket. But SLURM (on a two socket box) counts 0 as the first core on the first socket, 1 as the first core on the second socket, 2 as the second core on the first socket, 3 as the second core on the second socket, and so on. (Looks like I am wrong: see below) Why slurm does this instead of just using the assignments cgroups uses I have no idea. Hopefully one of the SLURM developers reads this and can explain Looking at another SLURM node I have (where cgroups v1 is still in use and HT turned off) with definition CPUs=24 Boards=1 SocketsPerBoard=2 CoresPerSocket=12 ThreadsPerCore=1 I find [root@r440-17 ~]# egrep '^(apicid|proc)' /proc/cpuinfo | tail -4 processor : 22 apicid : 22 processor : 23 apicid : 54 So apicid's are NOT going to work # scontrol -d show job 1966817 | grep CPU_ID Nodes=r17 CPU_IDs=2 Mem=16384 GRES= # cat /sys/fs/cgroup/cpuset/slurm/uid_3776056/job_1966817/cpuset.cpus 4 If Slurm has '2' this should be the second core on the first socket so should be '1' in cgroups, but it is 4 as we see above which is the fifth core on the first socket. So I guess I was wrong above. But in /proc/cpuinfo the apicid for processor 4 is 2!!! So is apicid right after all? Nope, on the same machine I have # scontrol -d show job 1960208 | grep CPU_ID Nodes=r17 CPU_IDs=12-19 Mem=51200 GRES= # cat /sys/fs/cgroup/cpuset/slurm/uid_5164679/job_1960208/cpuset.cpus 1,3,5,7,9,11,13,15 and in /proc/cpuinfo the apcid for processor 12 is 16 # scontrol -d show job 1967214 | grep CPU_ID Nodes=r17 CPU_IDs=8-11,20-23 Mem=51200 GRES= # cat /sys/fs/cgroup/cpuset/slurm/uid_5164679/job_1967214/cpuset.cpus 16-23 I am totally lost now. Seems totally random. SLURM devs? Any insight? -- Paul Raines (http://help.nmr.mgh.harvard.edu) On Wed, 14 Dec 2022 1:33am, Marcus Wagner wrote:Hi Paul, sorry to say, but that has to be some coincidence on your system. I've never seen Slurm reporting using corenumbers, which are higher than the total number of cores. I have e.g. a intel Platinum 8160 here. 24 Cores per Socket, no HyperThreading activated. Yet here the last lines of /proc/cpuinfo: processor : 43 apicid : 114 processor : 44 apicid : 116 processor : 45 apicid : 118 processor : 46 apicid : 120 processor : 47 apicid : 122 Never seen Slurm reporting corenumbers for a job > 96 Nonetheless, I agree, the cores reported by Slurm mostly have nothing to do with the cores reported e.g. by cgroups. Since Slurm creates the cgroups, I wonder, why they report some kind of abstract coreid, because they should know, which cores are used, as they create the cgroups for the jobs. Best Marcus Am 13.12.2022 um 16:39 schrieb Paul Raines:Yes, looks like SLURM is using the apicid that is in /proc/cpuinfo The first 14 cpus in /proc/cpu (procs 0-13) have apicid 0,2,4,6,8,10,12,14,16,20,22,24,26,28 in /proc/cpuinfo So after setting CpuSpecList=0,2,4,6,8,10,12,14,16,18,20,22,24,26 in slurm.conf it appears to be doing what I want $ echo $SLURM_JOB_ID 9 $ grep -i ^cpu /proc/self/status Cpus_allowed: 000f0000,000f0000 Cpus_allowed_list: 16-19,48-51 $ scontrol -d show job 9 | grep CPU_ID Nodes=larkin CPU_IDs=32-39 Mem=25600 GRES= apcid=32 is processor=16 and apcid=33 is processor=48 in /proc/cpuinfo Thanks -- Paul Raines (http://help.nmr.mgh.harvard.edu) On Tue, 13 Dec 2022 9:52am, Sean Maxwell wrote:External Email - Use Caution In the slurm.conf manual they state the CpuSpecList ids are "abstract", and in the CPU management docs they enforce the notion that the abstract Slurm IDs are not related to the Linux hardware IDs, so that is probably the source of the behavior. I unfortunately don't have more information. On Tue, Dec 13, 2022 at 9:45 AM Paul Raines <rai...@nmr.mgh.harvard.edu> wrote:Hmm. Actually looks like confusion between CPU IDs on the system and what SLURM thinks the IDs are # scontrol -d show job 8 ... Nodes=foobar CPU_IDs=14-21 Mem=25600 GRES= ... # cat /sys/fs/cgroup/system.slice/slurmstepd.scope/job_8/cpuset.cpus.effective 7-10,39-42 -- Paul Raines (http://secure-web.cisco.com/1w33sdTB1gUzmmNOl1cd8t7VHLUOemWW6ExRIq2AHSLm0BwRxhnfCCHDdln0LWn7IZ3IUYdxeX2HzyDj7CeKHq7B1H5ek2tow-D_4Q81mK8_x_AKf6cHYOSqHSBelLikTijDZJGsJYKSleSUlZMG1mqkU4e4TirhUu0qTLKUcvqLxsvi1WCbBbyUaDUxd-c7kE2_v4XzvhBtdEqrkKAWOQF2WoJwhmTJlMhanBk-PdjHDsuDcdOgfHrmIAiRC-T8hB094Y1WvEuOjL4o2Kbx28qp4eUSPu8jSOxPEKoWsHpSDE7fWyjrlcVAsEyOpPgp4/http%3A%2F%2Fhelp.nmr.mgh.harvard.edu) On Tue, 13 Dec 2022 9:40am, Paul Raines wrote: > > Oh but that does explain the CfgTRES=cpu=14. With the CpuSpecList > below and SlurmdOffSpec I do get CfgTRES=cpu=50 so that makes sense. > > The issue remains that thought the number of cpus in CpuSpecList > is taken into account, the exact IDs seem to be ignored. > > > -- Paul Raines > (http://secure-web.cisco.com/1w33sdTB1gUzmmNOl1cd8t7VHLUOemWW6ExRIq2AHSLm0BwRxhnfCCHDdln0LWn7IZ3IUYdxeX2HzyDj7CeKHq7B1H5ek2tow-D_4Q81mK8_x_AKf6cHYOSqHSBelLikTijDZJGsJYKSleSUlZMG1mqkU4e4TirhUu0qTLKUcvqLxsvi1WCbBbyUaDUxd-c7kE2_v4XzvhBtdEqrkKAWOQF2WoJwhmTJlMhanBk-PdjHDsuDcdOgfHrmIAiRC-T8hB094Y1WvEuOjL4o2Kbx28qp4eUSPu8jSOxPEKoWsHpSDE7fWyjrlcVAsEyOpPgp4/http%3A%2F%2Fhelp.nmr.mgh.harvard.edu) > > > > On Tue, 13 Dec 2022 9:34am, Paul Raines wrote: > >> >> I have tried it both ways with the same result. The assigned CPUs >> will be both in and out of the range given to CpuSpecList >> >> I tried setting using commas instead of ranges so used >> >> CpuSpecList=0,1,2,3,4,5,6,7,8,9,10,11,12,13 >> >> But still does not work >> >> $ srun -p basic -N 1 --ntasks-per-node=1 --mem=25G \ >> --time=10:00:00 --cpus-per-task=8 --pty /bin/bash >> $ grep -i ^cpu /proc/self/status >> Cpus_allowed: 00000780,00000780 >> Cpus_allowed_list: 7-10,39-42 >> >> >> -- Paul Raines >> (http://secure-web.cisco.com/1w33sdTB1gUzmmNOl1cd8t7VHLUOemWW6ExRIq2AHSLm0BwRxhnfCCHDdln0LWn7IZ3IUYdxeX2HzyDj7CeKHq7B1H5ek2tow-D_4Q81mK8_x_AKf6cHYOSqHSBelLikTijDZJGsJYKSleSUlZMG1mqkU4e4TirhUu0qTLKUcvqLxsvi1WCbBbyUaDUxd-c7kE2_v4XzvhBtdEqrkKAWOQF2WoJwhmTJlMhanBk-PdjHDsuDcdOgfHrmIAiRC-T8hB094Y1WvEuOjL4o2Kbx28qp4eUSPu8jSOxPEKoWsHpSDE7fWyjrlcVAsEyOpPgp4/http%3A%2F%2Fhelp.nmr.mgh.harvard.edu) >> >> >> >> On Mon, 12 Dec 2022 10:21am, Sean Maxwell wrote: >> >>> Hi Paul, >>> >>> Nodename=foobar \ >>>> CPUs=64 Boards=1 SocketsPerBoard=2 CoresPerSocket=16 >>>> ThreadsPerCore=2 >>>> \ >>>> RealMemory=256312 MemSpecLimit=32768 CpuSpecList=14-63 \ >>>> TmpDisk=6000000 Gres=gpu:nvidia_rtx_a6000:1 >>>> >>>> The slurm.conf also has: >>>> >>>> ProctrackType=proctrack/cgroup >>>> TaskPlugin=task/affinity,task/cgroup >>>> TaskPluginParam=Cores,*SlurmdOf**fSpec*,Verbose >>>> >>> >>> Doesn't setting SlurmdOffSpec tell Slurmd that is should NOT use >>> the >>> CPUs >>> in the spec list? ( >>> >>> https://secure-web.cisco.com/1V9Fskh4lCAx_XrdlCr8o1EtnePELf-1YK4TerT47ktLxy3fO9FaIpaGXVA8ODhMAdhmXSqToQstwAilA71r7z1Q4jDqPSKEsJQNUhJYYRtxFnZIO49QxsYrVo9c3ExH89cIk_t7H5dtGEjpme2LFKm23Z52yK-xZ3fEl_LyK61uCzkas6GKykzPCPyoNXaFgs32Ct2tDIVL8vI6JW1_-1uQ9gUyWmm24xJoBxLEui7tSTVwMtiVRu8C7pU1nJ8qr6ghBlxrqx-wQiRP4XBCjhPARHa2KBqkUogjEVRAe3WdAbbYBxtXeVsWjqNGmjSVA/https%3A%2F%2Fslurm.schedmd.com%2Fslurm.conf.html%23OPT_SlurmdOffSpec) >>> In this case, I believe it uses what is left, which is the 0-13. >>> We are >>> just starting to work on this ourselves, and were looking at >>> this >>> setting. >>> >>> Best, >>> >>> -Sean >>> >> > The information in this e-mail is intended only for the person to whom it is addressed. If you believe this e-mail was sent to you in error and the e-mail contains patient information, please contact the Mass General Brigham Compliance HelpLine at https://secure-web.cisco.com/11OmVChs0jRoe-4AH2iRxvEdMN0dxZcFsunG07PJ0sXxdW7tj7-BUiDwEEi3gkqOms_qFRdQbCLHJQW0jD6cG8-griFmte8mXIoPZSDzIE8dHcew9yMCpQxJnYVVs8mK5aB-9o4ospPlPqxo3FA0LN8gpJSrsBKOxr5m7T3Jd7FY04zJnehrYc0FQwfWAPJx523fZTqVTTmwZgdEFZAQtURZ8hPxlohSzsh7d13L7byOVUmxAxzolzDTvRSH9l1gjMm-RjtdW95eYkgPlRoM3nJ0WCledYAp5NA3kUGNhsc5uNDp3lWIzS7gZGIMfTyg9/https%3A%2F%2Fwww.massgeneralbrigham.org%2Fcomplianceline < https://secure-web.cisco.com/11OmVChs0jRoe-4AH2iRxvEdMN0dxZcFsunG07PJ0sXxdW7tj7-BUiDwEEi3gkqOms_qFRdQbCLHJQW0jD6cG8-griFmte8mXIoPZSDzIE8dHcew9yMCpQxJnYVVs8mK5aB-9o4ospPlPqxo3FA0LN8gpJSrsBKOxr5m7T3Jd7FY04zJnehrYc0FQwfWAPJx523fZTqVTTmwZgdEFZAQtURZ8hPxlohSzsh7d13L7byOVUmxAxzolzDTvRSH9l1gjMm-RjtdW95eYkgPlRoM3nJ0WCledYAp5NA3kUGNhsc5uNDp3lWIzS7gZGIMfTyg9/https%3A%2F%2Fwww.massgeneralbrigham.org%2Fcomplianceline> . Please note that this e-mail is not secure (encrypted). If you do not wish to continue communication over unencrypted e-mail, please notify the sender of this message immediately. Continuing to send or respond to e-mail after receiving this message means you understand and accept this risk and wish to continue to communicate over unencrypted e-mail.The information in this e-mail is intended only for the person to whom it is addressed. If you believe this e-mail was sent to you in error and the e-mail contains patient information, please contact the Mass General Brigham Compliance HelpLine at https://www.massgeneralbrigham.org/complianceline <https://www.massgeneralbrigham.org/complianceline> . Please note that this e-mail is not secure (encrypted). If you do not wish to continue communication over unencrypted e-mail, please notify the sender of this message immediately. Continuing to send or respond to e-mail after receiving this message means you understand and accept this risk and wish to continue to communicate over unencrypted e-mail.-- Dipl.-Inf. Marcus Wagner IT Center Gruppe: Server, Storage, HPC Abteilung: Systeme und Betrieb RWTH Aachen University Seffenter Weg 23 52074 Aachen Tel: +49 241 80-24383 Fax: +49 241 80-624383 wag...@itc.rwth-aachen.de www.itc.rwth-aachen.de Social Media Kanäle des IT Centers: https://blog.rwth-aachen.de/itc/ https://www.facebook.com/itcenterrwth https://www.linkedin.com/company/itcenterrwth https://twitter.com/ITCenterRWTH https://www.youtube.com/channel/UCKKDJJukeRwO0LP-ac8x8rQThe information in this e-mail is intended only for the person to whom it is addressed. If you believe this e-mail was sent to you in error and the e-mail contains patient information, please contact the Mass General Brigham Compliance HelpLine at https://www.massgeneralbrigham.org/complianceline <https://www.massgeneralbrigham.org/complianceline> . Please note that this e-mail is not secure (encrypted). If you do not wish to continue communication over unencrypted e-mail, please notify the sender of this message immediately. Continuing to send or respond to e-mail after receiving this message means you understand and accept this risk and wish to continue to communicate over unencrypted e-mail.
-- Dipl.-Inf. Marcus Wagner IT Center Gruppe: Server, Storage, HPC Abteilung: Systeme und Betrieb RWTH Aachen University Seffenter Weg 23 52074 Aachen Tel: +49 241 80-24383 Fax: +49 241 80-624383 wag...@itc.rwth-aachen.de www.itc.rwth-aachen.de Social Media Kanäle des IT Centers: https://blog.rwth-aachen.de/itc/ https://www.facebook.com/itcenterrwth https://www.linkedin.com/company/itcenterrwth https://twitter.com/ITCenterRWTH https://www.youtube.com/channel/UCKKDJJukeRwO0LP-ac8x8rQ
smime.p7s
Description: S/MIME Cryptographic Signature