Ticket 2349

Summary: FrontEndMode: srun and sbatch issues
Product: Slurm Reporter: Sreedhar <sreedharnyu>
Component: ConfigurationAssignee: Moe Jette <jette>
Status: RESOLVED INFOGIVEN QA Contact:
Severity: 4 - Minor Issue    
Priority: ---    
Version: 15.08.2   
Hardware: Linux   
OS: Linux   
Site: PDT (PSLA) Slinky Site: ---
Alineos Sites: --- Atos/Eviden Sites: ---
Confidential Site: --- Coreweave sites: ---
Cray Sites: --- DS9 clusters: ---
Google sites: --- HPCnow Sites: ---
HPE Sites: --- IBM Sites: ---
NOAA SIte: --- NoveTech Sites: ---
Nvidia HWinf-CS Sites: --- OCF Sites: ---
Recursion Pharma Sites: --- SFW Sites: ---
SNIC sites: --- Tzag Elita Sites: ---
Linux Distro: --- Machine Name:
CLE Version: Version Fixed:
Target Release: --- DevPrio: ---
Emory-Cloud Sites: ---

Description Sreedhar 2016-01-14 06:46:33 MST
Hi,

My name is Sreedhar and I work for PDT. As we talked to you earlier, we're in the process of evaluating slurm for our new future grid.

I have installed slurm on 3 nodes and things seem to be fine except when I submit jobs as a user I'm seeing errors like shown below. I couldn't find anything solid on the web that would fix it. So far, only thing that seems to be the solution is to reconfigure slurm without --enable-front-end.

Here are the details:

This is how I configured it:

 ./configure --prefix=/opt/slurm  --enable-pam  --enable-load-env-no-login  --enable-front-end --enable-salloc-kill-cmd --enable-simulator  --enable-multiple-slurmd  --enable-debug --enable-glibtest=no --enable-gtktest=no  | tee config.log

make | tee make.log

make install | tee install.log

This is what I have in my slurm.conf

$ cat /opt/slurm/etc/slurm.conf
#
# Example slurm.conf file. Please run configurator.html
# (in doc/html) to build a configuration file customized
# for your environment.
#
#
# slurm.conf file generated by configurator.html.
#
# See the slurm.conf man page for more information.
#
ClusterName=linux
ControlMachine=caslurmdev1
ControlAddr=10.250.17.76
FrontEndName=caslurmdev1
#BackupController=
#BackupAddr=
#
SlurmUser=slurm
#SlurmdUser=root
SlurmctldPort=6817
SlurmdPort=6818
AuthType=auth/munge
#JobCredentialPrivateKey=
#JobCredentialPublicCertificate=
StateSaveLocation=/tmp
SlurmdSpoolDir=/var/spool/slurm/slurmd
#SlurmdSpoolDir=/tmp/slurmd
SwitchType=switch/none
MpiDefault=none
SlurmctldPidFile=/var/run/slurmctld.pid
SlurmdPidFile=/var/run/slurmd.pid
ProctrackType=proctrack/pgid
#PluginDir=
CacheGroups=0
#FirstJobId=
ReturnToService=0
#MaxJobCount=
#PlugStackConfig=
#PropagatePrioProcess=
#PropagateResourceLimits=
#PropagateResourceLimitsExcept=
#Prolog=
#Epilog=
#SrunProlog=
#SrunEpilog=
#TaskProlog=
#TaskEpilog=
#TaskPlugin=
#TrackWCKey=no
#TreeWidth=50
#TmpFS=
#UsePAM=
#
# TIMERS
SlurmctldTimeout=300
SlurmdTimeout=300
InactiveLimit=0
MinJobAge=300
KillWait=30
Waittime=0
#
# SCHEDULING
SchedulerType=sched/backfill
#SchedulerAuth=
#SchedulerPort=
#SchedulerRootFilter=
SelectType=select/linear
FastSchedule=1
#PriorityType=priority/multifactor
#PriorityDecayHalfLife=14-0
#PriorityUsageResetPeriod=14-0
#PriorityWeightFairshare=100000
#PriorityWeightAge=1000
#PriorityWeightPartition=10000
#PriorityWeightJobSize=1000
#PriorityMaxAge=1-0
#
# LOGGING
SlurmctldDebug=3
#SlurmctldLogFile=
SlurmdDebug=3
#SlurmdLogFile=
#JobCompType=jobcomp/none
JobCompType=jobcomp/filetxt
#JobCompLoc=
JobCompLoc=/tmp/slurm_job_completion.txt
#
# ACCOUNTING
JobAcctGatherType=jobacct_gather/linux
JobAcctGatherFrequency=30
#
AccountingStorageEnforce=limits,qos
AccountingStorageType=accounting_storage/slurmdbd
AccountingStorageHost=caslurmdev1
AccountingStorageLoc=/tmp/slurm_job_accounting.txt
#AccountingStoragePass=
#AccountingStorageUser=
#
# COMPUTE NODES
#NodeName=linux[1-32] Procs=1 State=UNKNOWN
NodeName=caslurmdev[2-3] Procs=4 ThreadsPerCore=1 Sockets=1 CoresPerSocket=4 RealMemory=7816 State=UNKNOWN
#PartitionName=debug Nodes=linux[1-32] Default=YES MaxTime=INFINITE State=UP
PartitionName=production Nodes=caslurmdev[2-3] Default=YES

