Erfassen Sie die CPU-und Speicherauslastung dynamisch
Mir läuft ein shell-Skript zum ausführen eines c++ - Anwendung, welche Maßnahmen die performance der api. ich kann capture die Latenz (Zeit genommen, um einen Wert zurückzugeben, für einen gegebenen Satz von Parametern) von der api, aber ich auch erfassen möchten, die cpu-und Speichernutzung neben der in Abständen von sagen wir 5-10 Sekunden.
gibt es eine Möglichkeit, dies zu tun, ohne Einfluss auf die Leistung des Systems zu viel und das auch innerhalb der gleichen script? ich fand viele Beispiele, wo man tun kann, außerhalb (getrennt) von der Skript ausgeführt werden; aber nicht eine, wo wir tun können, innerhalb der gleichen Schrift.
- Möglich, Duplikat der Wie bekomme ich die CPU-Auslastung und Speichernutzung eines einzelnen Prozesses auf Linux (Ubuntu)?
- diese Frage wurde gebeten, später als diese, und wäre eine doppelte, nicht das hier ein 🙂
- meta.stackexchange.com/questions/147643/... 😉
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde vorschlagen, für die Verwendung von ' Zeit "- Befehl, und auch ' vmstat " - Befehl. Die ersten geben wird die CPU-Auslastung von ausführbaren Ausführung und zweiten - periodisch (z.B. einmal pro Sekunde) dump von CPU/Speicher/IO des Systems.
Beispiel:
Wenn Sie auf der Suche für die Erfassung von CPU-und Mem-Auslastung dynamisch für die gesamte linux-box dann folgenden Befehl kann auch Ihnen helfen:
CPU
vmstat
wird verwendet für die Erfassung von CPU-Leistungsindikatoren-n
für delay-Wert, in diesem Fall sind es 15, das heißt, nachdem alle 15 Sek, Statistiken gesammelt werden.dann
10
ist die Anzahl der Intervalle, es würde 10 Iterationen in diesem Beispielawk '{now=strftime("%Y-%m-%d %T "); print now $0}'
dies wird dump den Zeitstempel jeder iterationam Ende der dump-Datei mit
&
für die FortsetzungSpeicher
free
ist für mem-stats collection-m
dies ist für Einheiten von mem (Sie können-b
für Byte-k
für Kilobyte-g
für Gigabyte)dann
10
ist die Anzahl der Intervalle (es wären 10 Iterationen in diesem Beispiel)awk'{now=strftime("%Y-%m-%d %T "); print now $0}'
dies wird dump den Zeitstempel jeder iterationam Ende der dump -
&
für die Fortsetzung