Mémoire RAM utilisée par R-Studio

Bonjour
J’utilise R-Studio depuis le JupyterLab. Est-ce qu’il y a une possibilité de voir la RAM utilisée à un instant donné ?
Je fais une intégration de plusieurs datasets scRNA avec Seurat (une centaine d’échantillons), et une étape de l’intégration plante par manque de mémoire. Du coup je teste en augmentant progressivement la mémoire allouée lors de la création du serveur.

L’idée est donc de pouvoir voir la montée de l’utilisation, si après quelques minutes il a déjà dépassé les 100 Go je sais que ça va planter après une heure.

Merci !
Marc

Bonjour,

Avec cette commande:

cat /sys/fs/cgroup/memory/slurm/uid_2203/job_votre_job_id/memory.usage_in_bytes

Et pour consulter la mémoire totale allouée pour le job:

cat /sys/fs/cgroup/memory/slurm/uid_2203/job_votre_job_id/memory.limit_in_bytes

Cordialement.

Merci pour la réponse.
Juste une précision : je démarre RStudio depuis le JupyterLab, comment retrouver le job_id ?
Bonne journée

Depuis la variable d’environnement $SLURM_JOB_ID.

ok merci
Marc

désolé j’ai encore un problème, /sys/fs/cgroup/memory/slurm/ n’existe pas :

[diedisheim@ipop-up ~]$ cat /sys/fs/cgroup/memory/slurm/uid_2203/job_55582847/memory.usage_in_bytes
cat: /sys/fs/cgroup/memory/slurm/uid_2203/job_55582847/memory.usage_in_bytes: Aucun fichier ou dossier de ce type

Il n’y a pas de dossier slurm dans memory :

[diedisheim@ipop-up ~]$ ls /sys/fs/cgroup/memory/
cgroup.clone_children  memory.force_empty              memory.kmem.tcp.failcnt             memory.limit_in_bytes            memory.memsw.usage_in_bytes      memory.soft_limit_in_bytes  notify_on_release
cgroup.event_control   memory.kmem.failcnt             memory.kmem.tcp.limit_in_bytes      memory.max_usage_in_bytes        memory.move_charge_at_immigrate  memory.stat                 release_agent
cgroup.procs           memory.kmem.limit_in_bytes      memory.kmem.tcp.max_usage_in_bytes  memory.memsw.failcnt             memory.numa_stat                 memory.swappiness           system.slice
cgroup.sane_behavior   memory.kmem.max_usage_in_bytes  memory.kmem.tcp.usage_in_bytes      memory.memsw.limit_in_bytes      memory.oom_control               memory.usage_in_bytes       tasks
memory.failcnt         memory.kmem.slabinfo            memory.kmem.usage_in_bytes          memory.memsw.max_usage_in_bytes  memory.pressure_level            memory.use_hierarchy        user.slice

Est-ce que memory.usage_in_bytes est localisé ailleurs ?

j’ai essayé avec ça:

[diedisheim@ipop-up ~]$ sstat -j 55582847 --format=JobID,MaxRSS,AveRSS,NTasks
JobID MaxRSS AveRSS NTasks


55582847.0 154497984K 140104180K 1

MaxRSS correspond bien au maximum de mémoire utilée à un instant t depuis la création de la tâche ?

C’est normal, vous lancez la commande depuis la console ipop-up (qui sert juste à soumettre des jobs). Il faut la lancer depuis le noeud qui fait tourner le job (ce qui est le cas quand vous êtes dans jupyterlab : l’instance jupyter tourne sur le noeud de calcul).

Pour votre seconde question, a priori oui.

je ne suis pas sûr de comprendre le premier point : j’ai lancé les commandes depuis une connexion ssh sur ipopup (pas depuis le terminal de R-Studio), ça correspond bien au “noeud qui fait tourner le job” ?

Non, la console ipop-up ne fait pas tourner de jobs.

Les jobs sont soumis via slurm à un noeud de calcul (cpu-nodeXX ou gpu-nodeXX).

ok j’avais compris l’inverse. Du coup je le lance depuis le Jupyter, mais cette fois c’est cgroup qui apparait vide :

diedisheim@gpu-node15:/shared/projects/immediab/schwann2025/RawData$ cat /sys/fs/cgroup/memory/slurm/uid_2203/job_55598936/memory.usage_in_bytes
cat: /sys/fs/cgroup/memory/slurm/uid_2203/job_55598936/memory.usage_in_bytes: No such file or directory
diedisheim@gpu-node15:/shared/projects/immediab/schwann2025/RawData$ ls /sys/fs/cgroup
diedisheim@gpu-node15:/shared/projects/immediab/schwann2025/RawData$ 

Par ailleurs, après plusieurs test, 256 Go de RAM sont insuffisant, y-a-t’il une possibilité d’avoir exceptionnellement plus de RAM pour lancer une session de RStudio ? Je ne dois pas être tès loin en terme de besoin:

  • mon dataset regroupe 5 projet
  • la normalisation de chaque échantillon par SCtransform se fait en deux étapes pour chaque échantillon
  • actuellement les 256 Go sont atteints lors de la 2ème étape pour le 5è échantillon, donc la toute dernière étape

En notant que SCtransform est bien plus gourmand en mémoire que NormalizeData(), mais les 5 datasets étant très hétérogène j’aurais aimer garder cette méthode.

Merci pour votre aide !
Marc

Bonjour
Ce matin la commande pour voir la mémoire utilisée fonctionne, merci beaucoup pour ce point:

[diedisheim@gpu-node15 RawData]$ cat /sys/fs/cgroup/memory/slurm/uid_2203/job_55598936/memory.usage_in_bytes
52508282880

Je reste demandeur sur le second point (extension au-delà de 256 Go de RAM de manière ponctuelle), dites moi ce qui est envisageable !

Merci
Marc

Bonjour,

A priori vous n’êtes pas limité au niveau du formulaire de JupyterLab sur la quantité de mémoire à allouer. En revanche, vous êtes limité au niveau hardware sur les noeuds ipop-up (cpu-node130-145) qui ne disposent que de 256Go de RAM. Les noeuds GPU (gpu-node15,17,18) ont 512Go mais ils sont utilisés en priorité pour les jobs qui demandent des ressources GPU.

Cordialement.

effectivement je peux metrte 384 Go mais j’obtiens à chaque fois une erreur Spawn failed: Timeout.
Donc ça vaut le coup que je recommence, si c’est à un moment ou un gpu-node15,17,18 est disponible j’y aurais accès ?
D’ailleurs hier j’étais sur le gpu-node15 ?

diedisheim@gpu-node15:/shared/projects/immediab/schwann2025/RawData$ 

En effet oui.