DBLog - Historische Werte ausdünnen

Begonnen von C0mmanda, 14 September 2015, 18:38:21

Vorheriges Thema - Nächstes Thema

rapster

#90
Hi Sunny,

super, dann hat das geklappt!
Müsste denke ich jetzt auch bei @Sailor funktionieren :)

Möglich ist ja erstmal so ziemlich alles  ;)
Werde mir mal Gedanken drüber machen wie sich das am besten einbauen lässt, denke da an sowas wie "average=min=<mins>", und falls mir was gutes einfällt bei Gelegenheit einbauen :)

Hab grad nochmal eine kleines Update eingebaut, hauptsächlich bisschen aufgeräumt und die Log-Meldungen etwas erweitert...

2015.09.26 17:23:25.388 3: DbLog dbLog: reduceLog requested with DAYS=5, AVERAGE=HOUR, EXCLUDE=.*:.*
2015.09.26 17:23:32.588 3: DbLog dbLog: reduceLog executed. Rows processed: 603562, deleted: 0, updated: 0, excluded: 603562, time: 7.20sec


Gruß
  Claudiu

Sunny

Moin Claudiu,

Zitat von: rapster am 26 September 2015, 16:11:52
Müsste denke ich jetzt auch bei @Sailor funktionieren :)
Hatte per "htop" aber durchgängig mehr als 450 MB Speicherbelegung bei 100% Prozessorlast...

Zitat von: rapster am 26 September 2015, 16:11:52
Möglich ist ja erstmal so ziemlich alles  ;)
Werde mir mal Gedanken drüber machen wie sich das am besten einbauen lässt, denke da an sowas wie "average=min=<mins>", und falls mir was gutes einfällt bei Gelegenheit einbauen :)
Das klingt ja Klasse!  ;D

Falls Du etwas getestet haben möchtest ...

Vielen Dank & viele Grüße
Sunny


FHEM 6.0 (RPi's 1b-4,CeleronM,Odroid C1+)
1-Wire (DS18B20,DS2406) |miniCUL|miniCUL868WLAN|HM|IT(-1500,LR-3500) |FB6591,FB7490,FB7580|DECT200|Powerline546E|520E|openwrt
Anfänger: Linux,FHEM+Perl

rapster

Zitat von: Sunny am 26 September 2015, 16:24:41
Hatte per "htop" aber durchgängig mehr als 450 MB Speicherbelegung bei 100% Prozessorlast...

Wie hoch war die Speicherbelegung vor reduceLog?
Wichtig wäre mit der neuen Version ebenfalls von wem der Speicher verbraucht wurde,
da jetzt die Datenbank-Seite das Ergebniss buffern sollte, und die Perl-Seite (fhem) eigentlich nur zusätzlichen Speicher für etwa 2x alle Zeilen des gerade zu bearbeitenden Tages benötigt.

Die CPU wird allerdings immer auf 100% laufen, egal wie groß die auch ausfällt, reducLog will ja schnellstmöglich fertig werden  ;D

Gruß
  Claudiu

Sunny

Moin Claudiu,

Zitat von: rapster am 26 September 2015, 17:37:39
Die CPU wird allerdings immer auf 100% laufen, egal wie groß die auch ausfällt, reducLog will ja schnellstmöglich fertig werden  ;D
Ist ja auch besser so...  ;)

Hier mal Ausgaben der letzten Version:
2015.09.26 17:29:41.016 3: DbLog sysDb: reduceLog requested.

2015.09.26 17:29:50.317 3: DbLog sysDb: reduceLog executed. Rows processed: 27841, deleted: 26012, time: 9.00sec
2015.09.26 17:29:50.344 2: DbLog_sysDb_log_di: set sysDb reduceLog 1: reduceLog executed. Rows processed: 27841, deleted: 26012, time: 9.00sec

2015.09.26 17:30:50.016 3: DbLog myDbLog: reduceLog requested.

2015.09.26 17:30:50.440 3: DbLog myDbLog: reduceLog executed. Rows processed: 1551, deleted: 798, time: 0.00sec
2015.09.26 17:30:50.457 2: DbLog_sysDb_log_di:  set myDbLog reduceLog 1: reduceLog executed. Rows processed: 1551, deleted: 798, time: 0.00sec


Zitat von: rapster am 26 September 2015, 17:37:39
Wie hoch war die Speicherbelegung vor reduceLog?
Siehe Bild im Anhang.

Zitat von: rapster am 26 September 2015, 17:37:39
Wichtig wäre mit der neuen Version ebenfalls von wem der Speicher verbraucht wurde,
da jetzt die Datenbank-Seite das Ergebniss buffern sollte, und die Perl-Seite (fhem) eigentlich nur zusätzlichen Speicher für etwa 2x alle Zeilen des gerade zu bearbeitenden Tages benötigt.

Kann ich später nochmal testen, gib es eine Möglichkeit, dieses "Mitzuschneiden" ?
(Sorry, bin noch Linux "beginner"...  :-[ )
Oder willst Du ein paar Screenshots?

<OT an> Muss jetzt erstmal noch etwas zu beißen "jagen"...  ;) <OT aus>

Viele Grüße & bis später
Sunny

FHEM 6.0 (RPi's 1b-4,CeleronM,Odroid C1+)
1-Wire (DS18B20,DS2406) |miniCUL|miniCUL868WLAN|HM|IT(-1500,LR-3500) |FB6591,FB7490,FB7580|DECT200|Powerline546E|520E|openwrt
Anfänger: Linux,FHEM+Perl

rapster

#94
Hi Sunny,

reduceLog scheint bei dir i.M. 2x ausgeführt zu werden, entweder nach absetzen des Befehls in Fhem die Browser-Seite schließen, oder direkt über Telnet den Befehl absetzen.
Da sonst der Browser den Befehl aufgrund der Wartezeit evtl. doppelt sendet.

Als einfache Möglichkeit könntest du mal diesen Shell Befehl vor und während der Ausführung von reduceLog ausführen und die Ergebnisse mal posten (Fhem davor bitte 1x neustarten):

ps aux | grep "fhe[m].pl\|mysq[l]"

Die Grep Suchpattern mit den richtigen Namen deiner Prozesse ersetzen...

Gruß
  Claudiu

Sunny

Juten Abend Claudiu,

Zitat von: rapster am 26 September 2015, 18:29:05
reduceLog scheint bei dir i.M. 2x ausgeführt zu werden...

Jupp, sind zwei Datenbanken, die per Dummy, Doif und at aufgerufen werden können.
( Bild im Anhang )
Eine für Systemnahe Daten und eine für meine Sensordaten. ;)
Daher passt das schon, mit dem grep muss ich wohl noch mal schauen, wie das genau funzt. :-[

Lang Dir das mit den jetzigen Daten oder lieber wieder mit der größeren "Test-DB" ?

Viele Grüße
Sunny

PS: Teste im Moment nur mit dem BPi (legacy(Debian 7/Wheezy) version: 15.04), die RPi's sind vom Linux ein bißchen abgespeckt.
FHEM 6.0 (RPi's 1b-4,CeleronM,Odroid C1+)
1-Wire (DS18B20,DS2406) |miniCUL|miniCUL868WLAN|HM|IT(-1500,LR-3500) |FB6591,FB7490,FB7580|DECT200|Powerline546E|520E|openwrt
Anfänger: Linux,FHEM+Perl

rapster

Stimmt, in deinem Log sind ja auch 2 verschiedene definition-Namen, dann passt das natürlich :)

Das ps aux kann man auch jeweils mit 2 Befehlen vor und während der Ausführung machen

ps aux | grep "fhe[m].pl"
ps aux | grep "nameDeinesMySqlProzesses"

das Grep soll nur die Ausgabe von "ps aux" filtern, damit nicht alle deine Prozesse ausgegeben werden :)

Von der Datenmenge her kommts drauf an, ob es zumindest so viele Daten sind damit man bisschen was erkennen kann, dann reichts ;)
Allerdings ist das ganze ja mehr informativ, also nicht so schlimm, viel Aufwand brauchst du da jetzt nicht betreiben!

Gruß
  Claudiu


Sunny

#97
Juten Abend Claudiu,

Zitat von: rapster am 26 September 2015, 20:10:37
Stimmt, in deinem Log sind ja auch 2 verschiedene definition-Namen, dann passt das natürlich :)
Tja, so ist das manchmal mit dem lesen.  ;)

habe gerade mal ohne "Neustart" dieses:
ps aux | grep "fhe[m].pl\|myDbLog[l]"
eingegeben und dies:
root@BPiServer:~# ps aux | grep "fhe[m].pl\|myDbLog[l]"
fhem      1987  0.8  4.3  47196 43444 ?        S    16:28   1:47 perl fhem.pl fhem.cfg
fhem      7840  0.1  4.0  47196 40688 ?        S    20:08   0:00 perl fhem.pl fhem.cfg
root@BPiServer:~#

wurde ausgegeben.
Entspricht das in etwa dem, was Du sehen möchtest...

Du warst schneller... Teste ich auch gleich mal.

Viele Grüße
Sunny

<EDIT an>
Dies:
ps aux | grep "fhe[m].pl"
ps aux | grep "myDbLog"

ergibt ohne "Neustart", das:
root@BPiServer:~# ps aux | grep "fhe[m].pl"
fhem      1987  0.7  4.3  47196 43444 ?        S    16:28   1:50 perl fhem.pl fhem.cfg
fhem      8115  0.4  4.0  47196 40580 ?        S    20:19   0:00 perl fhem.pl fhem.cfg
root@BPiServer:~# ps aux | grep "myDbLog"
root      8119  0.0  0.0   3720   744 pts/0    S+   20:19   0:00 grep myDbLog
root@BPiServer:~#

Ach so, soll ich es als "root" oder als "user" aufrufen?
<EDIT ist aus>
Nochmals Grüße & Danke
Sunny
FHEM 6.0 (RPi's 1b-4,CeleronM,Odroid C1+)
1-Wire (DS18B20,DS2406) |miniCUL|miniCUL868WLAN|HM|IT(-1500,LR-3500) |FB6591,FB7490,FB7580|DECT200|Powerline546E|520E|openwrt
Anfänger: Linux,FHEM+Perl

rapster

#98
Hi Sunny,

fast,
das "myDbLog[l]" ist deine Fhem-Devicename, hier muss der Name des Linux-Prozess deiner SQL-Datenbak rein.

in der Ausgabe erkennt man jetzt z.B. das die PID 1987 (dein FHEM) ~47MB Virtuel-Memory und eine ~43MB Resident Set Size hat.

Jetzt noch irgendwie den Memory Verbrauch deiner SQL-Datenbak dann kann man das mit dem Daten während reduceLog vergleichen :)

Hat es einen Grund warum du fhem 2x gestartet hast? (Evtl. kommt das aber auch durch irgend ein Modul...)

Gruß
  Claudiu

EDIT ;)

root@BPiServer:~# ps aux | grep "myDbLog"
root      8119  0.0  0.0   3720   744 pts/0    S+   20:19   0:00 grep myDbLog

gibt grad den grep-Prozess selber aus, dies kann man durch eine suche wie nach der fhem.pl verhindern in dem man einen beliebigen Buchstaben in [] setzt.
Also so z.B.: ps aux | grep "my[D]bLog"
Jetzt muss nurnoch der Name des Linux Prozess da rein :)

Sunny

Nabend Claudiu,

Zitat von: rapster am 26 September 2015, 20:25:32
Hat es einen Grund warum du fhem 2x gestartet hast? (Evtl. kommt das aber auch durch irgend ein Modul...)
Habe es nicht bewusst 2x gestartet.
Liegt es an "FHEM2FHEM"Fhem info:
  Release  : 5.6
  OS       : linux
  Arch     : arm-linux-gnueabihf-thread-multi-64int
  Perl     : v5.14.2
  uniqueID : 0a012df4a0cb2361b1ac081c61a5f836
  upTime   : 03:58:10

Defined modules:
  CUL           : 1
  CUL_TCM97001  : 1
  DOIF          : 3
  DbLog         : 2
  FBAHA         : 2
  FBDECT        : 7
  FHEMWEB       : 3
  FRITZBOX      : 3
  FileLog       : 3
  IT            : 21
  PROPLANTA     : 1
  SVG           : 15
  SYSMON        : 1
  Twilight      : 1
  Weather       : 1
  at            : 9
  autocreate    : 1
  dummy         : 2
  eventTypes    : 1
  holiday       : 1
  notify        : 4
  readingsGroup : 1
  telnet        : 1
  weblink       : 1

Defined models per module:
  CUL           : CUL
  CUL_TCM97001  : TCM97...
  FBDECT        : Dect200,Powerline546E
  IT            : itswitch
?

Meinst Du mit:
Zitat von: rapster am 26 September 2015, 20:25:32
Jetzt noch irgendwie den Memory Verbrauch deiner SQL-Datenbak dann kann man das mit dem Daten während reduceLog vergleichen :)
die Größe der "fhem.db" (myDbLog-File) werden dann "596 MB (625.651.712 Bytes)".

Hoffe ich verstehe Dich richtig...

Vielen Dank
Sunny
FHEM 6.0 (RPi's 1b-4,CeleronM,Odroid C1+)
1-Wire (DS18B20,DS2406) |miniCUL|miniCUL868WLAN|HM|IT(-1500,LR-3500) |FB6591,FB7490,FB7580|DECT200|Powerline546E|520E|openwrt
Anfänger: Linux,FHEM+Perl

rapster

Warum es 2x gestartet ist kann ich leider nicht sagen, fhem2fhem setze ich selber nicht ein :-\

verwendest du SQLITE? Dann hast du keinen zusätzlichen prozess die ene ps aux abfrage reicht aus :)

Gruß
  Claudiu

Sunny

Zitat von: rapster am 26 September 2015, 20:51:47
verwendest du SQLITE? Dann hast du keinen zusätzlichen prozess die ene ps aux abfrage reicht aus :)
Ja, verwende ich.
Meinst Du:2015.09.26 20:51:02.545 3: Connection to db SQLite:dbname=/opt/fhem/fhem.db established for pid 8813
2015.09.26 20:51:02.555 3: Connection to db SQLite:dbname=/opt/fhem/fhem.db established
2015.09.26 20:51:02.567 3: Connecting to database SQLite:dbname=/opt/fhem/sys.db with user
2015.09.26 20:51:02.571 3: Connection to db SQLite:dbname=/opt/fhem/sys.db established for pid 8813
2015.09.26 20:51:02.581 3: Connection to db SQLite:dbname=/opt/fhem/sys.db established

Das ich dann "pid 8813" eingeben soll ?

Danke für Deine Geduld
Sunny
FHEM 6.0 (RPi's 1b-4,CeleronM,Odroid C1+)
1-Wire (DS18B20,DS2406) |miniCUL|miniCUL868WLAN|HM|IT(-1500,LR-3500) |FB6591,FB7490,FB7580|DECT200|Powerline546E|520E|openwrt
Anfänger: Linux,FHEM+Perl

rapster

Ne, SQLITE hat keinen eigenen Linux Prozess, dachte schon fast ich bin hier der einzige im Thread der SQLITE verwendet  :D

also einfach einmal

root@BPiServer:~# ps aux | grep "fhe[m].pl"

vor, und einmal während reduceLog ausgeführt wird :)

Gruß
  Claudiu

Sunny

So, der Test läuft. Bpi ist Neugestartet.

Vorher:
countCurrent 0 2015-09-26 21:15:53
countHistory 3096306 2015-09-26 21:15:53
ps aux | grep "fhe[m].pl"

root@BPiServer:~# ps aux | grep "fhe[m].pl"
fhem      1983  4.2  3.6  40324 36492 ?        S    21:11   0:13 perl fhem.pl fhem.cfg


Und während:
root@BPiServer:~# ps aux | grep "fhe[m].pl"
fhem      1983  6.7  8.8  91676 87972 ?        R    21:11   0:27 perl fhem.pl fhem.cfg

root@BPiServer:~# ps aux | grep "fhe[m].pl"
fhem      1983 15.6 28.5 287036 283292 ?       R    21:11   1:10 perl fhem.pl fhem.cfg

root@BPiServer:~# ps aux | grep "fhe[m].pl"
fhem      1983 34.2 42.6 427384 423676 ?       R    21:11   3:20 perl fhem.pl fhem.cfg

root@BPiServer:~# ps aux | grep "fhe[m].pl"
fhem      1983 36.0 42.6 427480 423772 ?       R    21:11   3:37 perl fhem.pl fhem.cfg


