Problème d'entree/sortie

Bonjour,
Je rencontre des problèmes d'entrée/sortie sur un de mes jobs. Ce dernier semble encore actif mais le fichier de sortie standard du job en question ne semble plus être mis a jour (le dernier accès au fichier a été effectué voici plus de 24h). Pour les fichiers de sortie engendrés par le logiciel lancé ici par ce job, la situation est un peu différente : les accès en i/o semblent se poursuivre (d’après ls -alith) mais le contenu des fichiers de sortie n'est plus mis a jour (depuis plusieurs heures apparemment). L'ID du job : 6070781.
Bien cordialement,
-Stephane-

Bonjour Stephane,

Malheureusement je ne trouve pas d'anomalies (pas d'erreurs dans les logs Slurm, pas d'erreurs d'espace disque, etc.).
En effet, le job semble encore tourner (un CPU est bien utilisé).
Si vous pensez que l'absence de sortie est anormale, je crois qu'il vaut mieux tuer le job et le relancer (ou si c'est possible le laisser tourner et en relancer un autre).

Nous restons disponible pour en discuter.

Bonne journée

Bonjour,

Le problème persiste malheureusement. Apres plusieurs jours de calcul, l’écriture en sortie standard semble s'interrompre dans un premier temps, puis quelques heures plus tard, ce sont l'ensemble des sorties qui ne se font plus... Ce décalage indique que le problème ne peut pas venir d'une boucle infinie ou un comportement du genre qui fasse tourner mon outil en roue libre sans aucune i/o. Je viens de lancer un nouveau job avec un paramétrage different et attends de voir si le problème persiste.

Cordialement,

-Stephane-

Bonjour,

Le job 6283144 a cessé de produire des sorties standards depuis plusieurs jours. Les dates de modifications des fichiers des sorties indiquent que ces derniers continuent a être modifié mais leur contenu n'est plus mis a jour depuis que la sortie standard ne se fait plus. J'ai lancé le meme job sur mon ordinateur portable et celui-ci tourne normalement. Le problème semble donc bien venir du cluster plutôt que de l'outil utilisé ici. Une idée?

Cordialement,

-Stephane-

Bonjour Stéphane,

Difficile d’identifier la cause. Je ne vois pas d'erreur.
Mes deux seules pistes pour l'instant concernent le stockage:

  • Un dépassement de quota temporaire (votre home occupe actuellement 83Go sur les 100Go alloués). Dans ce cas, l’utilisation de l'espace projet phyml résoudrait le problème. Mais normalement ça déclenche un message d'erreur dans le fichier de sortie.
  • Nous avons rencontré des anomalies avec le stockage actuel et avons également effectué quelques opérations sur ce dernier. Il est possible que le job est mal réagit à ces opérations. Mais nous n'avons pas eu d'autres signalement de problème.

Pour aller plus loin, nous aurions besoin de plus d'information (script, fichier de sortie), de faire le debug en "live" (tout au moins surveiller le job) ou idéalement de pouvoir reproduire le problème.

Bonne journée

Bonjour,

Merci de votre réponse.

Pour lancer le job en question : cd /shared/home/sguindon/denis/AE/90/3; sbatch ./rice.sh;
Le script rice.sh lance la commande suivante: phyrex --xml=phyrex.xml ou phyrex est le binaire et phyrex.xml un fichier de configuration.

Bon après-midi,

-Stéphane-

Bonjour,

Quelques infos supplémentaires ici. Lorsque je demande 2Go de mémoire:
#SBATCH --mem-per-cpu=2GB
le problème d'i/o décrit ci-dessus se produit plus rapidement que lorsque je
ne demande qu'1Go.

Je viens de lancer un job avec 500MB et celui-ci se poursuit au-dela de ce
que l'on observe avec 2GB...

Bonne journée,

-Stéphane-

Bonjour,

Le meme job, avec 500MB de mémoire, présente les memes symptômes de problèmes d'i/o, mais un peu plus tard dans l'execution. Pour résumer, plus on demande de mémoire, plus les problèmes d'i/o surviennent tot.

Bonne journee,

-Stephane-

Bonjour Stéphane,

Merci pour tous ces complément d'info.

J'arrive à reproduire le phénomène (job qui tourne, fichier de sortie qui n'est plus mis à jours).

Un strace sur le PID semble bien pointer un problème avec le stockage: ENOSPC (No space left on device)
L'erreur est étrange puisqu'il y a de l'espace disponible et aucun quota ne semble atteint
Le programme ne se termine pas et boucle en essayant d'écrire.

