GNU/Linux >> Tutoriels Linux >  >> Linux

À propos de Mem et Vmem ?

Je travaille avec une machine en cluster fonctionnant sous Linux.

J'ai un script shell qui utilise mpirun pour soumettre mes travaux à la machine du cluster. Dans ce même script, je peux choisir le nombre de nœuds qui seront affectés au travail. Jusqu'ici, tout va bien.

Mon problème survient après :lorsque je soumets quelques travaux, tout fonctionne bien, cependant, lorsque je remplis la capacité des nœuds, certains des travaux soumis ne seront pas terminés. Je soupçonne par conséquent que la mémoire disponible sur le cluster n'est pas suffisante pour traiter toutes mes tâches en même temps.

C'est pourquoi je veux vérifier l'utilisation de la mémoire de chaque travail au fil du temps, j'utilise ensuite le qstat -f commande, mais elle affiche beaucoup de choses, et la plupart d'entre elles, je ne les comprends pas.

Voici donc ma question : Dans l'exemple de sortie de qstat -f commande ci-dessous, on peut voir deux types de mémoire :mem et vmem . J'aimerais savoir quelle est la différence entre ces deux et quelle est la quantité réelle de mémoire utilisée ?

resources_used.cput = 00:21:04
resources_used.mem = 2099860kb
resources_used.vmem = 40505676kb
resources_used.walltime = 00:21:08

De plus, j'apprécierais toute référence où la sortie de cette commande est détaillée. J'ai essayé man qstat mais il n'entre pas dans les détails de chaque ligne renvoyée.

Réponse acceptée :

Juste pour supprimer cela de la liste des questions ouvertes et donner une réponse simplifiée (le commentaire de Goldilocks ci-dessus et la documentation qstat supposent une connaissance plus approfondie des systèmes) :

La réponse dépend de ce que vous entendez exactement par "la quantité réelle de mémoire utilisée" (et plus loin dans votre réponse au commentaire :"l'espace RAM utilisé").

"mem" est la quantité de RAM de la machine utilisée par votre travail, plus précisément le pic d'utilisation observé. Il ne s'agit pas nécessairement du véritable pic d'utilisation, car le système de surveillance des tâches de votre cluster ne vérifie peut-être l'utilisation que de temps en temps. Votre travail essaie peut-être d'utiliser beaucoup plus de mémoire que ce qui est indiqué ici, mais le système ne lui donne pas plus de mémoire, par exemple parce qu'il n'y a plus de mémoire ou que d'autres tâches s'exécutant sur la même machine se disputent la mémoire. En outre, le cache du système de fichiers peut être un concurrent de la RAM en cas d'activité de fichier importante (E/S).

Connexe :Linux – Quelle application utiliser pour un calendrier ?

"vmem" est une quantité liée à la façon dont les processeurs modernes gèrent la mémoire. Encore une fois, c'est une valeur maximale. Ce nombre peut inclure divers éléments auxquels les processus peuvent accéder, tels que les fichiers mappés en mémoire et l'espace d'échange. Il inclut l'espace qu'un processus a alloué mais jamais utilisé et peut donc être assez grand. Si le nombre est faible, cela vous permet de conclure que la mémoire n'est pas le problème, mais s'il est élevé, vous ne savez pas et devez approfondir vos recherches. Certaines applications allouent beaucoup de mémoire virtuelle même si elles n'en ont besoin que d'une fraction.


Linux
  1. Comment supprimer les tampons de mémoire et le cache sous Linux

  2. Discussion sur Windows, Linux et cPanel VPS – Partie II

  3. Surveillance et gestion de la mémoire

  4. Questions sur putenv() et setenv()

  5. qstat et noms de travail longs

Comment installer et utiliser l'outil médico-légal de mémoire Volatility

Comment augmenter la mémoire et le processeur sur une machine vagabonde

Surveillance efficace de la bande passante du réseau, du processeur et de la mémoire

10 faits amusants sur Linus Torvalds et Linux

Créer et supprimer une tâche Cron

Limite de mémoire et limite de processeur dans le conteneur Docker