Comprendre
et apprivoiser le batch
Objectif : Éviter que deux jobs tournent sur le même noeud alors que le reste de la machine est libre. Inconvénients de tourner sur le même noeud : - accès au même disque - gestion mémoire - communication vers le frontal par la même carte réseau - ... Cause : Le gestionnaire de batch scrute les noeuds en commençant toujours par le noeud 0 jusqu'à ce qu'il trouve un noeud avec un processeur libre. Remède : Éviter de tourner sur les mêmes noeuds que les jobs présents sur le cluster. 1/ Identification * faire un "qstat" pour voir l'état de la machine : [cros@gmfe3 cros]$ qstat Job id Name User Time Use S Queue ---------------- ---------------- ---------------- -------- - ----- 2581.gmfe3 olmjob olm 58:41:47 R One * Déterminer le noeud sur lequel tourne le job, refaire un "qstat" mais avec l'option "-f" : [cros@gmfe3 cros]$ qstat -f Job Id: 2581.gmfe3.cemif.univ-evry.fr Job_Name = olmjob Job_Owner = olm@gmfe3.cemif.univ-evry.fr resources_used.cput = 58:35:53 resources_used.mem = 7944kb ... exec_host = node0/0 ... L'information pertinente est "exec_node" qui en l'occurrence indique que le job tourne sur le noeud 0 et le processeur 0. Si un noeud est libre, alors on peut passer à la suite, sinon lancer normalement son job. 2/ Évitons les noeuds déjà occupés par un job : Si maintenant, un autre job est lancé, suivant la logique implacable du gestionnaire de batch, il s'exécutera sur le même noeud. Pour éviter cela, il suffit de lancer un job dont le script contient à la place du nom de votre code, l'instruction «sleep 240» (commande Unix qui demande une temporisation de 240 secondes) Ce job va alors se placer sur le noeud 0 et alors on dispose de 240 secondes pour lancer le job de calcul qui ira tourner SEUL sur le noeud 1 Il est possible de rencontrer des situations plus complexes, comme par exemple : job sur le noeud 0 – processeur 1 job sur le noeud 1 – processeur 0 Dans ce cas, un job lancé sans précaution ira se placer sur le noeud 0 – processeur 0. Il faut donc lancer deux jobs avec temporisation pour atteindre le noeud 2. |
|
|
|
|