Manuel LSF Centre de Calcul - CRI Université de Bourgogne Jean-Jacques.Gaillard@u-bourgogne.fr 21-02-2007 Ce manuel est très largement inspiré d un document que nous a transmis la société TETHYS ; il a été constitué initialement par Mrs Le Corre et Desaleux. Le but de ce document est de présenter à l utilisateur les principales commandes et options permettant d utiliser LSF comme système batch. Le lecteur saura soumettre des jobs, suivre leur exécution, et les arréter éventuellement. Il n est pas exhaustif et doit etre considéré comme une aide au démarrage. Nous vous rappellons que l exécution d une commande en mode interactif ne peut dépasser une certaine valeur cpu sur les machines du centre ; les machines krenek01-07 sont dédiées au travail interactif ; seul le système batch LSF permet d éxecuter des travaux necessitant plusieurs jours de calcul. Ce système est installé sur les machines alpha (cluster de 12 processeurs) : part01, part02, et sur les machines opteron (cluster Linux à 98 processeurs) : krenek01 à krenek07, webern00 à webern45 1 Références LSF Batch Users s Quick Reference. Equivalent à ce document (en anglais), mais un peu plus poussé. LSF Batch User s Guide. Beaucoup plus complet, il contient la liste de toutes les commandes, ainsi que des exemples didactiques. Manuel en ligne (commande lsman unix) sur chacune des commandes évoquées. Aide en ligne du CCUB (commande man lsf). 1
Accès à la doc du centre : www.u-bourgogne.fr/cri-ccub/doc/batch.html 2 Concepts LSF comporte un système batch réseau : c est-à-dire sur un ensemble ou cluster de machines. L utilisateur décrit les jobs à exécuter, et LSF choisit la machine la moins chargée capable d exécuter ces jobs. On peut spécifier au moment de la soumission les ressources nécessaires en termes de mémoire ou CPU par exemple, mais aussi en terme de ressources site associées par l administrateur à l une ou l autre machine. Machine de soumission : machine sur laquelle l utilisateur exécute la commande de soumission. Machine d exécution : machine choisie par LSF pour exécuter un job. Etats possibles d un job : pending : soumis, mais pas encore démarré. Pas encore de machine sélectionnée pour l exécuter. psusp, ususp, ssusp : suspendu (par la commmande bstop ou par le système batch à cause de la charge machine). run : en cours d exécution. done : terminé normalement. exit : terminé anormalement. LSF permet aussi d exécuter des commandes interactives (moins d une heure cpu) sur la machine la moins chargée. 3 Les commandes Ce chapitre donne la liste des commandes les plus fréquemment utilisées, ainsi que leurs principales options. La commande xlsf en mode graphique multi-fenêtre donne accès à toutes les commandes décrites ci-dessous. 3.1 Soumission de jobs 2
Pour soumettre un job dans le cas particulier de nos clusters multiarchitecture (cad processeurs Alpha-T64unix et processeurs Opteron- Linux), il faudra se connecter sur une machine d une architecture pour obtenir l exécution sur cette architecture particulière. 3.1.1 Soumission en mode commande : bsub Le premier argument trouvé par bsub qui n est pas une option est considéré comme le nom de la commande à soumettre, et tout le reste de la ligne comme des arguments de cette commande. Si aucune commande à exécuter n est spécifiée sur la ligne de commande, bsub lit son entrée standard. On peut alors embarquer des options au début du job, plutot que de les spécifier sur la ligne de commande, en utilisant des lignes de la forme : #BSUB option de bsub Les fonctionnalités de bsub sont accessibles en interface graphique à travers xbsub. Options : -q queue : soumet le job dans la file d attent spécifiée. Si cette option est absente, la file d attente par défaut est utilisée. -J nom : associe un nom au job, pour le repérer plus facilement lors des commandes de listage par exemple. -o fichier : envoie la sortie standard du job sur le fichier spécifié. Par défaut, la sortie est renvoyée par mail à l utilisateur. -e fichier : envoie la sortie d erreurs du job sur le fichier spécifié. -E pre exec [arg...] : exécute pre exec sur la machine d exécution avant de lancer le job. Le job ne sera réellement lancé que si pre exec renvoie un status de 0. -c cpu : définit le temps CPU maximum nécessaire pour le job. Par défaut, il n y a pas de limite, hors celles qu a pu affecter l administrateur LSF à la file d attente. -M mem : définit la taille mémoire (resident set size) nécessaire pour le job. Par défaut, il n y a pas de limite. -w depend : permet d associer à un job des conditions de dépendance, sur un autre job par exemple. started (numéro ou nom de job): démarre si le job dont il dépend a commencé. done (numéro ou nom de job): démarre si le job dont il dépend a fini 3
normalement. exit (numéro ou nom de job): démarre si le job dont il dépend a fini anormalement. ended (numéro ou nom de job): démarre si le job dont il dépend est fini. -P project : spécifie le nom du projet sur lequel sera comptabilisé le job. -R ressources : demande l exécution sur une machine possédant les ressources spécifiées (c.f.chap. ressources). Nous avons vu que LSF permet de soumettre un travail à partir d une machine dans une file d attente définie par les demandes de ressources en matériel et logiciel ; ces classes sont définies de la façon suivante au centre : s03h : travaux séquentiels cpu inférieur à 3 heures s59j : travaux séquentiels cpu inférieur à 59 jours s59jbm : travaux séquentiels necessitant de 1 à 12 giga de memoire cpu inférieur à 59 jours p60j2p : travaux parallèles sur 2 proc en mémoire partagée cpu inférieur à 60 jours (hors MPI) p60jmpi : travaux parallèles sur 20 proc (maxi) en mémoire distribuée cpu inférieur à 60 jours lseo : travaux parallèles sur 2 processeurs, cpu inférieur à 60 jours (par cpu) pour le labo LSEO crct : travaux parallèles sur 2 processeurs, cpu inférieur à 60 jours (par cpu) pour le labo CRCT Le travail s exécutera sur une des machines du centre en fonction de leur charge et des ressources en logiciel et matériel demandées SAUF SI VOUS SPECIFIER UNE MACHINE PARTICULIERE COMME MACHINE D EXECUTION : dans ce cas il n y aura pas d équilibrage de charge et vos jobs s exécuteront quand la charge de la machine que vous avez designée le permettra. Nota 1 : Les ressources définies à ce jour sont : matlab, reduce, gaussian, tmp3, maple... Nota 2 : Ne pas soumettre des jobs séquentiels dans une file d attente parallèle. 4
bsub mon job : soummission du programme ou script dans la file d attente par defaut bsub -R matlab mon job matl : idem mais en exigeant la ressource matlab pour le script à exécuter (exécution sur 1 machine webernxx) bsub -R matlab -q s59j mon job long mat : envoi d un job matlab dans la file d attente séquentielle 59 jours bsub -R gaussian -q s59j mon job long mat : envoi d un job gaussian dans la file d attente séquentielle 59 jours Il faut créer un premier script mon job.com (qui doit etre exécutable chmod u+x mon job.com) contenant les 2 lignes suivantes : \#! /bin/ksh matlab -nodisplay <mon\_job.m >/dev/null 2>\&1 On soumet le job avec la commande : bsub -R matlab -q s59j mon job.com La commande a changée depuis le passage au réseau rapide Myrinet. bsub -q p60j -n 8 -i input-data mpigm timex mon-prog input-data est un fichier d entrée de données et mon-prog est la version compilée du programme. Rappel : pour compiler un programme MPI la commande suivante est à utiliser ; /usr/local/mpich/bin/mpif90 ou mpif77 (options) -o mon-prog mon-prog.f Cette commande est modifiée par rapport à l usage de MPI sur Myrinet : InfiniBand est le réseau rapide à faible latence disponible sur le cluster Linux-Opteron bsub -q p60jmpi -i input-data -n 20 mpiib mon-prog input-data est un fichier d entrée de données et mon-prog est la version compilée du programme. Rappel : pour compiler un programme MPI la commande suivante est à utiliser ; /usr/local/mpich/bin/mpif90 ou mpif77 (options) -o mon-prog mon-prog.f 5
Exécution en mode séquentiel (1 processeur) : bsub -q p59s -o resultat.out -N -n 1 gmsrun prog.inp Il est préferable dans ce cas (et celui de résultats volumineux) de spécifier un fichier de sortie (resultat.out) et l option -N permettant d avoir un avertissement court de la fin de job par mail. Exécution en mode parallèle (2 processeurs) : bsub -q p60j2p -o resultat.out -N -n 2 gmsrun prog.inp Exécution en mode parallèle (4 processeurs et plus) : bsub -q p60mpi -o resultat.out -N -n 8 gmsrun prog.inp (choix de 8 proc dans ce cas) Une autre syntaxe possible: Par exemple, fichier mon prog gamess.exe : #BSUB -q p60jmpi #BSUB -n 4 #BSUB -J gamess4 #BSUB -N #BSUB -u toto@satie.u-bourgogne.fr #BSUB -o lsf.out.%j -e lsf.err.%j gmsrun fichier.inp Pour soumettre ce job : bsub < mon_prog_gamess.exe Voir ci-dessous pour la signification des options. 3.1.2 Soumission de jobs par script On peut se créer un script contenant les differents paramètres et soumettre ce script par la commande : bsub mon-script Le fichier mon-script pourrait avoir le contenu suivant à titre d exemple : mon-job\\ #BSUB -q s59j #BSUB -R gaussian #BSUB -o result.out #BSUB -J zirconium Dans l exemple ci-dessus, on demande l exécution de mon-job dasn le file d attente s5j (-q), avec la ressource gaussian (-R), les résultats de la sortie standard étant place dans le fichier result.out (-o), l identificateur de job étant zirconium (-J). Bien d autres paramètres peuvent être utilisé. Attention par contre à la modification de mon-script pendant 6
l exécution du job ; le fichier result.out est en principe écrit en append. Des arguments peuvent être passés au programme. 3.2 Informations sur les files d attente : bqueues Donne des informations sur les files d attente configurées dans le système batch LSF. La commande xlsbatch permet avec un interface graphique d exécuter bqueues avec les options décrites ci-dessous. Options: -l : format long (multi lignes). -u user : ne liste que les files d attente auxquelles l utilisateur user a le droit de soumettre des jobs. nom de file attente : donne les informations sur cette file d attente uniquement. La commande bqueues affichera en format court les files d attentes mise en place sur le cluster Linux du centre de calcul de l ub. s03h : travaux séquentiels cpu inférieur à 3 heures s59j : travaux séquentiels cpu inférieur à 59 jours s59jbm : travaux séquentiels necessitant de 2 à 16 giga de memoire cpu inférieur à 59 jours p60j2p : travaux parallèles sur 2 proc en mémoire partagée cpu inférieur à 60 jours (hors MPI) p60jmpi : travaux parallèles sur 20 proc (maxi) en mémoire distribuée cpu inférieur à 60 jours lseo : travaux parallèles sur 2 processeurs, cpu inférieur à 60 jours (par cpu) pour le labo LSEO crct : travaux parallèles sur 2 processeurs, cpu inférieur à 60 jours (par cpu) pour le labo CRCT 3.3 Listage de jobs : bjobs Donne le status ainsi que diverses informations sur les jobs dans le système batch LSF. La commande recommandée pour une exécution séquentielle (1 processeur) : 7
cas parallèle 2 proc : cas parallèle 4 proc et plus : bsub -q p60j -o resultat.out -N -n 2 gmsrun prog.inp Il est préferable dans ce cas (et celui de résultats volumineux) de spécifier un fichier de sortie (resultat.out) et l option -N permettant d avoir un avertissement court de la fin de job. 3.3.1 Soumission de jobs par script On peut se créer un script contenant les differents paramètres et soumettre ce script par la commande : bsub mon-script Le fichier mon-script pourrait avoir le contenu suivant à titre d exemple : mon-job\\ \#BSUB -q s59j\\ \#BSUB -R gaussian\\ \#BSUB -o result.out\\ \#BSUB -J zirconium\\ Dans l exemple ci-dessus, on demande l exécution de mon-job avec la ressource gaussian, les résultats de la sortie standard étant place dans le fichier result.out, l identificateur de job étant zirconium. Bien d autres paramètres peuvent être utilisé. Attention par contre à la modification de mon-script pendant l exécution du job ; le fichier result.out est en principe écrit en append. Des arguments peuvent être passés au programme. 3.4 Informations sur les files d attente : bqueues Donne des informations sur les files d attente configurées dans le système batch LSF. La commande xlsbatch permet avec un interface graphique d exécuter bqueues avec les options décrites ci-dessous. Options: -l : format long (multi lignes). -u user : ne liste que les files d attente auxquelles l utilisateur user a le droit de soumettre des jobs. nom de file attente : donne les informations sur cette file d attente uniquement. La commande bqueues affichera en format court les files d attentes mise en place sur le cluster Linux du centre de calcul de l ub. s03h : travaux séquentiels cpu inférieur à 3 heures 8
s59j : travaux séquentiels cpu inférieur à 59 jours s59jbm : travaux séquentiels necessitant de 2 à 16 giga de memoire cpu inférieur à 59 jours p60j2p : travaux parallèles sur 2 proc en mémoire partagée cpu inférieur à 60 jours (hors MPI) p60jmpi : travaux parallèles sur 20 proc (maxi) en mémoire distribuée cpu inférieur à 60 jours lseo : travaux parallèles sur 2 processeurs, cpu inférieur à 60 jours (par cpu) pour le labo LSEO crct : travaux parallèles sur 2 processeurs, cpu inférieur à 60 jours (par cpu) pour le labo CRCT 3.5 Listage de jobs : bjobs Donne le status ainsi que diverses informations sur les jobs dans le système batch LSF. Voir aussi la commande xlsbatch avec interface graphique. Options: -l : format étendu (multi ligne). -a : donne des informations sur tous les jobs, y compris ceux qui ont fini récemment. -s : liste uniquement les jobs suspendus, avec la raison pour laquelle ils sont suspendus. -d : liste uniquement les jobs terminés recemment. -p : liste uniquement les jobs pending (en attente), avec la raison pour laquelle ils n ont pas été dispatchés lors du dernier cycle -r : liste uniquement les jobs en cours d exécution. -q queue : liste uniquement les jobs dans la file d attente spécifiée. -J nom : liste uniquement le(s) job(s) ayant le nom spécifié. -P project : liste uniquement les jobs appartenant au projet spécifié. numéro de job : liste uniquement le job spécifié. 9
3.6 Historique de jobs : bhist Affiche les évènements associé à un ou plusieurs jobs (démarrage, suspension, terminaison). Voir aussi la commande xlsbatch avec interface graphique. Options: -l : format étendu (multi ligne). -a : donne des informations sur tous les jobs, y compris ceux qui ont fini récemment. -s : liste uniquement les jobs suspendus, avec la raison pour laquelle ils sont suspendus si -l est également présent. -d : liste uniquement les jobs terminés recemment. -p : liste uniquement les jobs pending (en attente), avec la raison pour laquelle ils n ont pas été dispatchés lors du dernier cycle -q queue : liste uniquement les jobs dans la file d attente spécifiée. -J nom : liste uniquement le(s) job(s) ayant le nom spécifié. -P project : liste uniquement les jobs appartenant au projet spécifié. numéro de job : liste uniquement le job spécifié. 3.7 Arrêt de jobs : bkill Envoie un signal à un ou plusieurs job(s) non terminé(s). Voir aussi la commande xlsbatch. Options: -s numéro ou nom de signal : envoie le signal spécifié. Par défaut, SIGKILL (9) est envoyé, ce qui cause l arret du job. -J nom : envoie un signal au(x) job(s) ayant le nom spécifié. numéro de job : envoie le signal au job spécifié. 4 Les ressources À la soumission d un job, l utilisateur peut demander les ressources dont ce job aura besoin. LSF utilise cette demande pour sélectionner la machine d exécution. Les ressources sont classées en 2 catégories : 10
ressources dynamiques : chacune d elles correspond à un indice de charge. ressources statiques : il s agit de caractéristiques ou attributs d une machine qui ne changent pas au cours du temps. Certaines ressources statiques sont affectées par l administrateur LSF en fonction du site. La commande lsinfo donne la liste des ressources disponibles. On peut aussi obtenir une liste des ressources avec leur type par la commande xbsub puis menu resource et choose. Une chaîne de description de ressources peut comporter jusqu à 4 sections. La principale est la section select, qui permet de définir les caractéristiques que doit avoir la machine d exécution. La chaîne de sélection peut combiner des ressources booleennes (binaires) et des opérations sur des ressources arithmétiques, en utilisant une syntaxe proche de celle du langage C. Exemples : bsub -R "select[(swp > 50 && type == LINUX32) (swp>35 && type == ALPHA)]" job.com exécutera job.com sur une machine LINUX32 avec au moins 50 Moctets de swap ou une machine de type ALPHA avec au moins 35 Moctets de swap. bsub -R "select [fastserver && mem>100] rusage [mem=100:duration=30]" job2.com exécutera le job2.com si la machine est une ressource fastserver avec une mémoire d au moins 100 mégaoctets pour démarrer le job ; pendant l exéction du job, l utilisation de la m mémoire diminura pendant un temps elapsed de 30 minutes. Les ressources qui ont été définies au CCUB en plus des ressources standards de LSF sont de plusieurs types : logicielles : matlab, gaussian, reduce,... ces logiciels ne sont pas disponibles malheureusement sur toutes les machines. matérielles : système de fichiers /tmp3 de x gigaoctets, permettant l exécution de vos jobs dans un espace de manoeuvre confortable sans quota et sans comptabilisation. architecture : 5 Commande principale xlsf 11
xlsf vous permettra de réaliser en mode multi-fenêtres toutes les commandes décrites ci-avant. 12
Contents 1 Références 1 2 Concepts 2 3 Les commandes 2 3.1 Soumission de jobs....................... 2 3.1.1 Soumission en mode commande : bsub....... 3 3.1.2 Soumission de jobs par script............. 6 3.2 Informations sur les files d attente : bqueues........ 7 3.3 Listage de jobs : bjobs...................... 7 3.3.1 Soumission de jobs par script............. 8 3.4 Informations sur les files d attente : bqueues........ 8 3.5 Listage de jobs : bjobs...................... 9 3.6 Historique de jobs : bhist.................... 10 3.7 Arrêt de jobs : bkill....................... 10 4 Les ressources 10 5 Commande principale xlsf 11 NB : ce document de format pdf est accessible à la rubrique archives de la page d accueil de notre site web, dans le répertoire divers, en format html sur le serveur web du centre à l adresse : www.u-bourgogne.fr/cri-ccub. Merci de me faire connaître les erreurs éventuelles. 13