FHEM Forum

FHEM - Hardware => Einplatinencomputer => Thema gestartet von: alru am 24 April 2019, 12:07:43

Titel: [erledigt] Fhem auf 100% CPU
Beitrag von: alru am 24 April 2019, 12:07:43
Moin,

nachdem meine Installation jetzt ein paar Monate ohne Update stabil gelaufen ist, wurde sie in den letzten Tagen sehr langsam (ausgerechnet im Urlaub ...). D.h., die Benutzung über das UI ist sehr langsam. Die Ausgabe von "top" bestätigt dann, dass ein Core des Pi3B vollständig mit dem FHEM Prozess ausgelastet ist.

Da ich an der Installation wie gesagt lange keine wesentlichen Änderungen durchgeführt habe (die man hätte zurück nehmen können), habe ich folgende Versuche gestartet:

Im Log war nichts zu entdecken
Linux upgrade und reboot -> keine Änderung
FHEM update und reboot -> keine Änderung

Ein "strace" auf den FHEM Prozess ergab dann, dass quasi ohne Unterbrechung auf "/etc/localtime" zugegriffen wird. Der Bildschirm scrollt die Zugriffe mit Maximalgeschwindigkeit runter. Sieht für mich nicht normal aus ....

Was kann man tun?

Edit:
Ich hab jetzt mal im Event Monitor nachgesehen. Da hat ein simples notify permanent gesendet. Keine Ahnung warum, aber nachdem ich das deaktiviert hatte, ist wieder alles OK.
Titel: Antw:[erledigt] Fhem auf 100% CPU
Beitrag von: Wernieman am 24 April 2019, 12:43:31
Gucke mal, was Deine Uhrzeit auf dem Pi so sagt ....
Titel: Antw:[erledigt] Fhem auf 100% CPU
Beitrag von: CoolTux am 24 April 2019, 12:45:11
Das Notify würde mich mal interessieren.
Kannst Du bitte ein list davon geben.
Titel: Antw:[erledigt] Fhem auf 100% CPU
Beitrag von: alru am 24 April 2019, 12:51:20
Zitat von: Wernieman am 24 April 2019, 12:43:31
Gucke mal, was Deine Uhrzeit auf dem Pi so sagt ....

"date" gibt die korrekte Zeit aus
Titel: Antw:[erledigt] Fhem auf 100% CPU
Beitrag von: alru am 24 April 2019, 13:08:42
Zitat von: CoolTux am 24 April 2019, 12:45:11
Das Notify würde mich mal interessieren.
Kannst Du bitte ein list davon geben.

Ich war da jetzt angesichts der Freude über den gefundenen Fehler ein wenig voreilig und habe das notify gelöscht, da ich es auch nicht mehr brauche. Ich werde das über die neuen DOIF Funktionen (https://forum.fhem.de/index.php/topic,95759.0.html (https://forum.fhem.de/index.php/topic,95759.0.html)) lösen.

Hintergrund:
Ich will bei bestimmten Gewichtsveränderungen meiner Stockwaage einen Alarm (Schwarmalarm) auslösen. Dazu muss ich einen Messwert abspeichern (weight_alt) und beim nächsten Messzyklus mit dem aktuellen (weight_neu) vergleichen. Das notify sollte jetzt bei jeder Änderung und nach dem _alt/_neu-Vergleich den _neu Wert für den nächsten Vergleichszyklus in _alt abspeichern.
Die Speicherung erfolgt in einem entsprechenden Reading des Devices (ein MYSENSOR - node, der Gewicht, Temperatur, Luftfeuchte des Bienenstockes misst).
Die Aktualisierungen erfolgen alle 10 Min.

Die Programmierung des notify sollte erst einmal nur die alten Werte abspeichern. Weiter bin ich noch gar nicht gekommen, da ich noch Schwellwerte für den Alarm ermitteln muss. Das sah etwa so aus:
defmod Stockwaage1.Gewicht notify Stockwaage1.weight_neu.* {fhem ("sleep 0.1; setreading Stockwaage1.weight_alt [Stockwaage1:weight_neu]");}

Und das ist ohne Unterbrechung gelaufen...

Edit:
Da war noch ein sleep vor dem Befehl (copy/paste ohne Nachdenken!!!) und dann ist es (glaube ich) selbsttriggernd und das könnte der Grund gewesen sein.