NEWS
Latenzzeit beim Schreiben eines Zustandes
-
Gib uns doch mal ein paar mehr Infos zu Deinem System unter berücksichtung der Themen die ich angesprochen habe
-
Hallo,
mein Projekt ist noch ziemlich übersichtlich. Ich nutze nodered als Interface zu den Steuerungen, die per CAN angesprochen werden.
Beim Ausführen des Testscripts wurde kein weiteres Script getriggert.
Allgemein hat js.controller som um die 40 Triggerbedinungen, die jeweils mit getState und setState arbeiten. Jedoch werden von diesen Triggerbedingungen maximal 4 parallel ausgeführt.
ioBroker läuft auf einem BananaPi M1.
Ich hoffe hiermit konnte ich das System ausreichend zu beschreiben. -
naja die Triggerbedingungen hat nicht der controller, sondern dein node.red, korrekt? Das beispiel von oben war aber eher aus dem JavaScript Adapter.
Aber jetzt mal die Frage: Sind dir 50ms wirklich zu lang? Was hast Du als Anwendung vor wo es schneller sein muss?
in solchen Fällen würde ich sagen: Stell mal auf redis um und schaue nochmal.
-
Hallo,
ja, es stimmt, der erste Trigger kommt von NodeRed. Nur danach habe ich mehrere js gesteuerte Zustandstrigger.
Hier mals kurz der Ablauf bei mir:- Taster wird von Steuerung erfasst und per CAN gesendet
Daten kommen - von CAN über NodeRed in ioBroker
- Anaylse welcher Taster betätigt wurde
- Änderung des Zustandes in ioBroker
- Erstellen des CAN-Objektes für das Schalten
- Übertragen des Zustandes an NodeRed
All dies mach ich über Zustände. Aus diesem Grunde habe ich mit dem Zeitversatz ein paar Probleme.
- Taster wird von Steuerung erfasst und per CAN gesendet
-
Ok, hast du mal Redis versucht ob es was ändert?
BananaPi ... SD Karte oder gescheiter Storage dahinter? wie geht es dem System so auslastungstechnisch ... RAM und CPU und so. WIeviel CPU braucht der js.controller im Schnitt? -
Redis habe ich noch nicht ausprobiert. Hier wage ich mich aktuell noch nicht ran.
Am BananaPI habe ich eine SSD Platte auf der das gesamte System läüft. Gesamtprozessorlast ('system.host.BPI-M1-ioBroker.load') liegt im Schnitt bei 85% und RAM ('system.host.BPI-M1-ioBroker.mem') bei 35% bei den Instanzen wird für den js-.controller 80MB angezeigt..
Existiert eine gute Anleitung, wie ich Redis einfach in ioBroker implementiert bekomme und im js.controller anspreche? -
@andre1000 sagte in Latenzzeit beim Schreiben eines Zustandes:
Redis habe ich noch nicht ausprobiert. Hier wage ich mich aktuell noch nicht ran.
Solltest du.
Das hilft sehr bei dem dual core.@andre1000 sagte in Latenzzeit beim Schreiben eines Zustandes:
Am BananaPI habe ich eine SSD Platte auf der das gesamte System läüft. Gesamtprozessorlast ('system.host.BPI-M1-ioBroker.load') liegt im Schnitt bei 85%
Hängt die direkt am SATA oder an usb?
Letzterer würde das erklären -
@andre1000 Was sagt denn "top" so beim prozess js-controller ... auch 85%? Dann auf jeden Fall Redis bitte! Und dann ist das auch der grund für die Latenz. Denke es ist I/O ...
Redis: vllt hat @Homoran no e bessere Anleritung, ich hätte https://github.com/ioBroker/ioBroker.js-controller#using-redis-as-states-db
-
@apollon77
Ich muss da mal was neu machenDas letzte habe ich in den readme zu den neuen images geschrieben., entspricht aber dem vin dir verlinkten.
Ich bekomme hier nichts reinkopiert
Was ist das denn? -
Ich habe redis installiert. Nach dem ersten Test sah es wirklich super aus. Antwortzeit nach ca. 10ms. Jetzt zwei Stunden später ist die Zeit auf ca. 35ms angestiegen. Werde morgen mal das geasmte System neu starten und dann berichten.
@Homoran die SSD ist direkt am SATA Anschluss dran.