Job Management¶
The queuing system (resource manager) is the heart of the distributed computing on a cluster. It consists of three parts: the server, the scheduler, and the machine-oriented mini-server (MOM) executing the jobs.
We are assuming the following configuration:
||PBS TORQUE|| version 2.1.8 ||server, basic scheduler, mom ||[source:Externals/Cluster/torque-2.1.8.tgz download from repository]
||MAUI || version 3.2.6.p18 ||scheduler ||[source:Externals/Cluster/maui-3.2.6p18.tgz download from repository]
Please check the distributors website's for newer versions:
||PBS TORQUE ||http://www.clusterresources.com/pages/products/torque-resource-manager.php
||MAUI ||http://www.clusterresources.com/pages/products/maui-cluster-scheduler.php
The install directories for TORQUE and MAUI will be:
||PBS TORQUE ||_/var/spool/torque_
||MAUI ||_/var/spool/maui_
TORQUE¶
Register new services¶
Edit /etc/services and add at the end:
# PBS/Torque services pbs 15001/tcp # pbs_server pbs 15001/udp # pbs_server pbs_mom 15002/tcp # pbs_mom <-> pbs_server pbs_mom 15002/udp # pbs_mom <-> pbs_server pbs_resmom 15003/tcp # pbs_mom resource management pbs_resmom 15003/udp # pbs_mom resource management pbs_sched 15004/tcp # pbs scheduler (pbs_sched) pbs_sched 15004/udp # pbs scheduler (pbs_sched)
Setup and Configuration on the Master Node¶
Extract and build the distribution TORQUE on the master node. Configure server, monitor and clients to use secure file transfer (scp).
export TORQUECFG=/var/spool/torque tar -xzvf TORQUE.tar.gz cd TORQUE
Configuration for a 64bit machine with the following compiler options:
FFLAGS = "-m64 -march=[Add Architecture] -O3 -fPIC" CFLAGS = "-m64 -march=[Add Architecture] -O3 -fPIC" CXXFLAGS = "-m64 -march=[Add Architecture] -O3 -fPIC" LDFLAGS = "-L/usr/local/lib -L/usr/local/lib64"
Attention: For Intel Xenon processors use -march=nocona, for AMD Opteron processors use -march=opteron.
Configure, build, and install:
./configure --prefix=/usr/local --with-spooldir=$TORQUECFG make make install
If not configures otherwise, binaries are installed in /usr/local/bin and /usr/local/sbin.
Initialise/configure the queuing system's server daemon (pbs_server):
pbs_server -t create
Set the PBS operator and manager (must be a valid user name).
qmgr > set server_name = master01.procksi.local > set server scheduling = true > set server operators = "root@master01.procksi.local,procksi@master01.procksi.local" > set server managers = "root@master01.procksi.local,procksi@master01.procksi.local"
Allow only procksi and root to submit jobs into the queue:
> set server acl_users = "root,procksi" > set server acl_user_enable = true
Set email address for email that is sent by PBS:
> set server mail_from = pbs@procksi.net
Allow submissions from slave hosts (only):
*ATTENTION: NEEDS TO BE CHECKED. DOES NOT WORK PROPERLY YET!! *
<pre> > set server allow_node_submit = true > set server submit_hosts = master01.procksi.local slave01.procksi.local slave02.procksi.local slave03.procksi.local slave04.procksi.local </pre> Restrict nodes that can access the PBS server: <pre> > set server acl_hosts = master01.procksi.local slave01.procksi.local slave02.procksi.local slave03.procksi.local slave04.procksi.local > set acl_host_enable = true </pre> And set in _torque.cfg_ in order to use the internal interface: <pre> SERVERHOST master01.procksi.local ALLOWCOMPUTEHOSTSUBMIT true </pre>
Configure default node to be used (see below):
> set server default_node = slave
Set the default queue to batch
> set server default_queue=batch
Configure the main queue batch:
> create queue batch queue_type=execution > set queue batch started=true > set queue batch enabled=true > set queue batch resources_default.nodes=1
Configure queue test _accordingly.
Specify all compute nodes to be used by creating/editing $TORQUECFG/server_priv/nodes. This may include the same machine where pbs_server will run. If the compute nodes have more than one processor, just add np=X after the name with X being the number of processors. Add node attributes so that a subset of nodes can be requested during the submission stage.
master01.procksi.local np=2 procksi master xeon slave01.procksi.local np=2 procksi slave xeon slave02.procksi.local np=2 procksi slave xeon slave03.procksi.local np=4 procksi slave opteron slave04.procksi.local np=4 procksi slave opteron
Although the master node (master01) has two processors as well, we only allow one processor to be used for the queueing system as the other processor will be used for handling all frontend communication and I/O. (Make sure that hyperthreading technology is disabled on the head node and all compute nodes!)
Request job to be run on specific nodes (on submission):- Run on any compute node:
qsub -q batch -l nodes=1:procksi
- Run on any slave node:
qsub -q batch -l nodes=1:slave
- Run on master node:
qsub -q batch -l nodes=1:master
Setup and Configuration on the Slave Nodes¶
Extract and build the distribution TORQUE on each slave node. Configure monitor and clients to use secure file transfer (scp).
export TORQUECFG=/var/spool/torque tar -xzvf TORQUE.tar.gz cd TORQUE
Configuration for a 64bit machine with the following compiler options:
FFLAGS = "-m64 -march=[Add Architecture] -O3 -fPIC" CFLAGS = "-m64 -march=[Add Architecture] -O3 -fPIC" CXXFLAGS = "-m64 -march=[Add Architecture] -O3 -fPIC" LDFLAGS = "-L/usr/local/lib -L/usr/local/lib64"
Attention: For Intel Xenon processors use -march=nocona, for AMD Opteron processors use -march=opteron.
Configure, build, and install:
./configure --prefix=/usr/local --with-spooldir=$TORQUECFG --disable-server --enable-mom --enable-clients --with-default-server=master01.procksi.local make make install
Configure the compute nodes by creating/editing $TORQUECFG/mom_priv/config. The first line specifies the PBS server, the second line specifies hosts which can be trusted to access mom services as non-root, and the last line allows copying data via NFS without using SCP.
$pbsserver master01.procksi.local $loglevel 255 $restricted master01.procksi.local $usecp master01.procksi.local:/home/procksi /home/procksiStart the queueing system (manually) in the correct order:
- Start the mom:
/usr/local/sbin/pbs_mom
- Kill the server:
/usr/local/sbin/qterm -t quick
- Start the server:
/usr/local/sbin/pbs_server
- Start the scheduler:
/usr/local/sbin/pbs_sched
If you want to use MAUI as the final scheduler, keep in mind to kill pbs_sched after testing the TORQURE installation.
Check that all nodes are properly configured and correctly reporting
qstat -q pbsnodes -a
Prologue and Epilogue Scripts¶
Get [repos:Externals/procksi_pbs.tgz] from the repository and untar it:
untar –xvzf procksi_pbs.tgz
The prologue script is executed just before the submitted job starts. Here, it generates a unique temp directory for each job in /scratch.
It must be installed on each NODE (master, slave):
cp ./pbs/NODE/var/spool/torque/mom/priv/prologue $TORQUECFG/mom_priv chmod 500 $TORQUECFG/mom_priv/prologue
The epilogue script is executed right after the submitted job has ended. Here, it deletes the job's temp directory from /scratch. It must be installed on each NODE (master, slave)
cp ./pbs/NODE/var/spool/torque/mom/priv/epilogue $TORQUECFG/mom_priv chmod 500 $TORQUECFG/mom_priv/epilogue
MAUI¶
Register new services¶
Edit /etc/services and add at the end:
# PBS/MAUI services pbs_maui 42559/tcp # pbs scheduler (maui) pbs_maui 42559/udp # pbs scheduler (maui)
Setup and Configuration on the Head Node¶
Extract and build the distribution MAUI.
export MAUIDIR=/var/spool/maui tar -xzvf MAUI.tar.gz cd TORQUE
Configuration for a 64bit machine with the following compiler options:
FFLAGS = “-m64 -march=[Add Architecture] -O3 -fPIC" CFLAGS = “-m64 -march=[Add Architecture] -O3 -fPIC" CXXFLAGS = “-m64 -march=[Add Architecture] -O3 -fPIC" LDFLAGS = “-L/usr/local/lib -L/usr/local/lib64"
Attention: For Intel Xenon processors use -march=nocona, for AMD Opteron processors use -march=opteron.
Configure, build, and install:
./configure --with-pbs=$TORQUECFG --with-spooldir=$MAUIDIR make make install
Fine-tune MAUI in $_MAUIDIR/maui.cfg_:
SERVERHOST master01.procksi.local # primary admin must be first in list ADMIN1 procksi ADMIN1 root # Resource Manager Definition RMCFG[MASTER01.PROCKSI.LOCAL] ] TYPE=PBS@RMNHOST@ PORT=15001 EPORT=15004 [CAN BE ALTERNATIVELY: 15017 - TRY!!!] SERVERPORT 42559 SERVERMODE NORMAL # Node Allocation: # JOBCOUNT number of jobs currently running on node # LOAD current 1 minute load average # AMEM real memory currently available to batch jobs # APROCS processors currently available to batch jobs # PREF node meets job specific resource preferences NODEALLOCATIONPOLICY PRIORITY NODECFG[DEFAULT] PRIORITYF='-JOBCOUNT - 2*LOAD + 0.5*AMEM + 0.25*APROCS + PREF'
Start the MAUI scheduler manually. Make sure that pbs_sched is not running any longer.
- Start the scheduler:
/usr/local/sbin/maui
Get [repos:Externals/Cluster/procksi_pbs.tgz] from the repository and untar it:
untar –xvzf procksi_pbs.tgz
Make the entire queuing system (Torque + Maui) start at bootup:
cp ./pbs/master/etc/init.d/pbs_* /etc/init.d/ /sbin/chkconfig --add pbs_mom /sbin/chkconfig --add pbs_maui /sbin/chkconfig --add pbs_server /sbin/chkconfig pbs_mom on /sbin/chkconfig pbs_maui on /sbin/chkconfig pbs_server on
If you want to use the simple scheduler that comes with PBS Torque, then substitute pbs_maui with pbs_sched.
Setup and Configuration on the Slave Nodes¶
Get [repos:Externals/Cluster/procksi_pbs.tgz] from the repository and untar it:
untar –xvzf procksi_pbs.tgz
Make the entire queuing system start at bootup:
cp ./pbs/slave/etc/init.d/pbs_mom /etc/init.d/ /sbin/chkconfig --add pbs_mom /sbin/chkconfig pbs_mom on
Monitoring Grid Status¶
- display queue information (active/idle jobs)
showq
- current and historical scheduling statistics
showstats -v
- display job state and resources information
checkjob <JOB_ID>
- display node state and resources information
checknode <NODE_NAME>