-------------------------------------------------

Now as a user sreedhar, I'm trying to submit this job from the front end:

sreedhar@-------:~/jobs$ cat submit1.sh
#!/bin/bash
#
#SBATCH --job-name=test1
#SBATCH --output=res1.txt
#
#SBATCH --ntasks=1
#SBATCH --time=10:00
#SBATCH --mem-per-cpu=100

srun hostname
srun sleep 60

sreedhar@caslurmdev1:~/jobs$ sbatch submit1.sh
Submitted batch job 46
sreedhar@caslurmdev1:~/jobs$ squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
sreedhar@caslurmdev1:~/jobs$ cat res1.txt
srun: error: Unable to create job step: Job steps can not be run on this cluster
srun: error: Unable to create job step: Job steps can not be run on this cluster
sreedhar@caslurmdev1:~/jobs$


--------------------------------------

sreedhar@-----:~/jobs$ srun -n 1 hostname
srun: error: srun task launch not supported on this system

---------------------------------

can you please advise what needs to be changed here to get jobs running from regular user? Without srun in the job script, it works but hostname always reports frontend fqdn even though squeue shows job is running on compute nodes.

I would appreciate your help.

thanks,
Sreedhar.
Comment 1 Tim Wickberg 2016-01-14 07:15:15 MST
FrontEnd is meant for system like IBM BlueGene or Cray where jobs need some special handling to launch on the system itself, you should not use that here.

Systems with a frontend always launch all tasks on one of the frontend nodes - thus you're seeing your frontend's hostname in your jobs. The resources on those requested nodes are being reserved (thus sinfo / squeue display that list) but your job would need to know to connect out from the frontend.

I'd recommend rebuilding with much fewer options, this should give you a fully functional build:

./configure --prefix=/opt/slurm

A lot of the options you'd enabled are for specialized hardware platforms or development, and don't apply to your config.

I'd also recommend downloading 15.08.6 - there are a few important fixes in there you'll want. 15.08.7 is due out within the next few weeks and will have some moderate-severity fixes as well.

For your config, please remove FrontendNode entirely, and I'd also suggest setting SelectType=select/cons_res and SelectTypeParameters=CR_Core_Mem if you want to allocate specific amounts of memory and cpu cores within nodes to each job. (select/linear will always allocate entire nodes at a time.)

If you're using slurmdbd (which we highly recommend) that will have a record of all jobs - JobCompType=jobcomp/filetxt will produce information that you'd already have using the `sacct` tool, so I'd suggest removing that as well.

- Tim
Comment 2 Sreedhar 2016-01-14 07:24:20 MST
Hi Tim,

Thank you for your prompt response. I found a thread which said the same thing. Now, it's all clear that I will have to recompile. I am used to torque/Moab and had to use multiple configure options for what I wanted. Especially, pam option to make sure users don't get onto nodes if they don't have jobs running.

Right now, at the beginning of the testing it won't matter much but we will definitely need pam support.  From the configure options I couldn't find whether it is enabled by default.

Either way, I will do what you suggested.

Thank you again,
Best,
Sreedhar.
Comment 3 Tim Wickberg 2016-01-14 07:33:59 MST
On 01/14/2016 04:24 PM, bugs@schedmd.com wrote:
> Right now, at the beginning of the testing it won't matter much but we will
> definitely need pam support.  From the configure options I couldn't find
> whether it is enabled by default.
>
> Either way, I will do what you suggested.
>

You'll need to install the pam_slurm.so module manually, the installer 
doesn't try to automatically load it into your pam stack.

See contribs/pam/README has notes on how to set it up. Please note that 
if you manually install the pam_slurm.so file into /usr/lib you'll want 
to make sure to update this on each major release.

