Berechnen von CPU% basierend auf rohen CPU-Ticks in SNMP
Nach http://net-snmp.sourceforge.net/docs/mibs/ucdavis.html#scalar_notcurrent ssCpuUser
, ssCpuSystem
, ssCpuIdle
, etc. sind für die rohen Varianten veraltet ( ssCpuRawUser
usw.).
Die vorherigen Werte (die sich nicht auf Dinge wie nice, wait, kernel, interrupt usw. beziehen) haben einen prozentualen Wert zurückgegeben:
Der Prozentsatz der CPU-Zeit, die für die Verarbeitung von Code auf Benutzerebene aufgewendet wurde, der in der letzten Minute berechnet wurde.
Dieses Objekt wurde zugunsten von '
ssCpuRawUser(50)
' abgelehnt, was zur Berechnung derselben Metrik verwendet werden kann, jedoch über einen beliebigen Zeitraum.
Die Rohwerte geben die "rohe" Anzahl der Ticks zurück, die die CPU ausgegeben hat:
Die Anzahl der 'Ticks' (normalerweise 1 / 100s), die für die Verarbeitung von Code auf Benutzerebene aufgewendet wurden.
Bei einem
ssCpuRaw*
Multiprozessorsystem sind die Zähler für alle CPUs kumulativ, daher beträgt ihre Summe normalerweise N * 100 (für N Prozessoren).
Meine Frage ist: Wie lässt sich die Anzahl der Ticks in Prozent umrechnen?
Wie wissen Sie also, wie viele Ticks pro Sekunde ( normalerweise - was nicht immer bedeutet - 1 / 100s, was entweder alle 100 Sekunden 1 bedeutet oder dass ein Tick 1/100 einer Sekunde entspricht)?
Ich kann mir vorstellen, dass Sie auch wissen müssen, wie viele CPUs es gibt, oder Sie müssen alle CPU-Werte abrufen, um sie alle zusammen hinzuzufügen. Ich kann anscheinend keine MIB finden, die einen ganzzahligen Wert für # der CPUs angibt, wodurch die vorherige Route umständlich wird. Die letztere Route scheint unzuverlässig zu sein, da sich einige der Zahlen überschneiden ( manchmal ). Hat beispielsweise ssCpuRawWait
die folgende Warnung:
Dieses Objekt wird nicht auf Hosts implementiert, auf denen das zugrunde liegende Betriebssystem diese bestimmte CPU-Metrik nicht misst. Diese Zeit kann auch im
ssCpuRawSystem(52)
Zähler enthalten sein.
Einige Hilfe wäre dankbar. Überall scheint nur zu sagen, dass% veraltet ist, weil es abgeleitet werden kann, aber ich habe nirgendwo eine Methode gefunden, die die offizielle Standardmethode für diese Ableitung zeigt.
Die zweite Komponente ist, dass diese "Ticks" nicht über einen bestimmten Zeitraum kumulativ erscheinen. Wie kann ich Werte über einen bestimmten Zeitraum abfragen?
Die ultimative Information, die ich möchte, ist:% des Benutzers, des Systems, im Leerlauf, nett (und idealerweise stehlen, obwohl es scheinbar keine Standard-MIB dafür gibt) "derzeit" (über die letzten 1-60s wäre wahrscheinlich ausreichend, mit einer Präferenz für kleinere Zeitspannen).
0 Antworten auf die Frage
Verwandte Probleme
-
5
Gibt es drahtlose Router, die Bandbreitenüberwachung und -drosselung ermöglichen?
-
8
Sollte ich 32 oder 64 Bit für Linux wählen?
-
12
CPU-Kerne: Je mehr, desto besser?
-
5
Warum sollte mein Computer starten und plötzlich ausschalten?
-
2
Maximale CPU-Temperatur für Core 2 Duo E6400
-
4
Wie schnell ist jeder Kern in einem Dual-Core-Prozessor?
-
7
Kann ich die CPU-Geschwindigkeit meines MacBook im Akkubetrieb reduzieren?
-
2
Bietet der Intel i7 eine echte Verbesserung gegenüber seinen Vorgängern?
-
4
Kann ein 32-Bit-Betriebssystem in einem 64-Bit-Prozessor ausgeführt werden?
-
3
Ist es möglich, eine Intel Q8400-CPU in meinem ASUS P5N-EM HDMI-Mobo zu verwenden?