Un problème avec l'espace alloué à mon compte?

Bonjour,

Je pense que j'ai peut-être un problème avec l'espace alloué à mon compte (dils_oedulis). J'obtiens toujours cette erreur lorsque j'essaie d'exécuter un travail :

sbatch --partition=long --time=72:00:00 --job-name="oys-dils" --mem=500G --wrap="./DILS_2pop.sh lila_configtest.yaml"

slurmstepd-cpu-node-2: error: Detected 1 oom_kill event in StepId=43107790.batch. Some of the step tasks have been OOM Killed.

J'ai consulté de nombreux messages dans ce forum communautaire et le conseil semble être d'augmenter la mémoire demandée pour le travail. J'ai fait cela plusieurs fois, même jusqu'à 500G, mais le travail ne s'exécute toujours pas. Cela me surprend également qu'il faille autant de mémoire, et c'est inquiétant parce que j'ai besoin d'exécuter le job sur un fichier plus gros une fois que je l'aurai fait fonctionner. Je vois que mon projet a très peu de mémoire restante, peut-être est-ce la cause du problème ?

Merci beaucoup pour votre aide et je m'excuse si j'ai oublié quelque chose sur un forum quelque part ! Je m'excuse également pour les fautes de français.

Bonjour Lila,

Si je regarde vos derniers jobs, on voit en effet que des jobs sont tués par manque de mémoire:

$ sacct -S 2024-12-17 -o JobID%15,JobName%30,Account%20,Partition,ReqMem,MaxRSS,NTasks,AllocCPUS,Timelimit,Elapsed,State%20,ExitCode -u lilacn
          JobID                        JobName              Account  Partition     ReqMem     MaxRSS   NTasks  AllocCPUS  Timelimit    Elapsed                State ExitCode 
--------------- ------------------------------ -------------------- ---------- ---------- ---------- -------- ---------- ---------- ---------- -------------------- -------- 
       43107223                       oys-dils         dils_oedulis       long       500G                              1 3-00:00:00   00:02:39               FAILED      1:0 
 43107223.batch                          batch         dils_oedulis                           37684K        1          1              00:02:39               FAILED      1:0 
       43107226  snakejob.fasta2ABC_2pops.5.sh         dils_oedulis       fast     40000M                              2   02:00:00   00:02:04        OUT_OF_MEMORY    0:125 
 43107226.batch                          batch         dils_oedulis                        27709076K        1          2              00:02:04        OUT_OF_MEMORY    0:125 
       43107788                       oys-dils         dils_oedulis       long       500G                              1 3-00:00:00   00:03:10               FAILED      1:0 
 43107788.batch                          batch         dils_oedulis                           37688K        1          1              00:03:10               FAILED      1:0 
       43107790  snakejob.fasta2ABC_2pops.5.sh         dils_oedulis       fast     40000M                              2   02:00:00   00:02:44        OUT_OF_MEMORY    0:125 
 43107790.batch                          batch         dils_oedulis                        31233788K        1          2              00:02:44        OUT_OF_MEMORY    0:125

En regardant un peu plus, j'ai l'impression que vous lancez un workflow avec snakemake.
Lorsque vous lancez ce worflow, vous demandez en effet bcp de mémoire (500G).
Ce workflow va alors lancer un autre job, qui lui aura 40G de mémoire et va échouer avec l'erreur "Out Of Memory (OOM)".
Le workflow lancé précédemment s'arrête alors ("Failed").
Il faut donc augmenter la mémoire du job lancé par snakemake et non la mémoire du job "snakemake".

Tout au mois, j'ai l'impression que c'est ça.
Vous pouvez nous donner les scripts en questions si ça ne fonctionne toujours pas.

1 « J'aime »

Bonjour @dbenaben

Merci beaucoup pour votre solution précédente, elle m'a été très utile ! Cependant, j'utilise à nouveau un fichier plus volumineux et j'ai rencontré des problèmes de limite de temps à l'une des étapes (« modelComparison »). Je me suis rendu compte qu'il fallait que mon fichier de configuration json autorise les tâches longues de plus de 24 heures. J'ai donc modifié le début de mon fichier json comme suit :

