GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Über Mem und Vmem?

Ich arbeite mit einem Cluster-Rechner, der unter Linux läuft.

Ich habe ein Shell-Skript, das mpirun verwendet um meine Jobs an die Cluster-Maschine zu senden. In demselben Skript kann ich die Anzahl der Knoten auswählen, die dem Job zugewiesen werden. So weit, so gut.

Mein Problem tritt danach auf:Wenn ich ein paar Jobs einreiche, funktioniert alles gut, aber wenn ich die Kapazität der Knoten ausfülle, werden einige der eingereichten Jobs nicht abgeschlossen. Ich vermute daher, dass der verfügbare Speicher auf dem Cluster nicht ausreicht, um alle meine Jobs gleichzeitig zu erledigen.

Deshalb möchte ich die Speichernutzung jedes Jobs im Laufe der Zeit überprüfen, ich verwende dann den qstat -f Befehl, aber es zeigt eine Menge Dinge an, und die meisten davon kann ich nicht verstehen.

Also hier ist meine Frage: In der Beispielausgabe von qstat -f Befehl unten sehen wir zwei Arten von Speicher:mem und vmem . Ich würde gerne wissen, was der Unterschied zwischen diesen beiden ist und wie viel Speicher tatsächlich verwendet wird?

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

Darüber hinaus würde ich mich über jeden Hinweis freuen, in dem die Ausgabe dieses Befehls detailliert ist. Ich habe es mit man qstat versucht, aber es geht nicht auf die Details jeder zurückgegebenen Zeile ein.

Akzeptierte Antwort:

Nur um dies aus der Liste der offenen Fragen zu streichen und eine vereinfachte Antwort zu geben (der obige Kommentar von Goldilocks und die qstat-Dokumentation setzen eine tiefere Vertrautheit mit Systemen voraus):

Die Antwort hängt davon ab, was genau Sie mit „der tatsächlich verwendeten Speichermenge“ meinen (und später in Ihrer Antwort auf den Kommentar:„der verwendete RAM-Speicherplatz“).

„mem“ gibt an, wie viel Arbeitsspeicher des Computers von Ihrem Job verwendet wurde, genauer gesagt die beobachtete Spitzenauslastung. Dies ist nicht unbedingt die tatsächliche Spitzenauslastung, da das Jobüberwachungssystem auf Ihrem Cluster die Auslastung möglicherweise nur von Zeit zu Zeit überprüft. Ihr Job versucht möglicherweise, viel mehr Arbeitsspeicher zu verwenden, als hier angegeben, aber das System gibt dem Job nicht mehr Arbeitsspeicher, z. B. weil kein Arbeitsspeicher mehr vorhanden ist oder andere Aufgaben, die auf demselben Computer ausgeführt werden, um Arbeitsspeicher konkurrieren. Außerdem kann der Dateisystem-Cache ein Konkurrent für den Arbeitsspeicher sein, wenn eine hohe Dateiaktivität (I/O) vorhanden ist.

Verwandte:Linux – Welche Anwendung für einen Kalender verwenden?

„vmem“ ist eine Größe, die sich darauf bezieht, wie moderne Prozessoren Speicher verwalten. Wieder ein Spitzenwert. Diese Zahl kann verschiedene Dinge enthalten, auf die Prozesse zugreifen können, wie z. B. speicherabgebildete Dateien und Auslagerungsspeicher. Es enthält Speicherplatz, den ein Prozess zugewiesen, aber nie verwendet hat, und kann daher ziemlich groß sein. Wenn die Zahl niedrig ist, können Sie daraus schließen, dass der Speicher nicht das Problem ist, aber wenn sie hoch ist, wissen Sie es nicht und müssen weiter nachforschen. Einige Anwendungen weisen viel virtuellen Speicher zu, selbst wenn sie nur einen Bruchteil benötigen.


Linux
  1. C-Programmier-Tutorial 4 - Variablen und Speicher

  2. 10 interessante und lustige Fakten über Linux

  3. Es gibt einen neuen Hub für Open-Source-Jobs, und es geht nicht nur um Entwickler und Administratoren

  4. qstat und lange Jobnamen

  5. Begrenzen Sie Speicher und CPU mit lxc-execute

So installieren und verwenden Sie das Forensik-Tool für Volatility-Speicher

So erhöhen Sie Speicher und CPU auf Vagrant Machine

Effektive Überwachung von Netzwerkbandbreite, CPU und Speicher

10 lustige Fakten über Linus Torvalds und Linux

Cron-Job erstellen und löschen

Speicherlimit und CPU-Limit im Docker-Container