NEWS
Rpi-Adapter CPU Load
-
Hallo zusammen,
In den letzten Tagen zeigte mir der Rpi-Adapter immer mal wieder eine um 1.0 an.
In der json Ausgabe des Scripts zur Adapterinfo von ruhr70 war jedoch nicht zu erkennen warum.
Hier ein Beispiel in normaler Last
Da auf dem raspi eigentlich nur ioBroker läuft kam vielleicht noch SQL oder influxDB oder systeminterne Programme als Übeltäter in Frage.
Daraufhin bin ich über die Konsole auf den raspi und habe mir mit Top die Last angesehen
Die Load liegt etwa um den Faktor 10 niedriger.
Ist das nur bei mir so?
Gruß
Rainer
-
Meine Frage/Feststellung geht in die selbe Richtung.
Der RPI Adapter zeigt bei mir Werte an wie:
load1 = 0.39
load5 = 0.23
load15 = 0.25
Frage: wofür stehen die einzelnen loads? Wahrscheinlich entspricht das 39%, 23% und 25%!?
Diese Werte stimmen aber nicht überein mit den Werten, wenn ich die Auslastung über die Android App RasPi Check auslese (8%).
Weiß jemand wie ich an diese 8% komme über iobroker?
Der einzige Wert, den ich von RPI nutzen kann ist die Temperatur.
Unten habe ich zur selben Zeit die Daten gegenübergestellt (siehe screenshot)
<size size="85">(die letzten Wochen hatte ich Probleme mit Temperatur über 70°C und Auslastung von 33%. Anschließender Neustart vom Raspi (nach 2 Monaten ohne Neustart) und gleichzeitiger Aktualisierung auf js-controller 0.11.1 ist das Problem seit 23 Std behoben.)</size>
1146_225517231_66436.jpg
1146_rpi.gif -
Die Load average ist nicht die Auslastung der CPU.
https://de.wikipedia.org/wiki/Load
Was der Adapter anzeigt ist die Load average der letzten, der letzten 5 und der letzten 15 Minuten
Was deine App anzeigt ist die tatsächliche Auslastung der CPU.
Dies erhältst du auch mit dem Befehl top über die SSH Konsole
Im Prinzip ist es 100% - die hier gezeigte Idle von 99,3%=0,7%Vielleicht kann einer der scriptcracks dazu ein js Skript schreiben, das einen entsprechenden Datenpunkt anlegt und regelmäßig updated.
Gruß
Rainer
-
Meine Frage/Feststellung geht in die selbe Richtung.
Der RPI Adapter zeigt bei mir Werte an wie:
load1 = 0.39
load5 = 0.23
load15 = 0.25
Frage: wofür stehen die einzelnen loads? Wahrscheinlich entspricht das 39%, 23% und 25%!?
… `
Ich frage hier nochmal nach…Denn ich hatte es auch so verstanden dass die Werte x100 = % ergeben.
Aber ich bekomme gelegentlich Werte >1 angezeigt.
Das kann ja dann irgendwie nicht passen.
Muss man hier einen Faktor verwenden?
Oder sind die Load Werte einfach unzuverlässig/falsch?
-
Vielleicht kann einer der scriptcracks dazu ein js Skript schreiben, das einen entsprechenden Datenpunkt anlegt und regelmäßig updated. `
Ich verwende dieses Skript zur Anzeige der CPU-Last.// CPU-Last aus Datei /proc/stat ermitteln var fs = require('fs'); var idLast = getIdByName('Service.CPU-Last'); var fn = '/proc/stat'; var cpuUser = 0; var cpuNice = 0; var cpuSystem = 0; var cpuIdle = 0; function cpuLast(text) { var lines = text.split('\n'); var cpu = lines[0].split(' '); var cUser = parseFloat(cpu[2]) - cpuUser; var cNice = parseFloat(cpu[3]) - cpuNice; var cSystem = parseFloat(cpu[4]) - cpuSystem; var cIdle = parseFloat(cpu[5])- cpuIdle; var last = 100 * (1 - cIdle / (cUser + cNice + cSystem + cIdle)); setState(idLast, Math.round(10 * last) / 10, true); cpuUser = parseFloat(cpu[2]); cpuNice = parseFloat(cpu[3]); cpuSystem = parseFloat(cpu[4]); cpuIdle = parseFloat(cpu[5]); } function getStat() { fs.readFile(fn, 'utf8', function(err, text) { if(err) log('Fehler beim Lesen von /proc/stat', 'error'); else cpuLast(text); }); } schedule('*/10 * * * * *', getStat);
-
OK.
Und wie bekomme ich da einen Wert raus auf die Visu? :oops:
Und wird das nur alle 10 min. aktualisiert?
Sorry, bin im javascript noch nicht so fit.
-
Ich frage hier nochmal nach…
Denn ich hatte es auch so verstanden dass die Werte x100 = % ergeben.
Aber ich bekomme gelegentlich Werte >1 angezeigt.
Das kann ja dann irgendwie nicht passen.
Muss man hier einen Faktor verwenden?
Oder sind die Load Werte einfach unzuverlässig/falsch? `
Nicht ganz, siehe https://de.wikipedia.org/wiki/Load
Der Load kann weit über 1 hinausgehen.
Wenn der load < 1 ist, ist der Pi nicht gestresst alles läuft gut.
load = 1, der Pi läuft optimal, alle Prozesse werden optimal abgearbeitet
load > 1, der Pi wird stärker beansprucht, Prozesse dauern länger
-
Und wie bekomme ich da einen Wert raus auf die Visu? `
Den Wert enthält der Datenpunkt mit der ID "javascript.0.Service.CPU-Last". Der muss vorher im Reiter "Objekte" mit dem Typ "Zahl" (number) und der unit "%" erzeugt werden.
@aleks-83:Und wird das nur alle 10 min. aktualisiert? `
Nein, alle 10 s. -
OK, danke euch !
Den Datenpunkt Service.CPU-Last habe ich erstellt.
Wenn ich dein Skript starte bekomme ifolgende Fehlermeldungen im Log:
javascript.0 2018-08-22 16:12:00.577 warn at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:511:3) javascript.0 2018-08-22 16:12:00.577 warn at script.js.RaspberryPi.CPULastAuslesen:30:14 javascript.0 2018-08-22 16:12:00.576 warn at cpuLast (script.js.RaspberryPi.CPULastAuslesen:20:5) javascript.0 2018-08-22 16:12:00.574 warn State "undefined" not found
-
Hat der Datenpunkt auch den Namen "Service.CPU-Last" ? Wenn nicht, trage die ID direkt in Zeile 4 ein (ohne getIdByName()).
-
Also ich hatte einen Datenpunkt namens CPU-Last in einem Ordner Service im Javascript.0 Ordner angelegt.
Jetzt habe ich den Service Ordner gelöscht und den Datenpunkt unter Javascript angelegt.
Dann in deinem Skript den Namen "CPU-Last" angegeben.
Jetzt läuft es !