Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
documentation:tools:sge [2018/10/08 14:09] – [GridEngine : Soumettre un job] ltaulelldocumentation:tools:sge [2023/01/11 12:44] (Version actuelle) – supprimée ltaulell
Ligne 1: Ligne 1:
-====== GridEngine ====== 
- 
- 
-Le gestionnaire de jobs (ou système de batch) actuellement utilisé par le PSMN est GridEngine (anciennement Sun Grid Engine, d'où SGE).  
- 
-  * Les matériels sont décrit sur la page [[documentation:clusters:hardware|Configuration matérielle des clusters]], 
-  * Les serveurs de compilation, **pour chaque architecture processeur et version de système d'exploitation (OS)**, sont décrits dans les [[documentation:clusters:services|Machines de services]], 
-  * Les files d'attentes sont décrites sur la page du [[documentation:clusters:batch|système de batch]]. 
- 
-==== Utilisation optimale des ressources ==== 
- 
-Pour utiliser au mieux les ressources, il convient de bien remplir les serveurs. Pour cela, nous disposons de deux moyens : 
- 
-  * remplir "au mieux" (best effort) ,  
-  * remplir par multiple de n coeurs (ou n est le nombre de coeurs physiques par serveur). 
- 
-Remplir au mieux mène rapidement à un morcellement, entre les serveurs, des applications parallélisées via mpi. 
- 
-Le remplissage au mieux n'est donc mis en place pour les applications parallèles que sur certaines queues; sur les autres le remplissage par multiple d'un serveur entier est utilisé. 
- 
-==== Priorités ==== 
- 
-Une priorité : 
- 
-  * inversement proportionnelle au temps de calcul déjà consommé, 
-  * proportionnelle au temps d'attente et au nombre de coeurs demandé, 
- 
-est appliqué par GridEngine. Ceci afin de répartir plus équitablement les ressources disponibles. 
- 
-===== GridEngine : Soumettre un job ===== 
- 
-<code> 
-qsub programme <input >output 
-</code> 
- 
-<code bash> 
-qsub -V -e /path/to/workdir/ -o /path/to/workdir/ -q $QUEUE script 
- 
--V : export environment variables 
--e : where to put error files 
--o : where to put output files 
--q : queue (file d'attente) 
-</code> 
- 
-**Il est plus simple de soumettre un script à GridEngine, qui contiendra plus d'options**. Voir [[documentation:tutorials:submit|la documentation complète pour soumettre un job]], ainsi que [[documentation:clusters:batch&#les_files_d_attente|la liste des files d'attente]]. 
- 
-==== Comment choisir les files d'attente, de test ou de productions, adaptées ? ==== 
- 
-De par les achats successifs de nœuds de calcul avec des architectures de génération différente, il n'était pas possible de définir une seule file d'attente. Il est préférable d'avoir des files d'attentes différentes pour chaque architecture, afin d'atteindre des performances intéressantes pour chaque file d'attente. 
- 
-Concrètement le choix de la file d'attente de "production" devrait se faire en fonction de l'objectif voulu : 
- 
-  * si le critère principal est la rapidité de l'exécution, il faut regarder quelles sont les files d'attentes disponibles pour recevoir le job. L'utilisation des commandes du type ''qstat -g c'' devraient être la base de ce choix.  
-  * si le critère principal est le grand nombre de ressources (p.ex. un job avec beaucoup de cœurs, un job avec beaucoup de mémoire RAM), alors il faut plutôt s'orienter vers les files d'attentes qui possèdent un grand nombre de ressources (au moins les ressources demandées par le job), même si le temps d'attente dans la file d'attente est plus important.  
- 
-Évidemment, la commande ci-dessus et [[documentation:clusters:batch&#les_files_d_attente|la liste des files d'attente]] devraient guider votre choix. 
- 
-Et bien sur, pour la mise au point du code, il faut choisir une file d'attente de test qui soit la plus proche de la file d'attente de "production" envisagée (i.e. même type de nœuds de calcul). P.ex. ''r815lin128ib'' a été choisie pour la file d'attente de production, il faut choisir ''r815_ib_test'' pour les tests. 
-===== GridEngine : Les autres commandes utiles ===== 
- 
-==== Surveiller les jobs ==== 
- 
-  * Voir tous les jobs d'un utilisateur :  
- 
-<code>qstat -u login </code> 
- 
-  * Voir l'état des files d'attente (et la liste des files d'attente) :  
- 
-<code>qstat -g c </code> 
- 
-  * Voir l'état des machines d'une queue 
- 
-<code>qstat -q <queue_name> -f</code> 
- 
-  * Voir tous les jobs de tous les utilisateurs en exécution (running) :  
- 
-<code>qstat -u "*" -s r </code> 
- 
-  * Voir tous les jobs de tous les utilisateurs en attente (pending ou waiting) :  
- 
-<code>qstat -u "*" -s p </code> 
- 
- 
-  * Voir l'état d'un job en cours :  
- 
-<code>qstat -j 87584 | less </code> 
- 
-  * Voir l'état d'un job en cours avec plus de détails (long) :  
- 
-<code>qstat -j 87584 -g t | less </code> 
- 
-  * Voir l'état d'un job en cours avec encore plus de détails (long) :  
- 
-<code>qstat -j 87584 -g t -s r | less </code> 
- 
- 
-  * Voir les informations d'un job après son achévement (long) : 
- 
-<code>qacct -j 87584 -f /gridware/psmn/accounting | less</code> 
- 
-  * Supprimer un job :  
- 
-<code>qdel 85903 </code> 
- 
-  * Supprimer un job (forcer) :  
- 
-<code>qdel -f 109383 </code> 
- 
- 
- 
-<hidden> 
-Ces commandes ne fonctionnent plus depuis la migration 2018! 
- 
-  * <del>Voir l'état d'une queue (commande interne PSMN) : </del> ne fonctionne plus 
- 
-<code>qstatqueue c6100lin24ib </code> 
- 
-  * <del>Voir l'état de toutes les queues (commande interne PSMN) :</del> ne fonctionne plus 
- 
-<code>qstatall </code> 
- 
-  * Voir l'état d'un job en cours :  
- 
-<code>qstat -j 87584 | less </code> 
- 
-  * <del>Enlever (clear) l'état Error d'un job :</del> ne fonctionne plus 
- 
-<code>qmod -cj <job_id> </code> 
- 
- 
- 
-</hidden> 
- 
-==== Accounting ==== 
- 
-<note important>Le fichier d'accounting est diffusé sur ''/gridware/psmn/accounting''</note> 
- 
- 
-  * Détails des jobs sur les 30 derniers jours : 
- 
-<code>qacct -f /gridware/psmn/accounting -d 30 -o <login> -j </code> 
- 
-  * Consommation d'heures CPU (utime sur les 30 derniers jours) : 
- 
-<code>qacct -f /gridware/psmn/accounting -d 30 -o <login> | tail -1 | awk '{print $3/3600}'</code> 
- 
-ou 
- 
-<code>qacct -f /gridware/psmn/accounting -q "*" -o <login> -d 30 | awk '{ SUM += $5} END {print SUM/3600}'</code> 
- 
-  * Consommation d'heures CPU (utime de date à date, dans cet exemple, l'année 2012) : 
- 
-<code>qacct -f /gridware/psmn/accounting -b 201201010000 -e 201212312359 -o <login> | tail -1 | awk '{print $3/3600}'</code> 
- 
-==== Jobs qui ont des problèmes : ==== 
- 
-Lancer la commande suivante : 
-<code>qstat -g c </code> 
- 
-et regarder les deux dernières colonnes : 
- 
-  * aoACD : Nombre de coeurs qui sont au moins dans un des états suivants :  
-    * a Load threshold alarm  
-    * o Orphaned  
-    * A Suspend threshold alarm  
-    * C Suspended by calendar  
-    * D Disabled by calendar 
- 
-  * cdsuE : Nombre de coeurs qui sont au moins dans un des états suivants :  
-    * c Configuration ambiguous  
-    * d Disabled  
-    * s Suspended  
-    * u Unknown  
-    * E Error 
- 
-==== Status (etats) de jobs possibles : ==== 
- 
-  * d(eletion), 
-  * E(rror), 
-  * h(old), 
-  * r(unning), 
-  * R(estarted), 
-  * s(uspended), 
-  * S(uspended), 
-  * t(ransfering), 
-  * T(hreshold), 
-  * w(aiting). 
- 
-===== GridEngine : Variables d'environnement ===== 
- 
-<note important>''#$'' est réservé à GridEngine pour effectuer des transmissions de paramètres (ex: ''#$ -cwd'' ou ''#$ -V'').</note> 
- 
-  * SGE_O_WORKDIR : répertoire d'où à été soumis le job, utilisable dans les scripts 
-  * NSLOTS : nombre de coeurs demandé 
-  * JOB_ID : ID du job (unique) assigné par GridEngine 
-  * JOB_NAME : nom du job (-N) 
-  * PE_HOSTFILE : fichier de hosts 
- 
- 
-===== Références : ===== 
- 
-  * http://wiki.gridengine.info/wiki/index.php/Utilities 
-  * http://www.cac.cornell.edu/Ranger/Environment/more_cmds.aspx 
-  * http://cc.in2p3.fr/docenligne/1007 
-  * http://www.blog.kubiak.co.uk/post/53 
-  * https://wiki.duke.edu/display/SCSC/SGE+Queueing+System 
-    * https://wiki.duke.edu/display/SCSC/SGE+Env+Vars 
-    * https://wiki.duke.edu/display/SCSC/SGE+Array+Jobs :!: 
-    * https://wiki.duke.edu/display/SCSC/SGE+Job+Dependencies :!: 
-  * http://stackoverflow.com/questions/4883056/sge-qsub-fails-to-submit-jobs-in-sync-mode 
-  * http://wiki.ibest.uidaho.edu/index.php/Tutorial:_Creating_dependent_jobs :!: 
-  * https://sites.google.com/site/anshulkundaje/inotes/programming/clustersubmit/sun-grid-engine :!: 
-  * http://gridscheduler.sourceforge.net/htmlman/htmlman1/qsub.html?pathrev=V62u5_TAG (ENVIRONMENTAL VARIABLES) 
  
documentation/tools/sge.1539007788.txt.gz · Dernière modification : 2020/08/25 15:58 (modification externe)