There's a new feature called pam_slurm_adopt that was built by Ryan Cox 
at BYU which works with cgroups (you'll need TaskPlugin=cgroup setup and 
working as well, http://slurm.schedmd.com/cgroup.conf.html) to constrain 
incoming user SSH sessions into the appropriate cgroup. There are some 
notes as to how to set this up in contribs/pam_slurm_adopt.
Comment 4 Sreedhar 2016-01-14 13:32:41 MST
Hi,

I have recompiled and I am seeing this error. Ports are open and they're able to talk. Is there anything else I can do here? 

Thanks,
Sreedhar.

root@caslurmdev1:/u/sreedhar/jobs$ sinfo -N -l
Thu Jan 14 18:41:01 2016
NODELIST     NODES   PARTITION       STATE CPUS    S:C:T MEMORY TMP_DISK WEIGHT FEATURES REASON
caslurmdev1      1 production*        idle    4    1:4:1   7816        0      1   (null) none
caslurmdev2      1 production*        down    4    1:4:1   7816        0      1   (null) Not responding


root@caslurmdev1:/u/sreedhar/jobs$ scontrol show node caslurmdev2
NodeName=caslurmdev2 Arch=x86_64 CoresPerSocket=4
   CPUAlloc=0 CPUErr=0 CPUTot=4 CPULoad=0.01 Features=(null)
   Gres=(null)
   NodeAddr=caslurmdev2 NodeHostName=caslurmdev2 Version=15.08
   OS=Linux RealMemory=7816 AllocMem=0 FreeMem=5692 Sockets=1 Boards=1
   State=DOWN ThreadsPerCore=1 TmpDisk=0 Weight=1 Owner=N/A
   BootTime=2015-10-30T15:47:22 SlurmdStartTime=2016-01-14T18:34:17
   CapWatts=n/a
   CurrentWatts=0 LowestJoules=0 ConsumedJoules=0
   ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s
   Reason=Not responding [slurm@2016-01-14T17:20:50]


caslurmdev2:~/slurm-15.08.6# scontrol show slurmd
Active Steps             = NONE
Actual CPUs              = 4
Actual Boards            = 1
Actual sockets           = 1
Actual cores             = 4
Actual threads per core  = 1
Actual real memory       = 7816 MB
Actual temp disk space   = 116675 MB
Boot time                = 2016-01-14T18:34:17
Hostname                 = caslurmdev2
Last slurmctld msg time  = 2016-01-14T18:37:56
Slurmd PID               = 33008
Slurmd Debug             = 6
Slurmd Logfile           = /var/log/slurm/slurmd.log
Version                  = 15.08.6
Comment 5 Moe Jette 2016-01-14 13:49:31 MST
Check slurm daemon log files 

On January 14, 2016 7:32:41 PM PST, bugs@schedmd.com wrote:
>http://bugs.schedmd.com/show_bug.cgi?id=2349
>
>--- Comment #4 from Sreedhar <sreedharnyu@gmail.com> ---
>Hi,
>
>I have recompiled and I am seeing this error. Ports are open and
>they're able
>to talk. Is there anything else I can do here? 
>
>Thanks,
>Sreedhar.
>
>root@caslurmdev1:/u/sreedhar/jobs$ sinfo -N -l
>Thu Jan 14 18:41:01 2016
>NODELIST     NODES   PARTITION       STATE CPUS    S:C:T MEMORY
>TMP_DISK WEIGHT
>FEATURES REASON
>caslurmdev1      1 production*        idle    4    1:4:1   7816       
>0      1
>  (null) none
>caslurmdev2      1 production*        down    4    1:4:1   7816       
>0      1
>  (null) Not responding
>
>
>root@caslurmdev1:/u/sreedhar/jobs$ scontrol show node caslurmdev2
>NodeName=caslurmdev2 Arch=x86_64 CoresPerSocket=4
>   CPUAlloc=0 CPUErr=0 CPUTot=4 CPULoad=0.01 Features=(null)
>   Gres=(null)
>   NodeAddr=caslurmdev2 NodeHostName=caslurmdev2 Version=15.08
>   OS=Linux RealMemory=7816 AllocMem=0 FreeMem=5692 Sockets=1 Boards=1
>   State=DOWN ThreadsPerCore=1 TmpDisk=0 Weight=1 Owner=N/A
>   BootTime=2015-10-30T15:47:22 SlurmdStartTime=2016-01-14T18:34:17
>   CapWatts=n/a
>   CurrentWatts=0 LowestJoules=0 ConsumedJoules=0
>   ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s
>   Reason=Not responding [slurm@2016-01-14T17:20:50]
>
>
>caslurmdev2:~/slurm-15.08.6# scontrol show slurmd
>Active Steps             = NONE
>Actual CPUs              = 4
>Actual Boards            = 1
>Actual sockets           = 1
>Actual cores             = 4
>Actual threads per core  = 1
>Actual real memory       = 7816 MB
>Actual temp disk space   = 116675 MB
>Boot time                = 2016-01-14T18:34:17
>Hostname                 = caslurmdev2
>Last slurmctld msg time  = 2016-01-14T18:37:56
>Slurmd PID               = 33008
>Slurmd Debug             = 6
>Slurmd Logfile           = /var/log/slurm/slurmd.log
>Version                  = 15.08.6
>
>-- 
>You are receiving this mail because:
>You are watching all bug changes.
Comment 6 Sreedhar 2016-01-14 14:15:50 MST
Please ignore my previous comment. Everything is working fine now.

Thanks,
Sreedhar.
Comment 7 Moe Jette 2016-01-21 07:44:55 MST
(In reply to Sreedhar from comment #6)
> Please ignore my previous comment. Everything is working fine now.
> 
> Thanks,
> Sreedhar.