NEWS
History oder Flot Performance-Fresser?
-
Hallo,
Flot oder History scheint ein starker Performance-Fresser zu sein.
Ist das so? oder mache ich da noch was falsch?
-
Hallo,
Flot oder History scheint ein starker Performance-Fresser zu sein.
Ist das so? oder mache ich da noch was falsch?
@TheDamned sagte in History oder Flot Performance-Fresser?:
Ist das so? oder mache ich da noch was falsch?
ja und ja ;-)
Kommt auf die Anzahl Linien und deren Abtastrate an.
Bei einer Aggregation von besonders vielen Werten müssen da natürlich die Linien jedesmal neu gerechnet werden.
Auch die Anbindungsgeschwindigkeit der Rohdaten spielt dann eine Rolle -
@TheDamned sagte in History oder Flot Performance-Fresser?:
Ist das so? oder mache ich da noch was falsch?
ja und ja ;-)
Kommt auf die Anzahl Linien und deren Abtastrate an.
Bei einer Aggregation von besonders vielen Werten müssen da natürlich die Linien jedesmal neu gerechnet werden.
Auch die Anbindungsgeschwindigkeit der Rohdaten spielt dann eine RolleIch habe zwei Flot-Charts. Beide haben 4 Linien die sich die History-Daten aus den Datenpunkten hohlen.
Ich wollte noch weitere 14 Flot-Charst einbauen. Aber da ging gar nichts mehr. Also habe ich die wieder ausgebaut und mir mal die Performance dieser zwei Flot-Charts angeschaut. In der Summe wollte ich in diesem Projekt so ca. 35-40 Flot-Charts einbauen. Aber dieses Vorhaben habe ich erst einmal hinten angestellt :-D .@Homoran said in History oder Flot Performance-Fresser?:
Anbindungsgeschwindigkeit der Rohdaten
Wo kann ich die denn einstellen?
@UncleSam
Naja, alle 4 Kerne sind ausgelastet von 85% bis 94%. Ich finde das schon ziemlich viel.
Der RAM ist erträglich, das stimmt, aber wenn ich weitere 7 Flot-Charts (mit je einer Linie) einbaue, dann steigt er auf gute 3,4 GByte und das Swapping auf 100 MByte. Wenn ich dann zoome, oder verschiebe, dann ist alles ausgelastet und die Anzeige im VIS steht still. Meistens kommt es gar nicht mehr zu einer Anzeige, weil vorher irgendjemand VIS neu zu starten scheint. Aber das habe ich noch nicht so genau untersucht. -
Ich habe zwei Flot-Charts. Beide haben 4 Linien die sich die History-Daten aus den Datenpunkten hohlen.
Ich wollte noch weitere 14 Flot-Charst einbauen. Aber da ging gar nichts mehr. Also habe ich die wieder ausgebaut und mir mal die Performance dieser zwei Flot-Charts angeschaut. In der Summe wollte ich in diesem Projekt so ca. 35-40 Flot-Charts einbauen. Aber dieses Vorhaben habe ich erst einmal hinten angestellt :-D .@Homoran said in History oder Flot Performance-Fresser?:
Anbindungsgeschwindigkeit der Rohdaten
Wo kann ich die denn einstellen?
@UncleSam
Naja, alle 4 Kerne sind ausgelastet von 85% bis 94%. Ich finde das schon ziemlich viel.
Der RAM ist erträglich, das stimmt, aber wenn ich weitere 7 Flot-Charts (mit je einer Linie) einbaue, dann steigt er auf gute 3,4 GByte und das Swapping auf 100 MByte. Wenn ich dann zoome, oder verschiebe, dann ist alles ausgelastet und die Anzeige im VIS steht still. Meistens kommt es gar nicht mehr zu einer Anzeige, weil vorher irgendjemand VIS neu zu starten scheint. Aber das habe ich noch nicht so genau untersucht.@TheDamned sagte in History oder Flot Performance-Fresser?:
Wo kann ich die denn einstellen?
nirgends - liegt an der Hardware.
Diese I/O Vorgänge gehen mit in die Berechnung der Load ein und die liegt bei dir im dunkelorangen Bereich@TheDamned sagte in History oder Flot Performance-Fresser?:
Wenn ich dann zoome, oder verschiebe, dann ist alles ausgelastet
Das passt dazu
-
@TheDamned sagte in History oder Flot Performance-Fresser?:
Wo kann ich die denn einstellen?
nirgends - liegt an der Hardware.
Diese I/O Vorgänge gehen mit in die Berechnung der Load ein und die liegt bei dir im dunkelorangen Bereich@TheDamned sagte in History oder Flot Performance-Fresser?:
Wenn ich dann zoome, oder verschiebe, dann ist alles ausgelastet
Das passt dazu
@Homoran said in History oder Flot Performance-Fresser?:
dunkelorangen Bereich
Wo siehst du das?
Ich habe den Pi4 Model B mit 4 GByte RAM.
Ein IO ist doch ein Hardware Pin, auf dem ich was ausgebe oder einlese. Wenn ioBroker und Flot und Vis alles auf dem gleichen Raspberry laufen, sollten doch die Daten eigentlich im RAM bzw, auf der SD-Karte liegen. Oder denke ich da falsch? -
@Homoran said in History oder Flot Performance-Fresser?:
dunkelorangen Bereich
Wo siehst du das?
Ich habe den Pi4 Model B mit 4 GByte RAM.
Ein IO ist doch ein Hardware Pin, auf dem ich was ausgebe oder einlese. Wenn ioBroker und Flot und Vis alles auf dem gleichen Raspberry laufen, sollten doch die Daten eigentlich im RAM bzw, auf der SD-Karte liegen. Oder denke ich da falsch?@TheDamned sagte:
Ein IO ist doch ein Hardware Pin
... und alles, was über das Netzwerk, die Funkmodems und Massenspeicher geht.
-
@Homoran said in History oder Flot Performance-Fresser?:
dunkelorangen Bereich
Wo siehst du das?
Ich habe den Pi4 Model B mit 4 GByte RAM.
Ein IO ist doch ein Hardware Pin, auf dem ich was ausgebe oder einlese. Wenn ioBroker und Flot und Vis alles auf dem gleichen Raspberry laufen, sollten doch die Daten eigentlich im RAM bzw, auf der SD-Karte liegen. Oder denke ich da falsch?@TheDamned sagte in History oder Flot Performance-Fresser?:
Ein IO ist doch ein Hardware Pin, auf dem ich was ausgebe oder einlese
nein.
I/O sind Ein- und Ausgabevorgänge, z.B. Schreibvorgänge auf die SD-Karte oder im RAM.
So hat das Tinkerboard z.B. ein DualChannel DDR4-RAM, was die I/O Zeiten erheblich beschleunigt.Auch der Kartenleser und natürlich die Karte können Bremsen sein.
Die Stelle, an der du am ehesten eingreifen kannst ist aber das Design deiner Charts.
Wenn du z.B. alle Sekunde eine Wert in History schreibst, Eine Aggregation von einer Stunde wählst und eine X-Achse von 14 Tagen, bei einem Refresh jede Sekunde ist das System natürlich überfordert@TheDamned sagte in History oder Flot Performance-Fresser?:
Wo siehst du das?
deine durchschnittliche Load liegt knapp unter 4. Bei einem 4-Kerner ist bei 4 Stau auf der Autobahn
-
Ich habe zwei Flot-Charts. Beide haben 4 Linien die sich die History-Daten aus den Datenpunkten hohlen.
Ich wollte noch weitere 14 Flot-Charst einbauen. Aber da ging gar nichts mehr. Also habe ich die wieder ausgebaut und mir mal die Performance dieser zwei Flot-Charts angeschaut. In der Summe wollte ich in diesem Projekt so ca. 35-40 Flot-Charts einbauen. Aber dieses Vorhaben habe ich erst einmal hinten angestellt :-D .@Homoran said in History oder Flot Performance-Fresser?:
Anbindungsgeschwindigkeit der Rohdaten
Wo kann ich die denn einstellen?
@UncleSam
Naja, alle 4 Kerne sind ausgelastet von 85% bis 94%. Ich finde das schon ziemlich viel.
Der RAM ist erträglich, das stimmt, aber wenn ich weitere 7 Flot-Charts (mit je einer Linie) einbaue, dann steigt er auf gute 3,4 GByte und das Swapping auf 100 MByte. Wenn ich dann zoome, oder verschiebe, dann ist alles ausgelastet und die Anzeige im VIS steht still. Meistens kommt es gar nicht mehr zu einer Anzeige, weil vorher irgendjemand VIS neu zu starten scheint. Aber das habe ich noch nicht so genau untersucht.@TheDamned sagte in History oder Flot Performance-Fresser?:
In der Summe wollte ich in diesem Projekt so ca. 35-40 Flot-Charts einbauen. Aber dieses Vorhaben habe ich erst einmal hinten angestellt .
Das geht, wenn du die Grafen nicht allzu häufig aktualisierst. Ich hatte auf einer Ansicht in der VIS etwa 8 Flots gleichzeitig. Aber sie zeigten nur den Verlauf eines Tages.
Wenn du so viel mit Grafik machen willst, würde ich mal Grafana anschauen. Ich kenne es überhaupt nicht, aber hier im Forum gibt es viele, die begeistert sind.
Und was du dir auch überlegen kannst: wenn die Grafiken nur "ab und zu" upgedatet werden müssen, aber die VIS z.B. oft aktualisiert wird, dann mach Bilder draus.
Bei mir habe ich schlussendlich alle Grafiken in je einen Poup-Dialog verbannt. Da war auch mein Xoro MegaPad v2 wieder glücklich.
-
@TheDamned sagte in History oder Flot Performance-Fresser?:
In der Summe wollte ich in diesem Projekt so ca. 35-40 Flot-Charts einbauen. Aber dieses Vorhaben habe ich erst einmal hinten angestellt .
Das geht, wenn du die Grafen nicht allzu häufig aktualisierst. Ich hatte auf einer Ansicht in der VIS etwa 8 Flots gleichzeitig. Aber sie zeigten nur den Verlauf eines Tages.
Wenn du so viel mit Grafik machen willst, würde ich mal Grafana anschauen. Ich kenne es überhaupt nicht, aber hier im Forum gibt es viele, die begeistert sind.
Und was du dir auch überlegen kannst: wenn die Grafiken nur "ab und zu" upgedatet werden müssen, aber die VIS z.B. oft aktualisiert wird, dann mach Bilder draus.
Bei mir habe ich schlussendlich alle Grafiken in je einen Poup-Dialog verbannt. Da war auch mein Xoro MegaPad v2 wieder glücklich.
mmmh, dann muss ich mein Design wohl noch etwas überarbeiten.
Bleibt nur noch eine Frage offen:
Warum gibt es so viele Prozesse vom gleichen Zugriff?
Stromverbrauch.Summe.04_VerbraucAktuell hat die PID 6828, 6792, 6832, 6834, 6831, 6833, 6735
Ich greife aber pro Durchgang (alle 2 sek) nur einmal darauf zu. -
mmmh, dann muss ich mein Design wohl noch etwas überarbeiten.
Bleibt nur noch eine Frage offen:
Warum gibt es so viele Prozesse vom gleichen Zugriff?
Stromverbrauch.Summe.04_VerbraucAktuell hat die PID 6828, 6792, 6832, 6834, 6831, 6833, 6735
Ich greife aber pro Durchgang (alle 2 sek) nur einmal darauf zu.@TheDamned sagte in History oder Flot Performance-Fresser?:
(alle 2 sek)
Dann sind deine Datenpunkte auch alle 2 Sekunden?
Und deine Load liegt jetzt >8, also mehr als die doppelte maximale Auslastung
-
@TheDamned sagte in History oder Flot Performance-Fresser?:
(alle 2 sek)
Dann sind deine Datenpunkte auch alle 2 Sekunden?
Und deine Load liegt jetzt >8, also mehr als die doppelte maximale Auslastung
-
@Homoran uups, jetzt bin ich doch etwas irritiert.
Ich dachte der htop zeigt einen momentanen Zustand der Prozesse (also alle Prozesse die gerade zu einem Zeitpunkt aktiv sind) und nicht ein Blick in die Vergangenheit. -
@Homoran uups, jetzt bin ich doch etwas irritiert.
Ich dachte der htop zeigt einen momentanen Zustand der Prozesse (also alle Prozesse die gerade zu einem Zeitpunkt aktiv sind) und nicht ein Blick in die Vergangenheit.@TheDamned sagte in History oder Flot Performance-Fresser?:
ch dachte der htop zeigt einen momentanen Zustand der Prozesse
und warum zweifelst du jetzt daran?
@TheDamned sagte in History oder Flot Performance-Fresser?:
Ist das jetzt die große Prozessorlast?
Diese "Millionen" Informationen müssen ja in die Grafik einberechnet werden.
Dort werden ja immer eine bestimmte Anzahl zu einem Punkt zusammengerechnet (Aggregation).Bei jedem Refresh (und erst recht beim Zoom und Schieben) müssen diese alle wieder neu berechnet werden
DAS ist die Prozessorlast
-
@TheDamned sagte in History oder Flot Performance-Fresser?:
ch dachte der htop zeigt einen momentanen Zustand der Prozesse
und warum zweifelst du jetzt daran?
@TheDamned sagte in History oder Flot Performance-Fresser?:
Ist das jetzt die große Prozessorlast?
Diese "Millionen" Informationen müssen ja in die Grafik einberechnet werden.
Dort werden ja immer eine bestimmte Anzahl zu einem Punkt zusammengerechnet (Aggregation).Bei jedem Refresh (und erst recht beim Zoom und Schieben) müssen diese alle wieder neu berechnet werden
DAS ist die Prozessorlast
@Homoran Ich lese alle 2 Sek die Daten ein. Das sind dann 43200 Daten pro Tag.
Bei 4 Linien sind das dann 172800 Daten, die alle 10 sek im Flot-Chart berechnet werden müssen.Damit kann ich die Prozessorlast aber nur dann senken, wenn
- ich weniger Linien Zeichne (Informationsverlust) oder
- die Datenpunkte nicht alle 2 sek sondern nur z.B. alle 2 min einlese (Verlust der Granularität beim Zoomen)
Wenn dann der Staubsauger 1,5 min lang eingeschaltet wird, bekomme ich das bei meiner Strommessung nicht mit.
Irgendwo bin ich immer der Gekniffene :-(
-
@Homoran Ich lese alle 2 Sek die Daten ein. Das sind dann 43200 Daten pro Tag.
Bei 4 Linien sind das dann 172800 Daten, die alle 10 sek im Flot-Chart berechnet werden müssen.Damit kann ich die Prozessorlast aber nur dann senken, wenn
- ich weniger Linien Zeichne (Informationsverlust) oder
- die Datenpunkte nicht alle 2 sek sondern nur z.B. alle 2 min einlese (Verlust der Granularität beim Zoomen)
Wenn dann der Staubsauger 1,5 min lang eingeschaltet wird, bekomme ich das bei meiner Strommessung nicht mit.
Irgendwo bin ich immer der Gekniffene :-(
@TheDamned sagte in History oder Flot Performance-Fresser?:
Damit kann ich die Prozessorlast aber nur dann senken, wenn
Nope!
du kannst auch noch an der Aggregation spielen, wie viele Punkte pro Linie dargestellt werden sollen oder an der refresh- Rate@TheDamned sagte in History oder Flot Performance-Fresser?:
Irgendwo bin ich immer der Gekniffene
Oder du nimmst keinen RasPi sondern einen 128-Kerner mit Wasserkühlung
-
@TheDamned sagte in History oder Flot Performance-Fresser?:
Damit kann ich die Prozessorlast aber nur dann senken, wenn
Nope!
du kannst auch noch an der Aggregation spielen, wie viele Punkte pro Linie dargestellt werden sollen oder an der refresh- Rate@TheDamned sagte in History oder Flot Performance-Fresser?:
Irgendwo bin ich immer der Gekniffene
Oder du nimmst keinen RasPi sondern einen 128-Kerner mit Wasserkühlung
@Homoran said in History oder Flot Performance-Fresser?:
du kannst auch noch an der Aggregation spielen, wie viele Punkte pro Linie dargestellt werden sollen oder an der refresh- Rate
Wo stelle ich diese Aggregation ein?
RefreshRate meinst du sicherlich wie oft der Flot-Chart neu gezeichnet wird, oder?
(Einzustellen in FlotEditor unter Zeit -> Autoupdate alle xxx)Wenn ich diese Anzahl der Punkte reduziere (Aggregation ) und dann Zoome, habe ich dann auch einen Granularitätsverlust?
-
@Homoran said in History oder Flot Performance-Fresser?:
du kannst auch noch an der Aggregation spielen, wie viele Punkte pro Linie dargestellt werden sollen oder an der refresh- Rate
Wo stelle ich diese Aggregation ein?
RefreshRate meinst du sicherlich wie oft der Flot-Chart neu gezeichnet wird, oder?
(Einzustellen in FlotEditor unter Zeit -> Autoupdate alle xxx)Wenn ich diese Anzahl der Punkte reduziere (Aggregation ) und dann Zoome, habe ich dann auch einen Granularitätsverlust?
@TheDamned sagte in History oder Flot Performance-Fresser?:
Wenn ich diese Anzahl der Punkte reduziere (Aggregation ) und dann Zoome, habe ich dann auch einen Granularitätsverlust?
Nein, du musst dann nur groß genug zoomen.
Wenn du eingibst, ein Chart soll 300 Punkte haben, dann hast du bei zoom 10 Minuten alle Datenpunkte (2sec * 300 = 600sec)Du solltest dich nur mal fragen ob eine Auflösung von 2 Sekunden wirklich notwendig ist
-
@TheDamned sagte in History oder Flot Performance-Fresser?:
Wenn ich diese Anzahl der Punkte reduziere (Aggregation ) und dann Zoome, habe ich dann auch einen Granularitätsverlust?
Nein, du musst dann nur groß genug zoomen.
Wenn du eingibst, ein Chart soll 300 Punkte haben, dann hast du bei zoom 10 Minuten alle Datenpunkte (2sec * 300 = 600sec)Du solltest dich nur mal fragen ob eine Auflösung von 2 Sekunden wirklich notwendig ist
Flot-Charts werden bei mir bis auf eine Ausnahme immer nur als Pop-Up-Fenster angezeigt. Und auch die Ausnahme befindet sich auf einem View, der nicht standardmäßig angezeigt wird. So habe ich auch keine Performance-Probleme beim Aufruf meine Visualisierung. Die habe ich aber eh kaum, weil das Ganze bei mir auf einer Synology DiskStation mit 6 GB RAM im Docker-Container läuft. Als Datenbank nutze ich Maria DB 10, die ich per SQL-Adapter anspreche. So kann ich mir recht gut auch größere Zeiträume von 6 Monaten in Flot-Charts anzeigen lassen. Ich habe mir zudem ein Auswahlmenü für die Flot-Charts erstellt, mit dem ich schnell zwischen verschiedenen Anzeigzeiträumen (h, 6h, T, 3T, W, M, 6M) umschalten kann.
Sieht auf dem iPhone dann z.B. so aus:

Leider ist die Anzeige der x-Achsen-Skalierung nicht immer optimal. Aber das ist nicht die einzige Sache, die beim Flot-Adapter verbesserungswürdig wäre. ;)
-
Flot-Charts werden bei mir bis auf eine Ausnahme immer nur als Pop-Up-Fenster angezeigt. Und auch die Ausnahme befindet sich auf einem View, der nicht standardmäßig angezeigt wird. So habe ich auch keine Performance-Probleme beim Aufruf meine Visualisierung. Die habe ich aber eh kaum, weil das Ganze bei mir auf einer Synology DiskStation mit 6 GB RAM im Docker-Container läuft. Als Datenbank nutze ich Maria DB 10, die ich per SQL-Adapter anspreche. So kann ich mir recht gut auch größere Zeiträume von 6 Monaten in Flot-Charts anzeigen lassen. Ich habe mir zudem ein Auswahlmenü für die Flot-Charts erstellt, mit dem ich schnell zwischen verschiedenen Anzeigzeiträumen (h, 6h, T, 3T, W, M, 6M) umschalten kann.
Sieht auf dem iPhone dann z.B. so aus:

Leider ist die Anzeige der x-Achsen-Skalierung nicht immer optimal. Aber das ist nicht die einzige Sache, die beim Flot-Adapter verbesserungswürdig wäre. ;)
@dtp Wie mache ich das mit den PopUps?
Ich habe heute morgen mal mein System analysiert.
Ich hatte die View mit dem Flot-Chart im Vis-Editor offen.
Dann hatte ich den Flot-Editor noch offen und dann auch noch das "Zeige im Fenster".
So musste das Flot-Chart 4 mal gezeichnet werden. Das hat dann wohl meinen armen kleinen Pi überlastet.Wenn ich alle Fenster zumache und nur mein Projekt laufen lasse, ist es zwar immer noch hoch, aber deutlich besser.

Ich glaube, ich mach das auch mit den PopUps, wenn ich dann weiß, wie es geht.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden