Langsame Ploterstellung seit wechsel auf dem PI

Begonnen von Afterburner, 07 Dezember 2015, 14:15:52

Vorheriges Thema - Nächstes Thema

Afterburner

Ich grabe den Therad nochmal aus da es schon wieder los geht, ich habe jetzt als Beispiel beim Thermostat in der Küche bei
DbLogExclude
diese Readings ausgeschlossen   
MAXLAN_error,MAXLAN_errorInCommand,MAXLAN_initialized,MAXLAN_isAnswer,MAXLAN_valid,boostDuration,boostValveposition,state

zusätzlich noch in MySQL

DELETE FROM history WHERE READING = 'MAXLAN_valid';
DELETE FROM history WHERE READING = 'MAXLAN_errorInCommand';
DELETE FROM history WHERE READING = 'MAXLAN_error';
DELETE FROM history WHERE READING = 'MAXLAN_initialized';
DELETE FROM history WHERE READING = 'MAXLAN_errorInCommand';


und zusätzlich neben dem Index auf TIMESTAMP und DEVICE noch einen Index auf READING
danach noch ein Optimize table

trotzdem dauert es 8-9 Sekunden bis der Plot angezeigt wird welcher jede Minute einmal geloggt wird

Ich bekomme langsam das Gefühl das FHEM immer die gesamte Datenbank mit allen Einträgen und allen Zeiten einliest und dann in der Schleife sich nur das raus sucht was man zur Verarbeitung braucht statt

SELECT * FROM `history` WHERE DEVICE = 'Heizung.Kueche' AND TIMESTAMP < '2015-12-15 23:59:59' AND TIMESTAMP > '2015-12-15 00:00:01' AND READING IN('temperature','mode', 'valveposition', 'desiredTemperature')

hier noch mein SVG File

# Created by FHEM/98_SVG.pm, 2015-12-07 10:40:52
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title 'Heizung.Kueche <L1>'
set ytics
set y2tics ("100%" 100, "50%" 50, "0%" 0, "Auto" 20, "Manu" 10)
set grid ytics y2tics
set ylabel "Temperatur °C"
set y2label "Ventil / Mode"
set yrange [5:40]
set y2range [-0.2:110]

#logdb Heizung.Kueche:temperature
#logdb Heizung.Kueche:desiredTemperature
#logdb Heizung.Kueche:valveposition
#logdb Heizung.Kueche:mode:::$val=($val=~'manual'?10:20)

plot "<IN>" using 1:2 axes x1y1 title 'Temperatur' ls l1fill lw 0.2 with lines,\
"<IN>" using 1:2 axes x1y1 title 'Temperatur (Soll)' ls l2 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Ventilstellung' ls l3 lw 3 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Mode' ls l0 lw 3 with lines
CUL 868 --> Dirks Universalsensor - ESA200 Strommesser
HM USB --> HM Klingelsensor - HM Zwischenstecker
MAXLAN --> 5 x Thermostat - 4 x Fensterkontakt - ECO Taster - Cube
Arduino Nano V3.0 CC1101 433 MHz --> für Revolt Strommesser
bestellt: JeeLink 868 --> für TX 29 DT-HT Außensender

dev0

Zitat von: Afterburner am 15 Dezember 2015, 20:26:48
Ich bekomme langsam das Gefühl das FHEM immer die gesamte Datenbank mit allen Einträgen und allen Zeiten einliest

Irgendwelche Beweise oder Anhaltspunkte für diese wilde Vermutung?
Weder der Code in DbLog_Get() noch ein verbose 4 log deuten daruf hin.
2015.12.16 08:58:33.847 4: Processing Statement: SELECT
                  DATE_FORMAT(TIMESTAMP, '%Y-%m-%d %H:%i:%s'),
                  DEVICE,
                  READING,
                  VALUE
                   FROM history WHERE 1=1 AND DEVICE  = 'BA_HEIZUNG' AND READING = 'measured-temp' AND TIMESTAMP >= STR_TO_DATE('2015-12-15 09:00:00', '%Y-%m-%d %H:%i:%s') AND TIMESTAMP < STR_TO_DATE('2015-12-16 09:00:01', '%Y-%m-%d %H:%i:%s') ORDER BY TIMESTAMP

Afterburner

Na es war ja nur ne wilde Vermutung gewesen da es mit der Zeit immer langsamer wird ... das Query schaut OK aus, danke für die Info. :)
Ist der PI2 denn so schlecht von der Performance her ? Ich hatte 2004 nen Server mit Single Core für mein Forum der hat u.a. auch Grafiken für Statistiken mit gdlib erstellt
Naja dann muss wohl notfalls noch nen Intel NUC Quad Core her der den PI ablöst
CUL 868 --> Dirks Universalsensor - ESA200 Strommesser
HM USB --> HM Klingelsensor - HM Zwischenstecker
MAXLAN --> 5 x Thermostat - 4 x Fensterkontakt - ECO Taster - Cube
Arduino Nano V3.0 CC1101 433 MHz --> für Revolt Strommesser
bestellt: JeeLink 868 --> für TX 29 DT-HT Außensender

Wernieman

Es gibt auch alternativen zum NUC ... nur mal als Anregung
(z.B. Zotac Box, die haben teilweise nicht mal einen Lüfter, im Gegensatz zum NUC)

Nach dem nochmaligen Durchlesen des Threads stellt sich mir eher die Frage: Hat Dein RasPi ein Problem? Wie sieht die Systembelastung (CPU, IO, RAM etc.) während der Graferstellung aus?

Ansonsten schlägst Du ein Problem nur durch Leistung ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

BKSolo

#34
Hallo zusammen, ich habe im Fhem das DbLog auf meinem Ruspberry Pi 2 Test aufgesetzt.

Dazu verwende ich das SQLite als SQL Datenbank, da es weniger Ressourcen braucht als MySQL.

Kann über die Plot-Performance noch nicht viel sagen, läuft aber sehr gut. Vier Plots aus einer DB mit 2558 Records < 2 Sekunden.
Gute Infos habe ich auf https://www.turais.de/fhem-logging-in-eine-sql-datenbank-2/ gefunden.

Ein DB Browser für SQLite gibt es http://sqlitebrowser.org/

Bruno
Raspberry PI 2/3 - CUL-433(V3) - CUL-868 (V3) - Jeelink 868 - 433 S/E Eigenbau
TX29DTH-IT - FHT80B - FHT80TF - FS20KSE
FHEMobile 3.7r803 - Fhem2Fhem - Alpha2 - OZW672 - TelegramBot

Afterburner

@Wernieman

siehe Screenshot von Top, das war aber ne Seite mit 10 SVGs wovon 5 jeweils 4 Werte Plotten, 4 jeweils 2 und 1 plottet nur einen.
Die Zotac Box kannte ich noch nicht, schaut ja stylisch aus, aber vom Preis her auch nicht anders wenn nicht sogar teurer wenn ich das jetzt mal schnell überflogen habe.

@BKSolo
SQLite hatte ich zuerst auch mal probiert, aber PHPmyAdmin zur Verwaltung ist mir dann doch lieber
CUL 868 --> Dirks Universalsensor - ESA200 Strommesser
HM USB --> HM Klingelsensor - HM Zwischenstecker
MAXLAN --> 5 x Thermostat - 4 x Fensterkontakt - ECO Taster - Cube
Arduino Nano V3.0 CC1101 433 MHz --> für Revolt Strommesser
bestellt: JeeLink 868 --> für TX 29 DT-HT Außensender

Wernieman

was mich wundert, 75% idl, aber die Kiste soll langsam sein?

Wie man sieht, verbraucht eigentlich mysql am meisten,sowohl Cpu als auch mem. (p.s. Du hast swap auf dem Pi?)

aaaaaaaper ... Du hast einen X-Server Laufen? Auf einem Server??
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

dev0

Zitat von: Wernieman am 16 Dezember 2015, 11:24:42
was mich wundert, 75% idl, aber die Kiste soll langsam sein?
1 von 4 Kernen ist am Anschlag würde ich daraus lesen. plotfork eingeschaltet?

Afterburner

Ja xrdp ist da drauf aber das hat ja mit dem Problem hier nichts zu tun, hat halt den Vorteil das ich von jedem Windows PC rauf komme OHNE mir da irgendwelche VNC Clienten installieren zu müssen, und ja ich weiß es gibt auch VNC Portable ;)

Swap ? Ich habe das System nicht aufgesetzt, das kam so bei mir komplett an, ist das Set von hier:
http://www.pollin.de/shop/dt/ODMzNzkyOTk-/Bausaetze_Module/Entwicklerboards/Raspberry_Pi_2_mit_Touch_Display_Display_T_Box_16_GB_microSD_Karte.html

@dev0

plotfork kann ich in der fhem.cnf nicht finden, wüsste jetzt auf Anhieb ohne zu googeln auch nicht wo man das aktiviert
CUL 868 --> Dirks Universalsensor - ESA200 Strommesser
HM USB --> HM Klingelsensor - HM Zwischenstecker
MAXLAN --> 5 x Thermostat - 4 x Fensterkontakt - ECO Taster - Cube
Arduino Nano V3.0 CC1101 433 MHz --> für Revolt Strommesser
bestellt: JeeLink 868 --> für TX 29 DT-HT Außensender