Extrait de la trace
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
write(5, "\n", 1)                       = -1 ENOSPC (No space left on device)
write(5, "4780800\t", 8)                = -1 ENOSPC (No space left on device)
write(5, "-21928.9\t", 9)               = -1 ENOSPC (No space left on device)
write(5, "-6586.65\t", 9)               = -1 ENOSPC (No space left on device)
write(5, "-15612.9\t", 9)               = -1 ENOSPC (No space left on device)
write(5, "0.000172826\t", 12)           = -1 ENOSPC (No space left on device)
write(5, "0.000184574\t", 12)           = -1 ENOSPC (No space left on device)
write(5, "5.61741\t", 8)                = -1 ENOSPC (No space left on device)
write(5, "0.569116\t", 9)               = -1 ENOSPC (No space left on device)
write(5, "2.59028\t", 8)                = -1 ENOSPC (No space left on device)
write(5, "3.51422\t", 8)                = -1 ENOSPC (No space left on device)
write(5, "0.340952\t", 9)               = -1 ENOSPC (No space left on device)
write(5, "0.820212\t", 9)               = -1 ENOSPC (No space left on device)
write(5, "0.000178404\t", 12)           = -1 ENOSPC (No space left on device)
write(5, "0.0491122\t", 10)             = -1 ENOSPC (No space left on device)
write(5, "1.89979\t", 8)                = -1 ENOSPC (No space left on device)
write(5, "0\t", 2)                      = -1 ENOSPC (No space left on device)
write(5, "2.21094\t", 8)                = -1 ENOSPC (No space left on device)
write(5, "1994\t", 5)                   = -1 ENOSPC (No space left on device)
write(5, "72\t", 3)                     = -1 ENOSPC (No space left on device)
write(5, "212\t", 4)                    = -1 ENOSPC (No space left on device)
write(5, "1649.81\t", 8)                = -1 ENOSPC (No space left on device)
write(5, "41.5747\t", 8)                = -1 ENOSPC (No space left on device)
write(5, "1.71525\t", 8)                = -1 ENOSPC (No space left on device)
write(5, "4\t", 2)                      = -1 ENOSPC (No space left on device)
write(5, "11.333\t", 7)                 = -1 ENOSPC (No space left on device)
write(5, "1\t", 2)                      = -1 ENOSPC (No space left on device)
write(5, "1\t", 2)                      = -1 ENOSPC (No space left on device)
write(5, "1.0865\t", 7)                 = -1 ENOSPC (No space left on device)
write(5, "1.28314\t", 8)                = -1 ENOSPC (No space left on device)
write(5, "0.188119\t", 9)               = -1 ENOSPC (No space left on device)
write(5, "0.0594059\t", 10)             = -1 ENOSPC (No space left on device)
write(5, "0.267327\t", 9)               = -1 ENOSPC (No space left on device)
write(5, "0.217822\t", 9)               = -1 ENOSPC (No space left on device)
write(5, "9.90099e-09\t", 12)           = -1 ENOSPC (No space left on device)
write(5, "0.039604\t", 9)               = -1 ENOSPC (No space left on device)
write(5, "0.0181818\t", 10)             = -1 ENOSPC (No space left on device)
write(5, "0.0818182\t", 10)             = -1 ENOSPC (No space left on device)
write(5, "0.759615\t", 9)               = -1 ENOSPC (No space left on device)
write(5, "0.914573\t", 9)               = -1 ENOSPC (No space left on device)
write(5, "0.035\t", 6)                  = -1 ENOSPC (No space left on device)
write(5, "0.315789\t", 9)               = -1 ENOSPC (No space left on device)
write(5, "0.819458\t", 9)               = -1 ENOSPC (No space left on device)
write(5, "9.90099e-09\t", 12)           = -1 ENOSPC (No space left on device)
write(5, "0.0693069\t", 10)             = -1 ENOSPC (No space left on device)
write(5, "9.90099e-09\t", 12)           = -1 ENOSPC (No space left on device)
write(5, "1\t", 2)                      = -1 ENOSPC (No space left on device)
write(5, "0.035\t", 6)                  = -1 ENOSPC (No space left on device)
write(5, "0.42723\t", 8)                = -1 ENOSPC (No space left on device)
write(5, "0.296296\t", 9)               = -1 ENOSPC (No space left on device)
write(5, "0.197531\t", 9)               = -1 ENOSPC (No space left on device)
write(5, "1.5\t", 4)                    = -1 ENOSPC (No space left on device)
write(5, "7.59375\t", 8)                = -1 ENOSPC (No space left on device)
write(5, "0.00228366\t", 11)            = -1 ENOSPC (No space left on device)
write(5, "1.5\t", 4)                    = -1 ENOSPC (No space left on device)
write(5, "1e+20\t", 6)                  = -1 ENOSPC (No space left on device)
write(5, "1e-10\t", 6)                  = -1 ENOSPC (No space left on device)
write(4, "\ntree 11951 [&lnP=-6586.654656,p"..., 8192) = -1 ENOSPC (No space left on device)
write(4, "\nend;", 5)                   = -1 ENOSPC (No space left on device)
fstat(4, {st_mode=S_IFREG|0644, st_size=101310755, ...}) = 0
lseek(4, 101310750, SEEK_SET)           = 101310750
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
write(1, "\n.    4780800       phyrex_indel"..., 107) = -1 ENOSPC (No space left on device)
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHarrive pas à se terminerAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0
rt_sigaction(SIGINT, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, {0x5299c0, [], SA_RESTORER|SA_INTERRUPT|SA_NODEFER|SA_RESETHAND, 0x2b476fd612f0}, 8) = 0

Je pensais au bug suivant (https://github.com/moosefs/moosefs/issues/201) mais cela a été à priori corrigé dans notre version (3.0.112).
@gseith Une idée ?

@stephaneguindon Si c'est bien ça, comme solution temporaire de contournement, on peut essayer de travailler dans un dossier local (/tmp) et à la fin du job, déplacer le résultat dans son home:
Par exemple:

FILE=slurm-${SLURM_JOB_ID}-${HOSTNAME}.out
OUTPUT_FILE_TMP="/tmp/${FILE}"
OUTPUT_FILE="${HOME}/${FILE}"

macommande &> ${OUTPUT_FILE_TMP}

mv ${OUTPUT_FILE_TMP} ${OUTPUT_FILE}

On ne verra plus la sortie en direct (et donc l'evolution du job) mais faute de mieux pour l'instant...

Bon après-midi

Ok, merci. Je viens de lancer un job ou les i/os se font dans un repertoire temporaire.
-Stephane-