Autor Thema: FileLog notify Reduzierung  (Gelesen 1563 mal)

Offline noansi

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1310
FileLog notify Reduzierung
« am: 06 August 2021, 10:12:44 »
Hallo Rudolf,

mir ist aufgefallen, dass das
# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog
FileLog device unnötigerweise über jedes event informiert wird, mit dem es jedoch nichts anfangen kann. Damit also sehr oft unnötig Rechenzeit verschwendet wird.

Mit dem angehängten Patch wird das auf 'global' events reduziert.
Ein reines default dummy device, welches gar keine events erzeugt, kenne ich nicht, sonst hätte ich das gewählt.
Wäre schön, wenn Du das übernehmen würdest, falls ich nicht eine wesentliche Funktion dieser notifies übersehen habe.

Gruß und Danke, Ansgar.
« Letzte Änderung: 06 August 2021, 10:18:37 von noansi »

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 24505
Antw:FileLog notify Reduzierung
« Antwort #1 am: 06 August 2021, 10:27:27 »
Ich habe zunehmend Probleme mit dem Hartkodieren von Namen. Ich bin selbst dabei nicht unschuldig, fuer diesen Fall testet FileLog.pm auf REGEXP eq "'fakelog'.

Besser waere meiner Ansicht nach den Regexp in fhem.cfg auf Logfile zu setzen, und die Tests in FileLog auf REGEXP eq NAME zu aendern. Das wird zwar nach einem update keinen direkten Vorteil bringen, ist aber auf Dauer mAn sauberer. Meinungen?

Offline noansi

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1310
Antw:FileLog notify Reduzierung
« Antwort #2 am: 06 August 2021, 10:58:45 »
Hallo Rudolf,

Hinweis: Es gibt noch zwei weitere Abfragen auf $hash->{REGEXP} eq 'fakelog' in FileLog.

Zitat
Besser waere meiner Ansicht nach den Regexp in fhem.cfg auf Logfile zu setzen, und die Tests in FileLog auf REGEXP eq NAME zu aendern. Das wird zwar nach einem update keinen direkten Vorteil bringen, ist aber auf Dauer mAn sauberer. Meinungen?
Persönlich habe ich damit keine Schmerzen.

Jeder muss dann seine config darauf anpassen. Es sei denn, Du baust eine automatische Kompatibilitätsübersetzung mit ein. Damit haben dann vielleicht andere Schmerzen.

Edit:
'Logfile' ist natürlich ebenso hartkodiert.
Generell so eine Abfrage auf REGEXP eq NAME zu nutzen sehe ich aber nicht. Selbstnotfizierender code mit zustandsabhängigen Abbruch, falls das gebraucht würde/wird, wäre damit dann problematisch.

Gruß, Ansgar.
« Letzte Änderung: 06 August 2021, 11:19:14 von noansi »

Offline noansi

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1310
Antw:FileLog notify Reduzierung
« Antwort #3 am: 06 August 2021, 12:39:50 »
Hallo Rudolf,

'global' events könnte man (mit noch unveränderter Prüfungslogik) auch noch so von Logfile fernhalten.
    notifyRegexpChanged($hash, $hash->{REGEXP},
                        ($hash->{NAME} eq 'Logfile' && $hash->{REGEXP} eq 'fakelog') ); #noansi: avoid Logfile fakelog to be notified by everything

Gruß, Ansgar.

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 24505
Antw:FileLog notify Reduzierung
« Antwort #4 am: 06 August 2021, 12:59:12 »
Das ist mir bewusst, ist aber noch mehr hartkodiert.
Zu meinem erstaunen gibt es drei weitere Module, die mit fakelog herumspielen, wenn ich was aendern werde, muessen die Maintainer auch benachrichtigt werden.

Offline noansi

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1310
Antw:FileLog notify Reduzierung
« Antwort #5 am: 06 August 2021, 13:29:24 »
Hallo Rudolf,

Zitat
Zu meinem erstaunen gibt es drei weitere Module, die mit fakelog herumspielen, wenn ich was aendern werde, muessen die Maintainer auch benachrichtigt werden.
... und auch fhem/www/frontend/www/frontend/app/ChartController.js schaut nach fakelog.

Gruß, Ansgar.

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 24505
Antw:FileLog notify Reduzierung
« Antwort #6 am: 06 August 2021, 13:33:07 »
Ich schlage vor ein paar Tage Geduld zu haben, womoeglich hat noch einer der Betreoffennen was zu sagen.

Offline noansi

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1310
Antw:FileLog notify Reduzierung
« Antwort #7 am: 06 August 2021, 14:04:22 »
Hallo Rudolf,

Zitat
Ich schlage vor ein paar Tage Geduld zu haben, womoeglich hat noch einer der Betreoffennen was zu sagen.
Sehe ich auch so.

Alle fakelog "Nutzer" wollen zumindest ein Log, in das sonst nichts via Events rein geschrieben wird, wenn ich es richtig interpretiere.
Sie würden somit auch von von dem ursprünglichen Ansinnen des notifies Sparen wollens profitieren.

Das fakelog entfernen bringt teilweise Probleme bezüglich Erkennung solcher Log devices, wie ich es verstehe.

Zitat
ist aber noch mehr hartkodiert.
Also wäre das der weniger hartkodierte Vorschlag.
    notifyRegexpChanged($hash, $hash->{REGEXP}, ($hash->{REGEXP} eq 'fakelog') ); #noansi: avoid Logfile/fakelog to be notified by everything

und so in etwa, was Dir vorschwebt.
    notifyRegexpChanged($hash, $hash->{REGEXP}, ($hash->{REGEXP} eq $hash->{NAME}) ); #no fakelog any more for all non regular log devices, but name eq regexp in future

