Install build tools & dependencies; EPEL required for munge-devel:
# yum -y groupinstall "Development Tools" # yum -y install epel-release # yum -y install gtk2-devel hwloc-devel libibmad-devel libibumad-devel lz4-devel mariadb-devel munge-devel ncurses-devel numactl-devel openssl-devel pam-devel perl-ExtUtils-MakeMaker readline-devel rrdtool-devel
BLCR (optional manual dependency):
# yum -y install glibc-devel.i686 kernel-devel-`uname -r` libgcc.i686 # wget https://upc-bugs.lbl.gov/blcr-dist/blcr-0.8.6_b4.tar.gz # tar zxvf blcr-0.8.6_b4.tar.gz
You may see what changes are needed in this GitHub commit. (Ah yes… You may actually clone / download ZIP and build from there. One more copy of the diff is backed up at this paste.)
After patching acinclude.m4, prepare build environment by running autogen.sh:
# ./autogen.sh # ./configure # make rpms
Upon successful build, you’ll have RPMs at rpm/RPMS/x86_64; install all RPMs before we go on to test it:
# modprobe blcr_imports # modprobe blcr # /usr/libexec/blcr-testsuite/RUN_ME
You have successfully installed BLCR once all tests pass.
The kernel modules for blcr shall load automatically by its init script.
Build SLURM from tar ball:
Download latest tar ball from official web site:
# wget https://www.schedmd.com/downloads/latest/slurm-17.02.3.tar.bz2 # rpmbuild -ta slurm-17.02.3.tar.bz2 # cd rpmbuild/RPMS/x86_64/
- slurm-sjobexit (only prior to version 17.02)
- slurm-sjstat (only prior to version 17.02)
See RPMS INSTALLED section for more details.
Generate slurm.conf using web configurator.
Note StateSaveLocation defaults to /var/spool; this is not ideal since user slurm needs to write to the directory. I personally use /var/spool/slurmctld
For details:man slurm.conf
And a few manual steps before you have a working Slurm installation:
- Populate /etc/munge/munge.key on all nodes, enable and start service; key should be owned by munge:munge, mode 0600
- Disable or open necessary ports (6817-18) on firewalld
- CgroupAutomount=yes in /etc/slurm/cgroup.conf
- Enable and start services for slurmctld & slurmd
Basic slurm.conf example:
ControlMachine=head AuthType=auth/munge CryptoType=crypto/munge MpiDefault=none ProctrackType=proctrack/cgroup ReturnToService=1 SlurmctldPidFile=/var/run/slurmctld.pid SlurmctldPort=6817 SlurmdPidFile=/var/run/slurmd.pid SlurmdPort=6818 SlurmdSpoolDir=/var/spool/slurmd SlurmUser=slurm StateSaveLocation=/var/spool/slurmctld SwitchType=switch/none TaskPlugin=task/cgroup InactiveLimit=0 KillWait=30 MinJobAge=300 SlurmctldTimeout=120 SlurmdTimeout=300 Waittime=0 FastSchedule=0 SchedulerType=sched/backfill SelectType=select/cons_res SelectTypeParameters=CR_Core_Memory AccountingStorageType=accounting_storage/none AccountingStoreJobComment=YES ClusterName=cluster JobCompType=jobcomp/none JobAcctGatherFrequency=30 JobAcctGatherType=jobacct_gather/linux SlurmctldDebug=3 SlurmdDebug=3 NodeName=worker[1-8] Sockets=4 CoresPerSocket=1 ThreadsPerCore=1 State=UNKNOWN PartitionName=debug Nodes=worker[1-8] Default=YES MaxTime=INFINITE State=UP
See full example of above config file as generated by configurator.html.
Build SLURM from GitHub repo (advanced / incomplete):
# git clone https://github.com/SchedMD/slurm.git
Switch to release tag:
# cd slurm # git checkout slurm-17-02-3-1
Configure for build:
# ./configure --enable-pam
You’ll have to populate some values in slurm.spec before it can be build using rpmbuild.