dev0

plotfork ist ein FHEMWEB Attribut, siehe command ref.

Afterburner

#40
Ja da habe ich es inzwischen auch schon gefunden ;)
Soll ich da jetzt was eintragen ? Wenn ja was ?

EDIT: Habe gerade mal geguckt, da kann man nur 0 und 1 auswählen, ist das so gewollt ?
EDIT2: Habe es jetzt mal aktiviert und es kommt mir um einiges schneller vor, schauen wir mal wie es heute Abend ausschaut
EDIT3: Wenn man jetzt die Seiten erneut aufruft sind die Plots fast sofort da

dev0 Du bist mein Held des Tages :)
CUL 868 --> Dirks Universalsensor - ESA200 Strommesser
HM USB --> HM Klingelsensor - HM Zwischenstecker
MAXLAN --> 5 x Thermostat - 4 x Fensterkontakt - ECO Taster - Cube
Arduino Nano V3.0 CC1101 433 MHz --> für Revolt Strommesser
bestellt: JeeLink 868 --> für TX 29 DT-HT Außensender

Wernieman

Sorry, aber warum sollte man grafisch auf einen Server wollen? Also warum VNC ... gibt dafür ssh ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Afterburner

z.B. weil ich nur dort den Eventmonitor nutzen kann, der funktioniert nicht auf meinen Windowsrechnern (kein Killer Netzwerktreiber und keine Sohos Firewall)
CUL 868 --> Dirks Universalsensor - ESA200 Strommesser
HM USB --> HM Klingelsensor - HM Zwischenstecker
MAXLAN --> 5 x Thermostat - 4 x Fensterkontakt - ECO Taster - Cube
Arduino Nano V3.0 CC1101 433 MHz --> für Revolt Strommesser
bestellt: JeeLink 868 --> für TX 29 DT-HT Außensender

Wernieman

Der funktioniert auch über "telnet" ... ;o)

Alternativ: anderen Browser probiert?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Afterburner

Ja neben FF auch Chrome und Edge und eben noch den Opera. Hatte Bitdefender auch schon mal deaktiviert aber keine Änderung, deinstallieren möchte ich den jetzt deswegen nicht. Googeln nach "bitdefender longpoll" oder "longpoll windows 10" hatte auch nicht geholfen.

Aber das wird jetzt hier dann wohl Offtopic, k.A. ob das hier im Forum OK ist, hatte das Problem auch hier mal angehangen
http://forum.fhem.de/index.php/topic,35715.msg373310.html#msg373310

----

Ansonsten werden die Plots inzwischen immer noch sehr schnell generiert, auch wenn ich auf "EVERYTHING" einen Tag zurück gehe, solch eine kleine Einstellung die alles ausgebremst hatte ^^

Das Einzige was jetzt noch nervt ist das mein FHEM log jetzt mit den DB Einträgen "zugemüllt" wird
2015.12.16 13:19:11 3: Connecting to database mysql:database=fhem;host=localhost;port=3306 with user fhem
2015.12.16 13:19:11 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established for pid 4985
2015.12.16 13:19:12 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established for pid 4984
2015.12.16 13:19:12 3: Connecting to database mysql:database=fhem;host=localhost;port=3306 with user fhem
2015.12.16 13:19:12 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established for pid 4986
2015.12.16 13:19:13 3: Connecting to database mysql:database=fhem;host=localhost;port=3306 with user fhem
2015.12.16 13:19:13 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established for pid 4987
2015.12.16 13:19:13 3: Connecting to database mysql:database=fhem;host=localhost;port=3306 with user fhem
2015.12.16 13:19:13 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established for pid 4988
2015.12.16 13:19:13 3: Connecting to database mysql:database=fhem;host=localhost;port=3306 with user fhem
2015.12.16 13:19:13 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established for pid 4989
2015.12.16 13:19:13 3: Connecting to database mysql:database=fhem;host=localhost;port=3306 with user fhem
2015.12.16 13:19:13 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established for pid 4990
CUL 868 --> Dirks Universalsensor - ESA200 Strommesser
HM USB --> HM Klingelsensor - HM Zwischenstecker
MAXLAN --> 5 x Thermostat - 4 x Fensterkontakt - ECO Taster - Cube
Arduino Nano V3.0 CC1101 433 MHz --> für Revolt Strommesser
bestellt: JeeLink 868 --> für TX 29 DT-HT Außensender