Gibt es ein Tool, das eine Befehlszeile ausführt und die maximale RAM-Auslastung angibt?
Ich stelle mir etwas Analoges zu / usr / bin / time vor
linux
command-line
memory-management
jes5199
quelle
quelle
[ Bearbeiten : Funktioniert unter Ubuntu 14.04: Stellen
/usr/bin/time -v command
Sie sicher, dass Sie den vollständigen Pfad verwenden.]Sieht so
/usr/bin/time
aus, als ob Sie-v
diese Informationen erhalten, wenn Sie bestehen (dies ist unter Ubuntu 8.10). Siehe zBMaximum resident set size
unten:quelle
/bin/time -v
löst es.time -l
on MacOS, gibt ähnliche Ausgabe.(Dies ist eine bereits beantwortete, alte Frage .. aber nur für die Aufzeichnung :)
Ich wurde von Yangs Drehbuch inspiriert und kam auf dieses kleine Werkzeug namens memusg . Ich habe einfach die Abtastrate auf 0,1 erhöht, um viele kurzlebige Prozesse zu bewältigen. Anstatt einen einzelnen Prozess zu überwachen, habe ich ihn dazu gebracht, die RSS-Summe der Prozessgruppe zu messen. (Ja, ich schreibe viele separate Programme, die zusammenarbeiten.) Es funktioniert derzeit unter Mac OS X und Linux. Die Verwendung musste ähnlich sein wie bei
time
:Es zeigt momentan nur den Höhepunkt, aber ich bin an geringfügigen Erweiterungen für die Aufzeichnung anderer (grober) Statistiken interessiert.
Es ist gut, ein so einfaches Tool zu haben, um einen Blick darauf zu werfen, bevor wir mit einer ernsthaften Profilerstellung beginnen.
quelle
ps -o rss=
wobei rss die tatsächliche Speichergröße (residente Menge) des Prozesses (in 1024-Byte-Einheiten) aus meiner BSD-Manpage ist.Valgrind Einzeiler:
valgrind --tool=massif --pages-as-heap=yes --massif-out-file=massif.out ./test.sh; grep mem_heap_B massif.out | sed -e 's/mem_heap_B=\(.*\)/\1/' | sort -g | tail -n 1
Beachten Sie die Verwendung von --pages-as-heap, um den gesamten Speicher in einem Prozess zu messen. Weitere Informationen hier: http://valgrind.org/docs/manual/ms-manual.html
quelle
time
, Ich verlasse dich.valgrind --massif
. Sie können auch dasms_print
mitgelieferte Tool für eine praktische Ausgabe verwenden (einschließlich ASCII-Nutzungsdiagrammen im Zeitverlauf)time
und benötigt mindestens zehnmal mehr Zeit für einen Befehl wiels
.Unter Linux:
Verwenden Sie
/usr/bin/time -v <program> <args>
und suchen Sie nach " Maximale Größe des residenten Satzes ".(Nicht zu verwechseln mit dem
time
integrierten Befehl Bash ! Verwenden Sie also den vollständigen Pfad ./usr/bin/time
)Zum Beispiel:
Unter BSD, MacOS:
Verwenden Sie
/usr/bin/time -l <program> <args>
, um nach " maximaler Resident-Set-Größe " zu suchen :quelle
sudo apt-get install time
Vielleicht macht (gnu) time (1) schon was du willst. Zum Beispiel:
Andere Profiling-Tools liefern jedoch möglicherweise genauere Ergebnisse, je nachdem, wonach Sie suchen.
quelle
time
ist ein eingebauter Befehl bei der Verwendungcsh
. Wenn Sie den genauen Pfad verwenden, können Sie den externen Befehl ausführen. Soweit ich weiß, unterstützt nur die GNU-Version die Formatierungsoption./ usr / bin / time macht vielleicht tatsächlich das, was Sie wollen. Etwas wie.
Siehe Zeit (1) für Details ...
quelle
Unter MacOS Sierra verwenden Sie:
Sie können verwenden
grep
, um zu nehmen, was Sie vielleicht wollen.quelle
command time -l
anstelle von/usr/bin/time -l
denen Shell bewirken tatsächlich eine binäre genannt rufentime
statt der eingebauten Funktion. (Ja,command
ist kein Platzhalter,command time
ist anders als nurtime
.)Wenn der Prozess mindestens ein paar Sekunden lang ausgeführt wird, können Sie das folgende Bash-Skript verwenden, das die angegebene Befehlszeile ausführt und dann druckt, um den Spitzen-RSS-Wert zu sternr (Ersatz für
rss
jedes andere Attribut, an dem Sie interessiert sind). Es ist etwas leicht und funktioniert für mich mit demps
in Ubuntu 9.04 enthaltenen (was ich nicht sagen kanntime
).quelle
quelle
Wenn Sie den Speicherpeak und einige detailliertere Statistiken wirklich anzeigen möchten, empfehle ich die Verwendung eines Profilers wie valgrind . Ein schönes Valgrind-Frontend ist Alleyoop .
quelle
Sie können dazu ein Tool wie Valgrind verwenden.
quelle
Hier ist (basierend auf den anderen Antworten) ein sehr einfaches Skript, das einen bereits laufenden Prozess überwacht. Sie führen es einfach mit der PID des Prozesses aus, den Sie als Argument ansehen möchten:
Anwendungsbeispiel:
quelle
Verwenden Sie Massif: http://valgrind.org/docs/manual/ms-manual.html
quelle
Heaptrack ist ein KDE-Tool mit einer GUI und einer . Ich finde es besser geeignet als valgrind, die Speichernutzung eines Prozesses zu verstehen, da es mehr Details und Flammengraphen enthält. Es ist auch schneller, weil es weniger Valgrind überprüft. Und es gibt Ihnen die maximale Speichernutzung.
Wie auch immer, das Verfolgen von RSS und VSS ist irreführend, da Seiten geteilt werden könnten. Deshalb
memusg
. Was Sie wirklich tun sollten, ist die Summe vonPss
In/proc/[pid]/smaps
oder Verwendung zu verfolgenpmap
. Früher war dies der GNOME-Systemmonitor, der jedoch zu teuer war.quelle
Das Rad neu erfinden, mit handgemachtem Bash-Skript. Schnell und sauber.
Mein Anwendungsfall: Ich wollte einen Linux-Computer überwachen, der weniger RAM hat, und wollte eine Momentaufnahme der Nutzung pro Container machen, wenn er unter starker Auslastung ausgeführt wird.
Beispielausgabe:
quelle
Unter macOS können Sie stattdessen DTrace verwenden. Die "Instruments" App ist eine schöne GUI dafür, sie kommt mit XCode afaik.
quelle
'htop' ist der beste Befehl, um zu sehen, welcher Prozess wie viel RAM verwendet .....
Weitere Informationen finden Sie unter http://manpages.ubuntu.com/manpages/precise/man1/htop.1.html
quelle
Entschuldigung, ich bin zum ersten Mal hier und kann nur Fragen stellen ...
Verwendet empfohlen:
dann:
Dies unterscheidet sich sehr von dem, was der
top
Befehl in einem ähnlichen Moment anzeigt:Was sind gemessene Einheiten von Valgrind?
Das
/usr/bin/time -v ./test.sh
nie beantwortet - Sie müssen die ausführbare Datei direkt füttern, um zu/usr/bin/time
mögen:quelle