Gruß, Ansgar.
« Letzte Änderung: 06 August 2021, 14:24:35 von noansi »

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17473
  • s/fhem\.cfg/configDB/g
Antw:FileLog notify Reduzierung
« Antwort #8 am: 07 August 2021, 11:29:44 »
Was ist denn das eigentliche "Problem" (außer der Verarbeitungszeit)?

Es gab vor nicht allzu langer Zeit schonmal eine Änderung bezüglich fakelog, die mir seinerzeit einiges durcheinandergebracht hat und die manuelle Änderungen an meinen FHEM Installationen erforderten.

Solche Änderungen an derartig grundlegenden Stellen von FHEM sollte man besser nur dann machen, wenn etwas nicht oder nicht mehr funktioniert. So eine Situation sehe ich aktuell aber nicht.
Aus rein "kosmetischen" Gründen. wie jetzt vorgeschlagen, halte ich das nicht für gerechtfertigt.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline noansi

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1310
Antw:FileLog notify Reduzierung
« Antwort #9 am: 07 August 2021, 12:06:18 »
Hallo betateilchen,

Zitat
Was ist denn das eigentliche "Problem" (außer der Verarbeitungszeit)?
Bezüglich der eigentlich gewünschten Änderung, Verarbeitungszeit unnütz durch das System schiessender Events bzw. deren unnütze Auswertung und Ablehnung durch die notifyFn (in diesem Fall jedes Event an jedes 'fakelog' FileLog device).
Für HM auf einem langsameren oder stark ausgelasteten System ist das auf jede Fall zu vermeiden, um kurze Antwortzeiten durch FHEM zu ermöglichen.
Ansonsten machen Event/notify Sparmaßnahmen FHEM agiler. Nicht umsonst wurde mal NOTIFYDEV/notifyhash eingebaut.

Zitat
Aus rein "kosmetischen" Gründen.
'fakelog' hartkodiert ist Rudolf dabei aufgefallen/aufgestoßen (nebst der Zusatzabfrage auf das ebenfalls hartkodierte 'Filelog').
'fakelog' war allerdings auch schon hartkodiert im Modul drin, die Abfrage macht es also nicht schlimmer, als es derzeit schon ist.

Zitat
Es gab vor nicht allzu langer Zeit schonmal eine Änderung bezüglich fakelog,
Worum ging es da?

Gruß, Ansgar.
« Letzte Änderung: 07 August 2021, 13:15:42 von noansi »

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17473
  • s/fhem\.cfg/configDB/g
Antw:FileLog notify Reduzierung
« Antwort #10 am: 08 August 2021, 14:06:03 »
Wenn man alle in den vergangenen drei Jahren mit heißer Nadel zusammengestrickten und offiziell eingecheckten "Module" einem grundsätzlichen Code review unterziehen würde, wäre der Performancegewinn sicherlich sehr viel höher als der jetzt hier in FileLog angedachte. Einiges, was da veröffentlicht wurde, sieht intern echt gruslig aus.

Worum ging es da?

Da ging es um eine Änderung mit der Folge, dass plötzlich und ohne Vorwarnung im Frontend die set-Befehle nicht mehr vorhanden waren.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline noansi

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1310
Antw:FileLog notify Reduzierung
« Antwort #11 am: 13 August 2021, 21:21:28 »
Hallo Zusammen,

um die 'faklog' nutzenden Module/Dateien mal zu nennen, weil es möglicherweise nicht mehr in Erinnerung ist:

00_SIGNALduino.pm
39_gassistant.pm
39_alexa.pm

ChartController.js

Gruß, Ansgar.

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17473
  • s/fhem\.cfg/configDB/g
Antw:FileLog notify Reduzierung
« Antwort #12 am: 14 August 2021, 09:17:10 »
um die 'faklog' nutzenden Module/Dateien mal zu nennen, weil es möglicherweise nicht mehr in Erinnerung ist:
39_alexa.pm

Explizit wegen dieses Moduls kam es Anfang 2019 zu der von mir im vorherigen Beitrag genannten früheren Änderung.

https://forum.fhem.de/index.php/topic,95351.0.html

(um auch das nochmal in Erinnerung zu rufen)
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 24505
Antw:FileLog notify Reduzierung
« Antwort #13 am: 14 August 2021, 11:53:53 »
Ich habe in fhem.cfg in der Logfile Zeile fakelog nach Logfile geaendert.
In FileLog.pm wird zusaetzlich zu fakelog auch nach REGEXP eq NAME geprueft.
Fuer betateilchen (#95351) wird jetzt in diesem Fall bei set das clear Befehl zugelassen.

Bei Gelegenheit sollten die Maintainer folgender Dateien ueberlegen, ob man fakelog nicht loswerden koennte:
configDB.pm
FHEM/00_SIGNALduino.pm
FHEM/39_alexa.pm
FHEM/39_gassistant.pm

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20834
Antw:FileLog notify Reduzierung
« Antwort #14 am: 14 August 2021, 12:15:17 »
für alexa und gassistant: wie damals schon gesagt: im prinzip ja, allerdings wird dann einiger code kopiert und ist dann mindestens drei mal da. das möchte ich wirklich vermeiden.

wenn ich zurück bin überlege ich mal ob man denn vorhandenen code besser mehrfach nutzen kann.

auf die schnelle fäll mir statt implizit über den namen zu gehen ein explizites und dokumentiertes attribut displayOnly oder .displayOnly ein. das könnte man setzen um den gewünschten effekt zu erhalten.
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

 

decade-submarginal