SGE - Observer des jobs

Pour observer de plus près le comportement d’un job, on peut utiliser la commandes qstat.

Extrait du man

L’aide de la commande précise :

# qstat --help
usage: qstat [options]
[-ext] view additional attributes
[-f] full output
[-F [resource_attributes]] full output and show (selected) resources of queue(s)
[-g c] display cluster queue summary
[-g d] display all job-array tasks (do not group)
[-g t] display all parallel job tasks (do not group)
[-j [job_identifier_list]] show scheduler job information
[-q wc_queue_list] print information on given queue
[-u user_list] view jobs of this user list
[-U user_list] select only queues where these users have access
[-urg] display job urgency information
[-pri] display job priority information

Statut des jobs

Les jobs passent généralement par plusieurs statuts au cours de leur exécution. Les statuts typiques sont pending, running, suspending, hold et queue wait :

  • p : pending
  • r : running
  • z : zombie
  • qw : queue wait
  • h : hold

Les autres status se trouvent également dans le MAN de qstat ou ici : http://n0tes.fr/2022/12/04/SGE-Statut-des-jobs

Les jobs dans les queues

Observer les jobs

Pour observer les jobs sur SGE on utilise qstat :

# qstat
queuename qtype resv/used/tot. load_avg arch states
------------------------------------------------------------------------------
[email protected] BIP 0/2/2 0.01 amd
2231 0 maths amy r 07/13/22
8347 0 pi farnsworth r 07/13/22
-----------------------------------------------------------------------------
[email protected] BIP 2/4/4 20.03 amd
2232 0 blackhole zoidberg r 07/13/22
2233 0 physic cubert r 07/13/22
2235 0 fusion amy r 07/13/22
2236 0 molecular amy r 07/13/22
################################################################################
- PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS -
################################################################################
2237 5 word cubert qw 07/13/96 20:32:07
2238 0 fission farnsworth Eqw 07/13/96 20:31:43

Selon la configuration de votre SGE, vous ne verrez que les queues et leurs états sans voir les jobs. Pour y remédier on peut toujours préciser l’option -u :

# qstat -u \*
job-ID prior name user state submit/start at queue slots ja-task-ID
----------------------------------------------------------------------------------------------------
8248 0.60333 T1000 zoidberg r 02/01/2023 15:26 [email protected] 19
8249 0.60333 T1000 zoidberg r 02/01/2023 15:26 [email protected] 19
8251 0.60333 T1000 zoidberg r 02/01/2023 15:27 [email protected] 19
8292 0.50033 Sroninger cubert r 02/01/2023 15:31 [email protected] 1
8300 0.50033 Sroninger cubert r 02/01/2023 15:31 [email protected] 1
8301 0.50033 Sroninger cubert r 02/01/2023 15:31 [email protected] 11
8325 0.50033 Script1 amy z 02/01/2023 16:20 [email protected] 1
8326 0.50033 Sroninger cubert r 02/01/2023 16:21 [email protected] 1
8347 0.56000 T1000 farnsworth Eqw 02/01/2023 16:18 [email protected] 10
8327 0.50008 Sroninger farnsworth qw 02/01/2023 15:38 1
8328 0.50008 Sroninger farnsworth w 02/01/2023 15:38 1

Jobs en erreur

Pour avoir des informations les jobs en erreur, on utilise l’option -j :

# qstat -j // donne information générale sur toutes les erreur

Et pour cibler un job en particulier on précise son jobID :

# qstat -j <job> // donne information générale sur erreur sur 1 job en particulier

Exemples

Plusieurs jobs en erreur :

# qstat -j
scheduling info: queue instance "time_queue.q@mynode10" dropped because it is temporarily not available
queue instance "time_queue_rh7@mynode17" dropped because it is temporarily not available
queue instance "time_queue_rh7@mynode19" dropped because it is temporarily not available
queue instance "time_queue_rh7@mynode27" dropped because it is temporarily not available
queue instance "time_queue_rh7@mynode22" dropped because it is temporarily not available
Jobs can not run because the resource requirements can not be satified
398435
Jobs dropped because of error state
368813, 368814, 368816, 368819, 368820, 368821, 368823, 368824,
368825, 368829, 368830, 368831, 368832, 368833, 368834, 368835,
368836, 368837, 368838, 368844
Job dropped because of job dependencies
398436, 398460

Problème de groupe

Le problème ici était que l’utilisateur “farnsworth” ne figurait pas dans le bon groupe et n’était pas autorisé à utiliser la queue.

# qstat -explain c -j 8347
==============================================================
job_number: 8347
exec_file: job_scripts/8347
submission_time: Tue Jun 02 16:18:18 2023
owner: farnsworth
uid: 236
group: SavantFou
gid: 1233
sge_o_home: /home/users/farnsworth
sge_o_log_name: farnsworth
[…]
binding: NONE
job_type: NONE
error reason 1: can't get password entry for user "farnsworth". Either user does not exist or error with NIS/LDAP etc.
scheduling info: Job is in error state

Problème d’OS

Ici le script envoie sur toutes les queues mais le système spécifié n’est pas disponible.

# qstat -j 466796
==============================================================
job_number: 466796
exec_file: job_scripts/466796
submission_time: Wed Sep 28 21:56:38 2022
owner: emmetbrown
uid: 6466
group: savantfou
gid: 706
sge_o_home: /home/emmetbrown
sge_o_log_name: emmetbrown
[...]
env_list: HOME=/home/emmetbrown,TMPDIR=NONE,TST=NONE,CODE=timemachine,PROJET=NONE
script_file: TIMEMACHINE.cmd
error reason 1: 09/28/2022 14:43:47 [0:6458]: exit_status of prolog = 7
1: 09/28/2022 14:43:53 [0:8857]: exit_status of prolog = 7
scheduling info: queue instance "time_queue@mynode17" dropped because it is temporarily not available
queue instance "time_queue@mynode23" dropped because it is temporarily not available
(-l arch=lx-amd,classe=common|rh7|rh8,os=rh7|rh8) cannot run at host "mynode16" because it offers only hf:os=rh6
(-l arch=lx-amd,classe=common|rh7|rh8,os=rh7|rh8) cannot run at host "mynode12" because it offers only hf:os=rh6
(-l classe=common|rh6|rh7) cannot run in queue "particule.queue" because of cluster queue

Problème de volume

Le script cherche à atteindre un répertoire/volume qui n’existe pas.

# qstat -j 186666
==============================================================
job_number: 186666
exec_file: job_scripts/186666
submission_time: Mon Aug 22 15:45:59 2022
owner: JohnConnor
[...]
error reason 1: 08/22/2022 15:46:09 [634:221906]: error: can't chdir to /home/JohnConnor/Resultats: No such file or directory
scheduling info: queue instance "[email protected]" dropped because it is full
Job is in error state

Il faut vérifier que le répertoire/volume soit bien monté sur tous les noeuds. Dans un 1er temps, récupérer les informations dans Netapp (agreggat par exemple) et ajouter le volume sur le noeud dans son /etc/fstab :

[adm@node66 ~] cat /etc/fstab
[...]
aggragat22:/volume/volume_travail /home/JohnConnor/Resultats nfs [...]

Relancer un job en erreur

Pour relancer un job en erreur, il est possible d’utiliser la commande qmod en spécifiant le jobID :

# qmod -cj <jobID 1> .... <jobID N>

Supprimer un job

pour supprimer un job, on utilise qdel suivi du jobID :

# qdel -f <jobid>

Documentation

MAN qmod
https://manpages.ubuntu.com/manpages/jammy/en/man5/sge_status.5.html

> Partager <