{
"default" :
{
"node" : 1,
"ntasks" : 1,
"n" : 1,
"cpusPerTask" : 1,
"memPerCpu" : 50000,
"time" : "48:00:00",
"partition" : "long"
},
"fasta2ABC_2pops" :
{
"cpusPerTask" : 2,
"time" : "5:00:00",
"memPerCpu" : 50000
},
"RNAseqFGT" :
{
"cpusPerTask" : 1,
"time" : "5:00:00",
"memPerCpu" : 50000
},
"modelComparison" :
{
"cpusPerTask" : 8,
"time" : "125:00:00",
"memPerCpu" : 20000
},
etc.

Mais maintenant, le problème est que le travail s'exécute incroyablement lentement (il n'a pas dépassé l'étape 1 depuis jeudi), ce qui me fait penser que j'ai peut-être fait quelque chose de mal.

Pourriez-vous me conseiller sur ce qui pourrait être le problème ?

Merci beaucoup pour votre aide et votre patience !

Traduit avec DeepL.com (version gratuite)

Bonjour,

Difficile à dire plus sans plus de détail (c'est quoi l'étape "1", lent par rapport à quoi ?, lent à l'exécution ou pending ? etc).
Il faut nous donner le maximum d'élément et le jobid.

Vous lancer un job (45589207) avec 1 CPU et 50Go RAM qui ne fait rien (CPU=0.0%, MEM=0%), est-ce vraiment nécessaire de monopoliser 50G RAM et même 1 CPU ?

Vous avez ensuite un job (45589209) qui s'est exécuté en (8 minutes) et une centaine de jobs avec un time limit de 2j sur la partition fast:

sacct -S 2025-04-10 -o JobID%15,JobName%20,Account%20,Partition,ReqMem,MaxRSS%15,NTasks,AllocCPUS,Timelimit,Elapsed,State%20,ExitCode,Submit,Node -u lilacn
          JobID              JobName              Account  Partition     ReqMem          MaxRSS   NTasks  AllocCPUS  Timelimit    Elapsed                State ExitCode              Submit        NodeList 
--------------- -------------------- -------------------- ---------- ---------- --------------- -------- ---------- ---------- ---------- -------------------- -------- ------------------- --------------- 
       45589207             oys-dils         dils_oedulis       long        50G                                   1 12-12:00:+ 3-23:20:19              RUNNING      0:0 2025-04-10T15:08:51     cpu-node-99 
 45589207.batch                batch         dils_oedulis                                              1          1            3-23:20:19              RUNNING      0:0 2025-04-10T15:08:52     cpu-node-99 
       45589209 snakejob.fasta2ABC_+         dils_oedulis       fast    100000M                                   2   05:00:00   00:08:43            COMPLETED      0:0 2025-04-10T15:09:02      cpu-node-8 
 45589209.batch                batch         dils_oedulis                             28286244K        1          2              00:08:43            COMPLETED      0:0 2025-04-10T15:09:03      cpu-node-8 
       45589377 snakejob.simulation+         dils_oedulis       fast     50000M                                   0 2-00:00:00   00:00:00              PENDING      0:0 2025-04-10T15:17:55   None assigned 
       45589378 snakejob.simulation+         dils_oedulis       fast     50000M                                   0 2-00:00:00   00:00:00              PENDING      0:0 2025-04-10T15:17:55   None assigned 
       45589379 snakejob.simulation+         dils_oedulis       fast     50000M                                   0 2-00:00:00   00:00:00              PENDING      0:0 2025-04-10T15:17:55   None assigned 
       45589380 snakejob.simulation+         dils_oedulis       fast     50000M                                   0 2-00:00:00   00:00:00              PENDING      0:0 2025-04-10T15:17:55   None assigned 
       45589381 snakejob.simulation+         dils_oedulis       fast     50000M                                   0 2-00:00:00   00:00:00              PENDING      0:0 2025-04-10T15:17:55   None assigned 
       45589382 snakejob.simulation+         dils_oedulis       fast     50000M                                   0 2-00:00:00   00:00:00              PENDING      0:0 2025-04-10T15:17:55   None assigned 
       45589383 snakejob.simulation+         dils_oedulis       fast     50000M                                   0 2-00:00:00   00:00:00              PENDING      0:0 2025-04-10T15:17:55   None assigned 
       45589384 snakejob.simulation+         dils_oedulis       fast     50000M                                   0 2-00:00:00   00:00:00              PENDING      0:0 2025-04-10T15:17:55   None assigned 
       45589385 snakejob.simulation+         dils_oedulis       fast     50000M                                   0 2-00:00:00   00:00:00              PENDING      0:0 2025-04-10T15:17:56   None assigned 
       45589386 snakejob.simulation+         dils_oedulis       fast     50000M                                   0 2-00:00:00   00:00:00              PENDING      0:0 2025-04-10T15:17:56   None assigned 
       45589387 snakejob.simulation+         dils_oedulis       fast     50000M                                   0 2-00:00:00   00:00:00              PENDING      0:0 2025-04-10T15:17:56   None assigned 
       45589388 snakejob.simulation+         dils_oedulis       fast     50000M                                   0 2-00:00:00   00:00:00              PENDING      0:0 2025-04-10T15:17:56   None assigned 
       45589389 snakejob.simulation+         dils_oedulis       fast     50000M                                   0 2-00:00:00   00:00:00              PENDING      0:0 2025-04-10T15:17:56   None assigned 
       45589390 snakejob.simulation+         dils_oedulis       fast     50000M                                   0 2-00:00:00   00:00:00              PENDING      0:0 2025-04-10T15:17:56   None assigned 
       45589391 snakejob.simulation+         dils_oedulis       fast     50000M                                   0 2-00:00:00   00:00:00              PENDING      0:0 2025-04-10T15:17:56   None assigned 
       45589392 snakejob.simulation+         dils_oedulis       fast     50000M                                   0 2-00:00:00   00:00:00              PENDING      0:0 2025-04-10T15:17:56   None assigned 
       45589393 snakejob.simulation+         dils_oedulis       fast     50000M                                   0 2-00:00:00   00:00:00              PENDING      0:0 2025-04-10T15:17:56   None assigned 
       45589394 snakejob.simulation+         dils_oedulis       fast     50000M                                   0 2-00:00:00   00:00:00              PENDING      0:0 2025-04-10T15:17:57   None assigned 
[...]

Ces jobs ne seront jamais exécutés puisque vous demandez la partition fast et un timelimit de 2 jours.
Ils restent donc en attente en raison de la PartitionTimeLimit.

TimeLimit=2-00:00:00
Partition=fast 
JobState=PENDING
Reason=PartitionTimeLimit

Théoriquement, ils pourraient être lancé si un administrateur augmente le temps maximal pour la partition (du coup slurm attends). Mais on ne fait jamais ça.

Il faut donc ajuster le timelimit de vos jobs (ou changer pour la partition fast).

Bonjour,

Merci beaucoup pour votre réponse ! Je suis confus, car j'étais sûr que je demandais la partition longue. Je lance le snakemake avec cette commande :

sbatch --partition=long --time=300:00:00 --job-name="oys-dils" --mem-per-cpu=50G --wrap="./DILS_2pop.sh lila_configtest.yaml"

Et j'ai ensuite configuré mon fichier de configuration pour qu'il demande par défaut la partition longue :

{
"default" :
{
"node" : 1,
"ntasks" : 1,
"n" : 1,
"cpusPerTask" : 1,
"memPerCpu" : 50000,
"time" : "48:00:00",
"partition" : "long"
},

Je pense que je dois être confus/manquer quelque chose. Je m'excuse car je suis nouveau dans l'utilisation de snakemake et de ce cluster.

Et je suis désolé de devoir préciser que maintenant il semble démarrer l'étape « modelComparison » mais ne crée jamais de sortie. Avant d'ajuster les paramètres par défaut, l'étape « modelComparison » s'exécutait, créait de nombreux fichiers de sortie et finissait par se planter lorsqu'elle n'avait plus de temps.

Je m'excuse si je demande trop d'espace/temps pour des tâches simples, je n'arrêtais pas de manquer de temps et d'espace et j'ai donc pensé que je devais les augmenter, pourriez-vous me conseiller sur les meilleures limites d'espace/temps à demander ?

Merci beaucoup pour votre aide et votre patience,

Lila

Je n'y connaît pas grand chose en snakemake mais peut-être que @team.workflow pourra vous aider.

pourriez-vous me conseiller sur les meilleures limites d'espace/temps à demander ?

Malheureusement, il n'y a pas de secrets.
Côté CPU, il faut simplement demander autant de CPU que de threads/process (option des programmes).
Côté RAM... c'est l'expérience, l'essai/erreur ou la vérification en cours ou une fois son job terminé qui permets d'ajuster.
Côté temps... idem. L'expérience ou par essai/erreur.
Plus d'infos: SLURM job efficiency - IFB Core Cluster Documentation

Merci beaucoup pour vos conseils!

@team.workflow Merci de me conseiller sur la façon dont je pourrais permettre à mon exécution de snakemake de fonctionner.