Und Sorry, hatte ja FHEM2FHEM vom BPi runter geschmissen und nur noch auf dem RPi.
Bin gerade nicht so voll konzentriert... :-[

Recht herzlichen Dank für Deine Geduld
Sunny

root@BPiServer:~# ps aux | grep "fhe[m].pl"
fhem      1983 47.9 42.7 428312 424604 ?       R    21:11   6:12 perl fhem.pl fhem.cfg
FHEM 6.0 (RPi's 1b-4,CeleronM,Odroid C1+)
1-Wire (DS18B20,DS2406) |miniCUL|miniCUL868WLAN|HM|IT(-1500,LR-3500) |FB6591,FB7490,FB7580|DECT200|Powerline546E|520E|openwrt
Anfänger: Linux,FHEM+Perl

stromer-12

So, mal von mir auch wieder was:

2015.09.26 21:26:52 3: DbLog myDbLog: reduceLog requested with DAYS=400, AVERAGE=HOUR
2015.09.26 21:27:56 3: DbLog myDbLog: reduceLog deleting 1941 records of day: 2014-08-18
2015.09.26 21:28:00 3: DbLog myDbLog: reduceLog (hourly-average) updating 107 records of day: 2014-08-18
2015.09.26 21:28:05 3: DbLog myDbLog: reduceLog deleting 48598 records of day: 2014-08-19
2015.09.26 21:29:27 3: DbLog myDbLog: reduceLog (hourly-average) updating 2647 records of day: 2014-08-19
2015.09.26 21:29:40 3: DbLog myDbLog: reduceLog deleting 47575 records of day: 2014-08-20
2015.09.26 21:31:02 3: DbLog myDbLog: reduceLog (hourly-average) updating 2639 records of day: 2014-08-20
2015.09.26 21:31:18 3: DbLog myDbLog: reduceLog deleting 46389 records of day: 2014-08-21
2015.09.26 21:32:43 3: DbLog myDbLog: reduceLog (hourly-average) updating 2488 records of day: 2014-08-21
2015.09.26 21:32:50 3: DbLog myDbLog: reduceLog executed. Rows processed: 532824, deleted: 144503, updated: 7881, time: 358.00sec



Vor reduceLog
root@cubietruck:~# ps aux | grep "fhe[m].pl\|mysq[l]"
root      2465  0.0  0.0   1420   124 ?        S    Sep22   0:00 /bin/sh /usr/bin/mysqld_safe
mysql     2883  6.8  7.3 318780 150888 ?       Sl   Sep22 390:44 /usr/sbin/mysqld .....
fhem     12628  0.0  0.6  31020 13632 ?        S    01:12   0:58 /usr/bin/perl fhem.pl fhem2.cfg
fhem     12642  6.8  3.5  92048 71768 ?        S    01:13  76:32 /usr/bin/perl fhem.pl fhem.cfg


Während reduceLog
root@cubietruck:~# ps aux | grep "fhe[m].pl\|mysq[l]"
root      2465  0.0  0.0   1420   124 ?        S    Sep22   0:00 /bin/sh /usr/bin/mysqld_safe
mysql     2883  6.8  7.3 318780 150916 ?       Sl   Sep22 396:00 /usr/sbin/mysqld ........
fhem     12628  0.1  4.2 105140 87768 ?        R    01:12   2:07 /usr/bin/perl fhem.pl fhem2.cfg
fhem     12642  6.8  3.5  92048 71768 ?        S    01:13  83:01 /usr/bin/perl fhem.pl fhem.cfg


Nach reduceLog
root@cubietruck:~# ps aux | grep "fhe[m].pl\|mysq[l]"
root      2465  0.0  0.0   1420   124 ?        S    Sep22   0:00 /bin/sh /usr/bin/mysqld_safe
mysql     2883  6.8  7.3 318780 150944 ?       Sl   Sep22 399:41 /usr/sbin/mysqld ......
fhem     12628  0.2  1.9  56792 39452 ?        S    01:12   3:10 /usr/bin/perl fhem.pl fhem2.cfg
fhem     12642  6.8  3.5  92048 71768 ?        S    01:13  83:23 /usr/bin/perl fhem.pl fhem.cfg
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL