Skip to Content

Foire Aux Questions - Cluster

Cette FAQ regroupe les commandes permettant à la fois de lancer des calculs sur le cluster et d'en comprendre le fonctionnement de base.

Généralités (3)
Version imprimable

Le cluster fonctionne avec un système de files d'attente basé sur la soumissions de jobs. Chaque file d'attente pointe sur une des ressources qui correspondent à des noeuds de calculs.

L'attribution des ressources se fait :
  - par slots (coeur dans un processeur ou core), si un utilisateur demande un job multithreadé, son quota sera aligné sur le nombre de slots demandé
  - par utilisation antérieure des ressources, c'est la politique de "Fair Share Policy" ou "politique de partage de tickets"

Comment sont définies les règles de priorités:
  - chaque utilisateur dispose du même crédit de ressources, l'ordre est calculé suivant ce qui a été consommé, sur une fenetre de temps de 7 jours
  - l'algorithme de calcul de planification "check" toutes les 15 secondes l'ensemble des jobs, qu'ils soient en "qwait" ou en "run"


Pour soumettre un job en mode batch, on utilise la commande qsub. Il suffit d'encapsuler la commande à lancer sur le cluster dans un un script.
  - Il faut préparer un fichier (script) contenant la (ou les) ligne(s) de commande
  - Vos fichiers de sortie doivent être impérativement dirigés vers l'espace disque de travail (migale:/projet/group/user)
  - Soumettre le job avec la commande de soumission (qsub)

En cliquant sur ce fichier sge_blast.sh, vous aurez un exemple de script commenté pour l'utilisation de BLAST. Un numéro apparaîtra après la soumission vous donnant le numéro que SGE lui a attribué. Cet identifiant peut vous servir pour supprimer votre job ou suivre son bon déroulement.

Il est également possible de se connecter en mode interactif via la commande qlogin , uniquement pour tester si sa configuration de lancement de job (librairies, script, environnement...) est correcte. Cela a pour avantage de ne pas devoir encapsuler le traitement dans un script. Vous ouvrez une session sur un des noeuds du cluster comme si vous étiez sur le serveur migale.

Version imprimable

Voici quelques liens utiles :

Version imprimable

C'est un moyen de paralléliser une application, cette méthode utilise uniquement les coeurs d'un noeud. Les communications entre processus sont rapides, mais on est limité en nombre de coeur utilisable. Les applications DOIVENT implémenter cette technologie pour fonctionner en mode thread.

Option pour utiliser l'environnement thread :

 -pe thread <nombre de coeur> -R y

Cette option va demander d'utiliser l'environnement thread avec un <nombre de coeur> déterminé sur un même noeud pour exécuter votre programme. L'option '-R y' réserve les coeurs au fur et a mesure qu'ils se libèrent.

La commande qhost vous permet de trouver le nombre de coeurs sur un noeud de calcul.

Programmes existant en thread (non exhaustif) : (en gras ceux disponibles sur la plateforme)

  • Blast : alignement de séquences
    Option : -a <nombre de coeurs>
    Remarque : il est plus efficace de découper en N jobs plutot que d'utiliser cette option.
  • TCoffee : alignement multiple de séquences
    Option : -n_core <nombre de coeurs>
    Remarque : contrairement aux autres logiciels il faut limiter TCOffee sinon par défaut il prend tous les coeurs disponibles sur la machine.
  • RepeatMasker : masquage de séquences répétées
    Option : -pa <nombre de coeurs>
  • Mira : assemblage de séquence
    Option : -GE:not=<nombre de coeurs>.
  • ProtTest : test de modèles statistiques pour les phylogénies a partir de séquences protéiques.
batch (6)
Version imprimable
Pour soumettre votre script.
qsub script.sh
Soumettre un job 10 fois.
qsub -t 1-10 job.sh
Soumettre des jobs sur la file par défaut. A charge pour SGE de soumettre le job sur un noeud de calcul disponible.
qsub -q long.q sge_blast.sh
Soumission sur un noeud particulier d'une file connue
qsub -q long.q@n46 sge_blast.sh
Soumettre un job sur un noeud particulier.
qsub -l hostname=n55 sge_clustal.sh
Dans un groupe de machines.
qsub -q "*@@allhosts" sge_blast.sh
Soumettre un job sur la file long.q mais sur les noeuds disposant du plus de mémoire. On utilise la ressource big_mem (ciblant les noeuds ayant plus de 8Go de mémoire RAM).
qsub -l big_mem -q long.q sge_blast.sh
Version imprimable
Afficher les noeuds de calcul disponibles et leurs ressources.
qhost



Afficher les groupes de noeuds de calcul

qconf -shgrpl



Afficher l'état des files d'attente.

qstat
qstat -u "*"
qstat -f
qstat -g c


Afficher les jobs en attente pour l'utilisateur martin
qstat -u martin -s p



Afficher les jobs en cours de traitement pour l'utilisateur martin

qstat -u martin -s r


Afficher l'état d'un job en erreur (la ligne error peut indiquer la raison de non soumission si le job est en mode Eqw)
qstat -j 165432


Signification des flags sur l'état de la file issu de qstat -f.

a(larm), A(larm), C(alendar suspended), s(uspended), S(ubordinate), d(isabled), D(isabled), E(rror)
Version imprimable
Supprimer le job numéro 12.
qdel 12
Supprimer tous les jobs de l'utilisateur dont le login est "martin".
qdel -u martin
Forcer la suppression du job numéro 12.
qdel -f 12
Version imprimable

Par défaut tous les jobs ont la même priorité (0) dans une file. La
politique actuelle repose une modèle de partage (Fair Share Scheduling) qui équilibre la charge sur une fenêtre glissante de 7 jours.

Pour basculer les jobs d'un utilisateur de la file courante vers une nouvelle file (newshort.q)
qalter -u martin -q newshort.q 
Version imprimable

Cannot execute binary file.

Vérifier que l'on a bien 
#! /bin/bash en première ligne du shell



Job XXXX (xxxx.sh) Aborted:
failed assumedly after job because:
job XXXX died through signal USR1 (10)
Vous avez soumis votre job à la queue short.q dont le temps d'execution est limitée à 4h. Celui-ci étant dépassé, le job a été tué par le gestionnaire de queue. 
Vous pouvez soumettre à nouveau votre job sur la queue long.q
Version imprimable

Il y a 4 files principales sont : short.q, long.q, infinit.q, web.q


short.q
c'est la file par défaut si aucune option n'est demandée
elle doit être utilisée pour les jobs dont la durée d'exécution est inférieure à 12 h
limites : 43% des ressources totales soit 214 slots (coeurs, sur 496 actuels), 100 slots max par utilisateur.


long.q
elle est demandée par l'option -q long.q
elle doit être utilisée pour les jobs dont la durée d'exécution est inférieure à 5 jours
limites : 77% des ressources totales soit 362 slots, 150 slots max par utilisateur.


infinit.q
elle est demandée par l'option -q infinit.q
elle doit être utilisée pour les jobs dont la durée d'exécution est supérieure à 5 jours
limites : 23% des ressources totales soit 112 slots, 50 slots max par utilisateur.


web.q
elle est utilisée par les applications web demandant des ressources de calculs
limites : 7% des ressources totales soit 32 slots, elle est accessible uniquement à l'utilisateur apache

qlogin (3)
Version imprimable

Saisissez votre mot de passe MIGALE (compte étendu) après avoir lancé la commande qlogin.

 qlogin -q long.q
 Your job 1887417 ("QLOGIN") has been submitted
 waiting for interactive job to be scheduled ...
 Your interactive job 1887417 has been successfully scheduled.
 Establishing /opt/sge/qlog session to host n63 ...
 The authenticity of host 'n63 (192.168.1.63)' can't be established.
 RSA key fingerprint is 96:44:db:03:44:86:d7:fa:77:cd:59:99:99:d9:55:7c.
 Are you sure you want to continue connecting (yes/no)? yes
 Warning: Permanently added 'n63,192.168.1.63' (RSA) to the list of known hosts.
 caron@n63's password:
Version imprimable

Pour se déconnecter,

 exit
 Connection to n63 closed.
 /opt/sge/qlog exited with exit code 1
Version imprimable

Avantages du mode interactif :

Simple, environnement identique à celui du serveur migale, performances améliorées par rapport à migale si ce dernier est chargé

Inconvénients du mode interactif :

Nécessité de laisser ouvert le terminal, utilisable que pour tester sa configuration avec quelques traitements simultanés (max ~ 3)