-
-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hohe CPU Auslastung #382
Comments
Gleiches Problem bei mir. Ich habe sogar zwei Instanzen laufen und die Last die damit im Sekundentakt erzeugt wird ist wirklich hoch. Eine einstellbare Zeit in Sekunden für den Abruf wäre super. 1 Minute ist ausreichend. |
im gründe ist es so das wir kein polling machen und die daten 1:1 von der serial Verbindung reinkommen. |
Wäre klasse! |
Das fände ich auch wirklich super 👍 Hab im Moment sogar einen extra iobroker laufen der die Daten nur bei Änderung an den Haupt iobroker schickt. Weil bei 4 Instanzen wäre die Last zu hoch. Kurz gesagt die Änderung würde mir sehr helfen und Strom/Hardware sparen 😊 |
na dan mal bitte die 0.3.1 von git probieren :) Ich habe in der admin config eine option hinzugefuegt "Puffer in Sekunden, um Nachrichten zu ignorieren", wen ihr den auf 0 lässt kommen immer alle Nachrichten rein vom serial. Stellt man hier z.b. 10 ein, werden nur alle 10 Sekunden daten geschrieben. Default = 0 (also kein buffer) |
Alles klar teste ich nachher 👍 |
Irgendwas passt da nicht... Ich würde die Option nennen: "Zustände alle X Sekunden aufzeichen" oder ähnlich... |
ups ... mein Fehler, bitte mit 0.3.2 von git nochmal probieren :) |
Ich hab jetzt auch die 0.3.2 getestet und es funktioniert bei mir nicht.
@heckmic wie verhält sich das bei dir? |
Ich installiere auch per katze. Ich bekomme die 0.3.1 angezeigt es ist aber die 0.3.2 drauf. Ablauf der Zustände ist bei mir leer. Wenn ich bei Puffer in Sekunden 30 eingebe kommen gar keine Werte mehr. Nur wenn ich dort 0 eingebe kommen die Werte wie vorher wieder im Sekundentakt. Aber selbst wenn gar keine Werte kommen sinkt bei mir die CPU Last nicht. Was für mich eigentlich das ausschlaggebende ist. |
hmm, sehr seltsam den im Grunde machen ich keinen buffer im ram sondern schmeisse die nachrichten einfach weck/verarbeite sie nicht wodurch ich die annähme hatte das dies die CPU last drücken sollte Code technisch sehe ich weiter nichts was man sonst machen könnte, das verhalten das er bei > 3 Sekunden gar keine daten mehr schreibt finde ich auch sehr seltsam kan das aber leider nicht weiter debuggen ohne Zugang zu einer installation (ich habe selber kein Redirect um es local zu debuggen :() |
soll ich mal auf 30 Sekunden stellen mit debug log und dann den Adapter starten? Würde dann heute am späten Abend das log posten… |
gerne, ich werde dan noch eine neue version vorbereiten mit ein bissl mehr debug logging |
@saeft2003 ich habe eine version 0.3.3 hochgeladen mit extra debug Informationen.
Ich glaube das problem bereits zu sehen, Redirect schickt immer nachrichten fuer einen Datenpunk da ich jetzt alles andere in der Zwischenzeit ignorieren fehlen wohl werte. Das wiederum bedeutet das ich es zwischen speichern muss, auch kein problem aber ob dadurch die CPU last runtergeht ist fragwuerdig |
Bei mir wird auch mit der neusten Version jede Sekunde aktualisiert. Die Zeitstempel aller Werte aktualisieren sich jede Sekunde, was eben zu einer relativ hohel Last am redis führt. |
log15sek.txt hier die entsprechenden logs. Und ich will nochmal darauf hinweisen das ich keine neue Daten mehr bekomme mit z.B. 30 Sekunden. Der DP H9 wird jede Sekunde geändert d.h. es müsste alle 30 Sekunden eine Änderung kommen, aber selbst nach mehreren Minuten passiert nichts und das bei allen DPs. |
Danke fürs log, meine Vermutung hat sich bestätigt ich muss den Puffer anders aufbauen Wie sieht es jetzt mit der CPU Last aus wen zb auf 15 eingestellt? Ist diese Dan niedriger oder bleibt hoch? Wen letzteres ist der Puffer auch nicht die Lösung |
das ist der Unterschied den ich mit 30 Sekunden feststellen konnte. Es wäre nett wenn du es anpassen könntest ich würde es gerne testen. |
Bist du an dem Thema noch dran? |
Das Problem was hier vorliegt ist folgendes. Ich habe bei mir das Script "main.js" insoweit angepasst, dass in jedem Fall zuerst mindestens 37 mal Datensätze eingelesen werden, bis es wieder in die Warteschleife geht. Das ist auch die Anzahl die der Adapter maximal auswertet. Dies funktioniert nun erstmal soweit. Kommen weniger Datensätze, wird doppelt eingelesen, hier gibt es also noch Optimierungspotenzial. Was zusätzlich Rechenzeit kostet ist, dass der Adapter trotz eingestellter Bufferzeit weiterhin jede Sekunde unnötige Aufgaben erledigt. Z.B. den Datenpunkt "connection" auf "true" oder false" zu setzen. Sieht man auch wenn man den Mauszeiger draufhält. Stelle die Tage meine optimierte "main.js" hier zur Verfügung. |
@PiXasCoding das wäre echt super und wäre mir eine rießen Hilfe. @DutchmanNL kannst du dann daraus ein offiziellen release machen? |
Da bin ich wieder. Diese Blöcke könnten, je nach Gerät, evtl. auch aus mehr als nur 37 Datensätze bestehen. Daher ist es wichtig, dass der gesamte Block ausgewertet wird. Die Aktualisierung des Datensatzes "connection" habe ich auch so abgeändert, dass er nur beim Start des Adapters aktualisiert. Ich habe mir mit dem Linux Command "top" die CPU-Last des Adapters "io.vedirect.0" angeschaut und dieser liegt nun beim RPi 4 zwischen 0,3-1% während der Warteschleife und während der Datenauswertung etwa bei 2%. Nun lasse ich das ganze erstmal ein paar Stunden so laufen und wenn nichts auffällig wird, stelle ich die angepasste "main.js" nachher zur Verfügung. VG |
@saeft2003 |
danke werde es nachher testen… |
Hallo,
Wenn ich zwei Instanzen (die ich beide brauche) vom vedirect adapter laufen lassen, steigt die CPU Auslastung von 10% auf ca. 17% an. Mein System ist soweit aktuell.
Ich vermute, dass das daran liegt das sehr viele states im Sekundentakt geschrieben werden. Mir würden alle 30 Sekunden auch langen, es gibt im Adapter nur eine Einstellung die sich „expiretime“ nennt.
Könnt ihr mir sagen ob die expiretime mir weiter helfen könnte, oder nicht. Falls nicht gibt es noch eine andere Möglichkeit?
The text was updated successfully, but these errors were encountered: