8 votes

Suivi de l'utilisation de la mémoire d'un travail sur SGE

Je cherche des conseils pour déterminer précisément la quantité de RAM utilisée par mon travail sur mon cluster. Mon travail n'est pas multithreadé et fonctionne sur un seul processeur.

Lorsque je lance mon travail et que j'exécute "top", je peux voir qu'il utilise autant de RAM...

VIRT: 45.6g
RES: 38g
SHR: 9600

ce qui (corrigez-moi si je me trompe) signifie que j'utilise 38 gigaoctets de RAM réelle, et 7,6 gigaoctets d'éléments qui ont pu être déplacés vers le swap. Les chiffres autour de 40 Gigs correspondent à ce que les auteurs de l'outil que je teste disent que mon travail devrait utiliser.

La confusion survient lorsque j'obtiens ces chiffres de la SGE (en utilisant qstat ou qacct). qacct -j 7270916 Ici, je vois

mem 2768.453
maxvmem 4.078G

Cependant, aucune de ces valeurs n'est proche des 45,6 gigas de RAM que je sais utiliser (même si maxvmem semble devoir représenter les 45,6 gigas).

Pendant que le travail était en cours, j'ai essayé d'utiliser la commande suivante qstat -j 7270916 dans lequel j'ai vu la ligne :

usage 1: cpu=00:01:37, mem=168.12988 GBs, io=38.64676, vmem=1.665G, maxvmem=4.078G

Je suppose que mem est une somme de toute la RAM qui a été utilisée/libérée/utilisée/libérée au cours de l'exécution (elle vient de se terminer), mais maxvmem est toujours très bas (beaucoup moins que mes 45,6 gigas attendus).

Ainsi, mon utilisation de qcct et qstat génère des chiffres qui ne correspondent pas aux chiffres attendus (que je vois avec top).

Quelqu'un a-t-il des suggestions sur la façon d'obtenir des chiffres d'utilisation de la RAM qui aient un sens en utilisant les commandes SGE après la fin de l'exécution ?

EDIT : j'utilise SGE 6.2u5

0 votes

Juste une remarque sur la valeur de la mémoire : Selon linux.die.net/man/1/qacct le format de la commande qacct est défini par sge_accounting ( linux.die.net/man/5/sge_accounting ), qui indique que mem est "L'utilisation de la mémoire intégrale en Gbytes secondes cpu". Avez-vous défini une limite maximale de mémoire virtuelle (s_vmem/h_vmem) ?

4voto

yohannc Points 11

C'est une vieille question, mais si vous n'avez toujours pas trouvé la solution, vous pouvez taper

qstat -j <Job_ID>

La catégorie "maxvmem" vous donne la quantité maximale de RAM utilisée par votre job lors de son exécution. La valeur de maxvmem est donc le nombre que vous recherchez pour trouver la plus grande quantité de mémoire utilisée par votre travail pendant son exécution.

En outre, vous ne pouvez utiliser qstat que lorsque votre travail est en cours d'exécution. Si vous voulez voir l'utilisation de la mémoire après la fin de votre travail, vous devez utiliser

qacct -j <Job_ID>.

J'espère que cela vous aidera et vous trouverez ci-dessous un lien vers des informations complémentaires.

http://wiki.genomics.upenn.edu/index.php/HPC:Large_memory_jobs

1 votes

Je ne vois pas en quoi cette réponse ne fait que réitérer les commandes qui ont déjà été clairement indiquées par le PO comme étant utilisées. Et le lien est périmé...

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X