Manteniment de Multivac
Aquesta secció proporciona instruccions detallades sobre com fer el manteniment del clúster. Aquest manual s’ha fet en referència a un manual ja existent a Installation of slurm , juntament amb la documentació oficial de slurm slurm workload manager
Com donar d’alta un nou node
S’han d’executar les següents passes:
# ### MUNGE ###
# Instal·lem munge
sudo apt install munge
# Copiem la clau de munge d'iocex al node
sudo scp root@iocex:/etc/munge/munge.key /etc/munge
# Configurem els permisos
sudo chown -R munge: /etc/munge/ /var/log/munge/ /var/lib/munge/ /run/munge/
sudo chmod 0700 /etc/munge/ /var/log/munge/ /var/lib/munge/ /run/munge/
# Copiem el contingut de /etc/systemd/system/multi-user.target.wants/munge.service al nostre node, assegurant que munge s'espera al nslcd a activar-se
sudo scp root@iocex:/etc/systemd/system/multi-user.target.wants/munge.service /etc/systemd/system/multi-user.target.wants/munge.service
# Reiniciem systemd
sudo systemctl daemon-reload
# Activem munge i comprovem que funciona correctament
sudo systemctl enable munge
sudo systemctl start munge
# Comprovem des de iocex que té accés al node
sudo munge -n | unmunge
sudo munge -n | ssh nom_del_node_nou unmunge
# ### slurm ###
sudo apt install slurmd
#Creem les carpetes al node
sudo mkdir /var/spool/slurmd
sudo chown slurm: /var/spool/slurmd
sudo chmod 755 /var/spool/slurmd
sudo mkdir /var/log/slurm/
sudo touch /var/log/slurm/slurmd.log
sudo chown -R slurm:slurm /var/log/slurm/slurmd.log
# Modifiquem l'arxiu present a /etc/slurm/slurm.conf d'iocex amb el nou node i es copia aquest arxiu a tots els nodes, inclòs el nou
nano /etc/slurm/slurm.conf
# Copiem l'arxiu slurm.conf al nodeX
sudo scp root@i-iocex:/etc/slurm/slurm.conf /etc/slurm
# Copiem l'arxiu cgroup i slurmdbd.conf
sudo scp root@psi:/etc/slurm/cgroup.conf /etc/slurm
sudo scp root@i-iocex:/etc/slurm/slurmdbd.conf /etc/slurm
# Copiem el contingut d'un dels nodes ja existents /etc/systemd/system/multi-user.target.wants/munge.service al nostre node, assegurant que s'espera a munge per activar-se
sudo scp root@psi:/etc/systemd/system/multi-user.target.wants/slurmd.service /etc/systemd/system/multi-user.target.wants/slurmd.service
# Reiniciem systemd
sudo systemctl daemon-reload
# Activem slurmd.service
systemctl enable slurmd.service
systemctl start slurmd.service
# Comprovem que el node està en idle a iocex, sinó reiniciem el controlador systemctl restart slurmd.service
systemctl status slurmd.service
# Si no està en verd, reiniciem munge i slurmd uns instants més tard
systemctl status munge.service
systemctl restart munge.service
systemctl restart slurmd.service
# Canviem l'estat del node de down a Idle
scontrol update NodeName=nodeX State=RESUME
# Fem un reconfigure de tots els nodes, ja que hem canviat el seu fitxer slurm.conf
sudo scontrol reconfigure
Com comprovar l’estat dels nodes
Des d’iocex, podem comprovar l’estat dels nodes amb la comanda sinfo.
si algun dels nodes apareix down, el podem reactivar de nou. També el podem desactivar
És important saber que quan un node cau, es pot veure el motiu de la seva caiguda a /var/log/slurm/slurmd.log.
Aquí, podem corregir la situació (generalment és perquè munge s’ha desactivat o slurmd s’ha col·lapsat si l’usuariat ha intentat fer alguna cosa incorrecte), i llavors podem reactivar-lo un cop corregida la situació. L’ordre per a reactivar un node és primer reactivar munge i després slurmd.
# Activar node
sudo scontrol update NodeName=nodeX State=RESUME
# Desactivar node (per manteniment, per exemple)
sudo scontrol update NodeName=nodeX State=Down Reason='Manteniment'
# Comanda per a establir conexió amb tots els nodes
sudo scontrol reconfigure
Recomanacions
L’usuariat usa una cua social, és a dir, tota persona és conscient del que s’executa i han de ser responsables de l’ús de l’eina. Si una persona llança processos molt llargs, és possible que les altres persones no puguin llençar processos.
Scripts personalitzats
Hi ha una sèrie de scripts en bash personalitzats que simplifiquen les execucions de scripts. Aquests scripts estan a les rutes:
multivac
Descripció: Aquest script és el principal, agafa el contingut d’un fitxer amb extensió .slurm i fa un script temporal que executa un sbatch i després esborra aquest script temporal.
Ús: multivac conf.slurm
Ruta:
/usr/local/bin/multivac
mvac_crear_venv
Descripció: Aquest script crea un venv a la carpeta especificada a l’execució de l’script
Ús: mvac_crear_venv
Ruta:
/usr/local/bin/mvac_crear_venv
mvac_deploy_jupyter
Descripció: Aquest script crea un venv amb jupyter notebook al home de l’usuari. És requisit indispensable per a poder executar jupyter en remot
Ús: mvac_deploy_jupyter
Ruta:
/usr/local/bin/mvac_deploy_jupyter
mvacinteract
Descripció: Aquest script obre un ssh amb un node concret, amb 2 cores i 512MB de ram reservats.
Ús: mvacinteract nodeX
Ruta:
/usr/local/bin/mvacinteract
mvachtop
Descripció: Aquest script obre un ssh amb un node concret, i hi executa htop.
Ús: mvachtop nodeX
Ruta:
/usr/local/bin/mvachtop
mvac_jupyter
Descripció: Aquest script obre un ssh i una connexió amb jupyter hub a un dels nodes disponibles. Reserva 4 cores i 3968M.
Ús: mvac_jupyter
Ruta:
/usr/local/bin/mvacinteract
mvac_jupyter_remote
Descripció: Aquest script obre un ssh i una connexió amb jupyter hub a un dels nodes disponibles. Reserva 4 cores i 3968M. Permet deixar el jupyter corrent en segon pla i sortir de la terminal. Durada màxima de 24h. En acabar l’execució s’ha de finalitzar el job de forma manual, sinó seguirà amb l’espai reservat fins a arribar a la durada màxima de 24h.
Ús: mvac_jupyter_remote
Ruta:
/usr/local/bin/mvac_jupyter_remote
sjob
Descripció: Aquest script permet obtenir la informació d’un job finalitzat.
Ús: sjob
Ruta:
/usr/local/bin/sjob
Historial d’execucions
A /var/log/slurm/job_completions hi ha el resultat en text pla de totes les execucions que s’han realitzat a multivac.
Documentació de Multivac
La present documentació està a un repositori de gitioc Manual de multivac
Està en format rst i per a desplegar la documentació hem de tenir creat un venv amb els següents requirements.
alabaster==0.7.13
Babel==2.13.1
certifi==2023.11.17
charset-normalizer==3.3.2
docutils==0.20.1
idna==3.6
imagesize==1.4.1
Jinja2==3.1.2
MarkupSafe==2.1.3
packaging==23.2
Pygments==2.17.2
requests==2.31.0
snowballstemmer==2.2.0
Sphinx==7.2.6
sphinx-rtd-theme==2.0.0
sphinxcontrib-applehelp==1.0.7
sphinxcontrib-devhelp==1.0.5
sphinxcontrib-htmlhelp==2.0.4
sphinxcontrib-jquery==4.1
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.6
sphinxcontrib-serializinghtml==1.1.9
urllib3==2.1.0
Per a afegir noves pàgines només cal crear un arxiu amb format .rst i afegir el nom de l’arxiu al document index.rst.
Per a desplegar la documentació de forma automàtica, només hem d’executar l’script deploy_doc.sh de la carpeta de la documentació.
Recomanacions
L’usuariat usa una cua social, és a dir, tota persona és conscient del que s’executa i han de ser responsables de l’ús de l’eina. Si una persona llança processos molt llargs, és possible que les altres persones no puguin llençar processos.
- Hi han dues carpetes importants:
/etc/slurm/En aquesta carpeta hi han les configuracions de slurm/var/log/slurmEn aquesta carpeta hi ha els logs de slurm
Si volem veure per què ha caigut un node podem consultar-ho a:
sudo journalctl -u slurmctld --no-pager -n 100Si ho comprovem des de iocexsudo journalctl -u slurmd --no-pager -n 100Si ho comprovem des d’un node
Millores i upgrades del sistema
Una de les millores proposades és activar la base de dades MariaDB (ja instal·lada), modificar el camp JobCompType=jobcomp/filetxt de l’arxiu slurm.conf i fer que guardi totes les execucions a la base de dades.
Això permetrà executar l’script sacct que permet veure el total real de l’ús dels recursos dels scripts i afinar més les execucions.