Berechnen von CPU% basierend auf rohen CPU-Ticks in SNMP

1588
Bo Jeanes

Nach http://net-snmp.sourceforge.net/docs/mibs/ucdavis.html#scalar_notcurrent ssCpuUser, ssCpuSystem, ssCpuIdle, etc. sind für die rohen Varianten veraltet ( ssCpuRawUserusw.).

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 ssCpuRawWaitdie 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).

1

0 Antworten auf die Frage