[slurm-users] Hyperthreading and billing according to physical cores

bill broadley bill at broadley.org
Mon Jun 20 23:19:52 UTC 2022

 From what I can tell billing reports threads used, it does seem somewhat broken.

For instance on a 64c/128T node with hyperthreading enabled:

$ sbatch -A csc000 -t 12 -p debug -N 1 -n 64 --hint=nomultithread 
--ntasks-per-core=1 --mem=2000 --exclusive ./sleep.sh
Submitted batch job 623871
$ sbatch -A csc000 -t 12 -p debug -N 1 -n 128 --hint=multithread 
--ntasks-per-core=2 --mem=2000 --exclusive ./sleep.sh
Submitted batch job 624841
$ sacct -j 623871,624841  -o jobid,reqtres%40 | egrep -v "batch|exte"
JobID                                         ReqTRES
------------ ----------------------------------------
623871             billing=64,cpu=64,mem=2000M,node=1
624841           billing=128,cpu=128,mem=2000M,node=1

In both cases I'm using 100% of the CPUs on the node.  Yet in the first case I'm 
billed half as much.

I did verify that multiple of the first job would never schedule two jobs on the 
same node, even without --exclusive.

My node config:

NodeName=c1-[28-47,56-79] procs=128 RealMemory=256000 sockets=2 
CoresPerSocket=32 ThreadsPerCore=2 State=UNKNOWN

Has anyone got the billing to report an accurate number when running a mix of 
jobs that use 1 task per core and 2 tasks per core?  Do you just ignore the 
billing field?

More information about the slurm-users mailing list