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
Dernière révisionLes deux révisions suivantes
en:documentation:tools:sge [2018/09/04 09:21] – [GridEngine : Soumettre un job] cpetiten:documentation:tools:sge [2020/08/25 15:58] – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 ====== GridEngine ====== ====== GridEngine ======
  
-<WRAP center round todo 60%> 
-Under contruction... 
-</WRAP> 
  
 The job scheduler (or batch-queuing system) used in PSMN cluster is SGE,-previously Sun Grid Engine and now Son of Grid Engine-; it manages the execution of non-interactive jobs. The job scheduler (or batch-queuing system) used in PSMN cluster is SGE,-previously Sun Grid Engine and now Son of Grid Engine-; it manages the execution of non-interactive jobs.
Ligne 14: Ligne 11:
   * the **queues for job submission** are described [[documentation:clusters:batch|here]]   * the **queues for job submission** are described [[documentation:clusters:batch|here]]
 {{ :salle_des_machines_2.png?nolink&400 |}} {{ :salle_des_machines_2.png?nolink&400 |}}
-==== Utilisation optimale des ressources ====+==== Optimum use of resources ====
  
-Pour utiliser au mieux les ressourcesil convient de bien remplir les serveursPour celanous disposons de deux moyens :+To make the best use of resourcesit is important to fill up the serversFor thisthey are two strategies:
  
-  * 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 morcellemententre les serveurs, des applications parallélisées via mpi.+  * fill in "at best" (a best effort strategy) 
 +  * fill in with multiple of n cores (where n is the number of physical cores per server).
  
-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é.+Filling at best quickly leads to a fragmentation between the servers, of parallel applications via mpi.
  
-==== Priorités ====+Filling at best is therefore only implemented on a few queues for parallel applications. On other queues, the fill in with the multiple of n cores of an entire server is used.
  
-Une priorité :+==== Priorities ====
  
-  * inversement proportionnelle au temps de calcul déjà consommé, +Job priority is:
-  * proportionnelle au temps d'attente et au nombre de coeurs demandé,+
  
-est appliqué par GridEngineCeci afin de répartir plus équitablement les ressources disponibles.+  * inversely proportional to the calculation time already consumed, 
 +  * proportional to waiting time and number of hearts requested. 
 + 
 +This is to distribute the available resources more equitably.
  
 ===== GridEngine : Submitting jobs ===== ===== GridEngine : Submitting jobs =====
  
-The normal way to submit jobs to the cluster is using the ''qsub'' command. For example: +<code> 
- +qsub programme <input >output
-<code bash+
-qsub myscript.sh+
 </code> </code>
  
-The many options to the ''qsub'' command are described in the manpage, ''man qsub'' 
- 
-For example a more complex submission: 
 <code bash> <code bash>
-qsub -V -m b -m e -e /path/to/workdir/ -o /path/to/workdir/ -q $QUEUE script+qsub -V -e /path/to/workdir/ -o /path/to/workdir/ -q $QUEUE script
  
 -V : export environment variables -V : export environment variables
--m b : mail @begin 
--m e : mail @end 
 -e : where to put error files -e : where to put error files
 -o : where to put output files -o : where to put output files
Ligne 56: Ligne 47:
 </code> </code>
  
