Verfolgen Sie die Speichernutzung eines Jobs in SGE


8

Ich suche nach Anleitungen, wie ich genau herausfinden kann, wie viel RAM mein Job in meinem Cluster verwendet. Mein Job ist kein Multithread-Job und läuft auf einer einzelnen CPU.

Wenn ich meinen Job ausführe und "top" ausführe, kann ich sehen, dass so viel RAM verwendet wird ...

VIRT: 45.6g
RES: 38g
SHR: 9600

Was für mich bedeutet, dass ich 38 GB echten RAM und 7,6 GB Material verwende, das möglicherweise zum Tauschen verschoben wurde. Die Zahlen um 40 Gigs sind das, was die Autoren des Tools, das ich teste, sagen, dass mein Job verwenden sollte.

Die Verwirrung entsteht, wenn ich diese Zahlen von SGE bekomme (mit qstat oder qacct). qacct -j 7270916 Hier sehe ich

mem 2768.453
maxvmem 4.078G

Keines davon entspricht jedoch in der Nähe der 45,6 GB RAM, von denen ich weiß, dass ich sie verwende (obwohl maxvmem so klingt, als ob es wirklich die 45,6 GB darstellen sollte).

Während der Ausführung des Jobs habe ich versucht, diesen Befehl zu verwenden, qstat -j 7270916 in dem ich die Zeile sah:

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

Ich denke, dass mem eine Summe des gesamten RAM ist, der während des Laufs verwendet / freigegeben / verwendet / freigegeben wurde (es wurde gerade beendet), aber maxvmem ist immer noch sehr niedrig (viel viel weniger als meine erwarteten 45,6 Gigs).

Meine Verwendung von qcct und qstat erzeugt also beide Zahlen, die nicht mit den erwarteten Zahlen übereinstimmen (die ich oben sehe).

Hat da draußen jemand Vorschläge, wie man RAM-Nutzungsnummern erhält, die mit SGE-Befehlen nach Beendigung des Laufs sinnvoll sind?

EDIT: Ich benutze SGE 6.2u5


Nur ein Hinweis zum mem-Wert: Laut linux.die.net/man/1/qacct wird das Format des Befehls qacct durch sge_accounting ( linux.die.net/man/5/sge_accounting ) definiert, das besagt, dass mem ist "Die integrale Speichernutzung in Gbytes CPU-Sekunden". Haben Sie ein maximales virtuelles Speicherlimit definiert (s_vmem / h_vmem)?
Zpon

Antworten:


4

Dies ist eine alte Frage, aber wenn Sie sie noch nicht herausgefunden haben, können Sie sie eingeben

qstat -j <Job_ID>

Die Kategorie "maxvmem" gibt Ihnen die maximale Menge an RAM an, die Ihr Job verwendet hat, als er ausgeführt wurde. Der Wert von maxvmem ist also die Zahl, nach der Sie suchen, um die größte Speichermenge zu finden, die Ihr Job während der Ausführung verwendet hat.

Außerdem können Sie qstat nur verwenden, während Ihr Job ausgeführt wird. Wenn Sie die Speichernutzung nach Beendigung Ihres Auftrags anzeigen möchten, müssen Sie diese verwenden

qacct -j <Job_ID>.

Hoffe das hilft und unten ist ein Link mit mehr Informationen.

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


Ich sehe nicht, wie diese Antwort etwas anderes bewirkt, als die Befehle zu wiederholen, die OP bereits eindeutig als verwendet angegeben hat. Und der Link ist abgestanden ...
merv
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.