Befehl zur Speicherauslastung mit ähnlicher Syntax wie der Befehl time
18
Welcher Befehl zeigt die Speichernutzung eines Programms, ich bin auf der Suche nach einem Befehl, der einfach zu bedienen ist und eine ähnliche Syntax wie der timeBefehl hat. Ich versuche, die Speichernutzung eines MD5-Hashing-Programms zu finden, das in C geschrieben ist und 7 Sekunden benötigt, um "Hallo Welt" zu hashen.
Ich verwende das Android-Betriebssystem mit installierter Busybox.
Ironischerweise timekönnte es eine Antwort für Sie sein, aber dieses Mal sollte es nicht in eine Shell eingebaut sein, timesondern in eine eigenständige:
$ /usr/bin/time -v uname
Linux
Command being timed: "uname"
User time (seconds): 0.00
System time (seconds): 0.00
Percent of CPU this job got: 2%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.12
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 896
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 1
Minor (reclaiming a frame) page faults: 304
Voluntary context switches: 3
Involuntary context switches: 3
Swaps: 0
File system inputs: 56
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Es zählt jedoch MAX RSS, nicht VSS. Wäre es für Sie nützlich oder nicht, hängt stark von Ihrer eigentlichen Aufgabe ab.
UPD. : Mac OS X "denkt" ist etwas anders, aber es ist trotzdem time:
/usr/bin/time -l /Applications/Opera.app/Contents/MacOS/Opera
244.63 real 54.34 user 26.44 sys
284827648 maximum resident set size
0 average shared memory size
0 average unshared data size
0 average unshared stack size
711407 page reclaims
1272 page faults
0 swaps
155 block input operations
251 block output operations
98542 messages sent
68330 messages received
16 signals received
699 voluntary context switches
468999 involuntary context switches
+1, gut zu wissen. Aber Vorsicht, dies ist eine GNU-spezifische Funktion. Enthält Android GNU time(1)?
Warren Young
Shell eingebaut? Weder die Hilfeseiten bashnoch zshhier erwähnen dies. Verwechseln Sie es mit times?
Warren Young
@WarrenYoung, for SH in zsh bash dash; do $SH -c 'echo $0; type time'; done - zsh time ist ein reserviertes Wort - bash time ist ein Shell-Schlüsselwort - dash time ist / usr / bin / time
poige
@WarrenYoung, und nein, Android hat es nicht standardmäßig, aber da /usr/bin/timees stark auf Systemaufrufen aufbaut wait3oder wait4(ich erinnere mich nicht genau), kann es auch dort leicht in die Tat umgesetzt werden.
Poige
Übrigens zeigt macOS time die maximale Speichernutzung in Bytes und Linux in Kilobytes.
Die Ausgabe wird eine Menge irrelevanter Dinge enthalten, aber die Zusammenfassung des Heap-Speichers macht das, was Sie wollen:
==91383== HEAP SUMMARY:
==91383== in use at exit: 157,643 bytes in 364 blocks
==91383== total heap usage: 2,999 allocs, 2,635 frees, 306,450 bytes allocated
time(1)
?bash
nochzsh
hier erwähnen dies. Verwechseln Sie es mittimes
?for SH in zsh bash dash; do $SH -c 'echo $0; type time'; done
- zsh time ist ein reserviertes Wort - bash time ist ein Shell-Schlüsselwort - dash time ist / usr / bin / time/usr/bin/time
es stark auf Systemaufrufen aufbautwait3
oderwait4
(ich erinnere mich nicht genau), kann es auch dort leicht in die Tat umgesetzt werden.Sie können dafür verwenden
valgrind
:Die Ausgabe wird eine Menge irrelevanter Dinge enthalten, aber die Zusammenfassung des Heap-Speichers macht das, was Sie wollen:
quelle
valgrind
aber es sieht so aus, als gäbe es einen Port für Android. Ich werde versuchen, ihn zu installieren.