-** Nevertheless, it is easier to directly submit to GridEngine a script containing the desired options**. You can follow the documentation on [[documentation:tutorials:submit|how to submit a job (full documentation)]]. Moreover take a look at [[documentation:clusters:batch&#les_files_d_attente|the list of available queues for submission]].+**It is simpler to submit a script to GridEngine, which will contain more options**. 
  
-==== Comment choisir les files d'attentede test ou de productions, adaptées ? ====+<note important>Some options don't work directly in CLIyou have to use a script (example: send mails beginning and end).</note>
  
-De par les achats successifs de nœuds de calcul avec des architectures de génération différenteil 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.+Voir [[documentation:tutorials:submit:accueil|complete documentation to submit a job]]as well as [[documentation:clusters:batch&#les_files_d_attente|the queue list]].
  
-Concrètement le choix de la file d'attente de "production" devrait se faire en fonction de l'objectif voulu :+==== How to choose the adapted queues for my needs? ====
  
-  * si le critère principal est la rapidité de l'exécutionil faut regarder quelles sont les files d'attentes disponibles pour recevoir le jobL'utilisation des commandes du type ''qstat -g c'' devraient être la base de ce choix.  +Due to successive purchases of compute nodes with cores/CPU architectures of different generationit was not possible to define a single queueIt is better to have different queues for each architecturein order to achieve interesting performance for each queue.
-  * 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 surpour 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. +In concrete termsthe choice of the "production" queue should be made according to the desired objective:
-===== GridEngine Les autres commandes utiles =====+
  
-==== Surveiller les jobs ====+  * if the main criterion is the speed of execution, you must look at what are the queues available to accept the job. The use of commands of the type ''qstat -g c'' should help you to chose the intended queue 
 +  * if the main criterion is the large number of resources (//eg// a job with a lot of cores, a job with a lot of RAM,etc), then you have to move towards the queues that have a large number of resources (at least the resources requested by the job), even if waiting time in the queue is greater.
  
-  * Voir tous les jobs d'un utilisateur +Obviously, the above command (''qstat -g c'') and [[documentation:clusters:batch&#les_files_d_attente|the list of queues]] should guide your choice. 
 + 
 +And, of course, when tuning ypur code, you have to choose a test queue that is closest to the intended "production" queue (//i.e.// same type of compute nodes). //Eg// ''r815lin128ib'' was chosen for the production queue, you thus have to run your tests on ''r815_ib_test''
 +===== GridEngine : other useful commands ===== 
 + 
 +==== Checking job status ==== 
 + 
 +  * display job status of a specific user
  
 <code>qstat -u login </code> <code>qstat -u login </code>
  
-  * Voir l'état des files d'attente (et la liste des files d'attente) : +  * display queues status (and list of queues): 
  
 <code>qstat -g c </code> <code>qstat -g c </code>
  
-  * Voir tous les jobs de tous les utilisateurs en exécution (running+  * display nodes status in a given queue:  
 + 
 +<code>qstat -q <queue_name> -f </code> 
 + 
 +    * display the running jobs of all users
  
 <code>qstat -u "*" -s r </code> <code>qstat -u "*" -s r </code>
  
-  * Voir tous les jobs de tous les utilisateurs en attente (pending ou waiting) +  * display the pending jobs of all users
  
 <code>qstat -u "*" -s p </code> <code>qstat -u "*" -s p </code>
  
-  * <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>+  * display the status of a job in progress: 
  
-  * Voir l'état d'un job en cours avec plus de détails (long) : +<code>qstat -j <job_id> | less </code>
  
-<code>qstat -j 87584 -g t | less </code>+  * display the status of a job in progress with more details (longer): 
  
-  * Voir l'état d'un job en cours avec encore plus de détails (long) : +<code>qstat -j <job_id> -g t | less </code>
  
-<code>qstat -j 87584 -g t -s r | less </code>+  * display the status of a job in progress with even more details (even longer):
  
-  * <del>Enlever (clear) l'état Error d'un job :</delne fonctionne plus+<code>qstat -j <job_id> -g t -s r | less </code>
  
-<code>qmod -cj <job_id> </code> 
  
-  * Voir les informations d'un job après son achévement (long) :+  * display information on a job afetr its completion (long):
  
-<code>qacct -j 87584 -f /gridware/psmn/accounting | less</code>+<code>qacct -j <job_id> -f /gridware/psmn/accounting | less</code>
  
-  * Supprimer un job : +  * delete a job: 
  
-<code>qdel 85903 </code>+<code>qdel <job_id> </code>
  
-  * Supprimer un job (forcer) : +  * delete a job (force deletion) : 
  
-<code>qdel -f 109383 </code>+<code>qdel -f <job_id> </code>
  
 ==== Accounting ==== ==== Accounting ====
  
-<note important>Le fichier d'accounting est diffusé sur ''/gridware/psmn/accounting''</note>+<note important>The accounting file is distributed on ''/gridware/psmn/accounting''</note>
  
  
-  * Détails des jobs sur les 30 derniers jours :+  * Job details for the last 30 days:
  
 <code>qacct -f /gridware/psmn/accounting -d 30 -o <login> -j </code> <code>qacct -f /gridware/psmn/accounting -d 30 -o <login> -j </code>
  
-  * Consommation d'heures CPU (utime sur les 30 derniers jours) :+  * CPU hours consumption (utime on the last 30 days):
  
 <code>qacct -f /gridware/psmn/accounting -d 30 -o <login> | tail -1 | awk '{print $3/3600}'</code> <code>qacct -f /gridware/psmn/accounting -d 30 -o <login> | tail -1 | awk '{print $3/3600}'</code>
Ligne 143: Ligne 133:
 <code>qacct -f /gridware/psmn/accounting -q "*" -o <login> -d 30 | awk '{ SUM += $5} END {print SUM/3600}'</code> <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 exemplel'année 2012) :+  * CPU hours consumption(utime from date to date, in this exampleyear 2012):
  
 <code>qacct -f /gridware/psmn/accounting -b 201201010000 -e 201212312359 -o <login> | tail -1 | awk '{print $3/3600}'</code> <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 : ====+==== Troubleshootings: ====
  
-Lancer la commande suivante :+Run the command:
 <code>qstat -g c </code> <code>qstat -g c </code>
  
-et regarder les deux dernières colonnes :+on the output, look at the last two columns:
  
-  * aoACD : Nombre de coeurs qui sont au moins dans un des états suivants :  +  * **aoACD** Number of slots/cores that are at least in one of the following states
-    * a Load threshold alarm  +    * **a** Load threshold alarm  
-    * o Orphaned  +    * **o** Orphaned  
-    * A Suspend threshold alarm  +    * **A**** Suspend threshold alarm  
-    * C Suspended by calendar  +    * **C Suspended by calendar  
-    * D Disabled by calendar+    * **D** Disabled by calendar
  
-  * cdsuE : Nombre de coeurs qui sont au moins dans un des états suivants :  +  * **cdsuE** Number of slots/cores that are at least in one of the following states
-    * c Configuration ambiguous  +    * **c** Configuration ambiguous  
-    * d Disabled  +    * **d** Disabled  
-    * s Suspended  +    * **s** Suspended  
-    * u Unknown  +    * **u** Unknown  
-    * E Error+    * **E** Error
  
-==== Status (etats) de jobs possibles : ====+==== Possible job status: ====
  
-  * d(eletion), +  * **d**(eletion), 
-  * E(rror), +  * **E**(rror), 
-  * h(old), +  * **h**(old), 
-  * r(unning), +  * **r**(unning), 
-  * R(estarted), +  * **R**(estarted), 
-  * s(uspended), +  * **s**(uspended), 
-  * S(uspended), +  * **S**(uspended), 
-  * t(ransfering), +  * **t**(ransfering), 
-  * T(hreshold), +  * **T**(hreshold), 
-  * w(aiting).+  * **w**(aiting).
  
-===== GridEngine : Variables d'environnement =====+===== GridEngine: Environment variables =====
  
-<note important>''#$'' est réservé à GridEngine pour effectuer des transmissions de paramètres (ex: ''#$ -cwd'' ou ''#$ -V'').</note>+<note important>''#$'' is dedicated to GridEngine to transmit parameters (ex: ''#$ -cwd'' or ''#$ -V'').</note>
  
-  * SGE_O_WORKDIR : répertoire d'où à été soumis le job, utilisable dans les scripts +  * SGE_O_WORKDIR : directory where the job was submitedre-usable in scripts 
-  * NSLOTS : nombre de coeurs demandé +  * NSLOTS : number of slots/cores requested 
-  * JOB_ID : ID du job (unique) assigné par GridEngine +  * JOB_ID : job id (unique) assigned by GridEngine 
-  * JOB_NAME : nom du job (-N) +  * JOB_NAME : name of the job (-N) 
-  * PE_HOSTFILE : fichier de hosts+  * PE_HOSTFILE : hosts files (for MPI jobs)
  
  
-===== Références : =====+===== References : =====
  
   * http://wiki.gridengine.info/wiki/index.php/Utilities   * http://wiki.gridengine.info/wiki/index.php/Utilities
Ligne 205: Ligne 195:
   * http://wiki.ibest.uidaho.edu/index.php/Tutorial:_Creating_dependent_jobs :!:   * http://wiki.ibest.uidaho.edu/index.php/Tutorial:_Creating_dependent_jobs :!:
   * https://sites.google.com/site/anshulkundaje/inotes/programming/clustersubmit/sun-grid-engine :!:   * 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)+  * http://gridscheduler.sourceforge.net/htmlman/htmlman1/qsub.html?pathrev=V62u5_TAG (ENVIRONMENT VARIABLES)