Holen Sie sich die CPU-Auslastungsstatistiken aus dem C-Programm


8

Ich möchte die CPU-Auslastungsstatistiken aus einem C-Programm lesen. Ich interessiere mich für den Prozentsatz der CPU-Auslastung, die Diebstahlzeit usw. Diese Statistiken werden in der 3. Zeile des topBefehls angezeigt .

Ich habe versucht, topdie Ausgabe mit awk( top -n 1 -b | awk '{print $0}') zu analysieren , aber es scheint, dass topimmer die gleichen 'fiktiven' Werte angezeigt werden, bevor die korrekten Statistiken angezeigt werden.

Gibt es einen Weg vom Code oder durch Parsen der Ausgabe eines Befehls, um die CPU-Auslastungsstatistiken zu erhalten?

Bearbeiten:

Die Plattform ist Linux

Vielen Dank.


Sicher, aber es gibt keinen Standardweg. Präzise Ziel-Betriebssysteme.
Jlliagre

Antworten:


5

Sie möchten die ersten Zeilen von lesen /proc/stat. Sie müssen es zweimal im Abstand von einer gemessenen Zeit lesen und den ersten Satz von Zahlen vom zweiten abziehen. Die Linien sehen so aus:

cpu  1526724 408013 600675 541100340 2861417 528 14531 0 0 0
cpu0 344507 77818 251244 134816146 1119991 324 13283 0 0 0
cpu1 502614 324065 179301 133991407 1631824 136 906 0 0 0
cpu2 299080 3527 79456 136144067 103208 59 255 0 0 0
cpu3 380521 2602 90672 136148719 6393 7 86 0 0 0
intr 2111239193 344878476 16943 ...

Die erste Zeile ist für alle Kerne aggregiert. Die nächsten Zeilen zeigen jeden Kern. Wenn Sie die Zeile sehen, die mit beginnt intr, müssen Sie das Parsen beenden.

Jede Zahl gibt an, wie viel Zeit die CPU in einem bestimmten Zustand verbracht hat. Die Einheiten sind typischerweise Hundertstelsekunden. Die Felder sind user, nice, system, idle, iowait, irq, softirq, steal, guest, und guest_nice.

Die maßgebliche Dokumentation ist natürlich der Quellcode. Wenn Sie eine Kopie der Linux-Kernelquelle zur Hand haben, schauen Sie sich fs/proc/stat.cinsbesondere die show_statFunktion an.


Wissen Sie, mit welcher Häufigkeit der Prozess / die Statistik aktualisiert wird? wie einmal alle 1ms oder so, danke.
0xFF

Sie sind keine echten Dateien. Ihr Inhalt wird berechnet, wenn Sie sie öffnen.
David Schwartz

3

Es gibt ein Beispiel im Web, das zeigt, wie man /proc/pid/statin C liest .

Sie können zu zwei unterschiedlichen Zeitpunkten lesen utimeoder stimeWerte verwenden und die gewünschten CPU-Nutzungsstatistiken berechnen. (Ich denke, topverwendet diese Rohdaten auch.)

(Ich habe vergessen: Dies ist Linux-spezifisch.)

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.