[solved] ECMA (edition 11) Scripte laufen sehr langsam

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
oliverbaush
Beiträge: 24
Registriert: 4. Jan 2022 23:01
Answers: 0
Wohnort: Aschaffenburg

[solved] ECMA (edition 11) Scripte laufen sehr langsam

Beitrag von oliverbaush »

Moin zusammen,

ich hab das Addon Javascript Scripting installiert und anschließend alle bestehenden Rules im ersten Schritt auf die alte ECMA Version angepasst. Beim Erstellen von Rules werden beide ECMA Versionen angeboten. ECMA 5.1 soll ja wegfallen. Soweit so gut.

Beim Versuch bestehende Regeln auf die neue Version "umzuschreiben" ist mir aufgefallen,dass das selbst den Status abfragen ca 30 Sekunden dauert.

Code: Alles auswählen

var TempFreezerStatusInfo = actions.Things.getThingStatusInfo('deconz:temperaturesensor:00212E07DB57:00124b002935e585010402');
console.log('FreezerTempState: ' + TempFreezerStatusInfo);
Bei der Suche bin ich nur auf alte Threads gestoßen in OH 3.x. Bei mir ist 4.1.1 installiert.

Habt ihr bei der Umstellung ähnliche Auswirkungen gehabt? Oder hab ich was grundlegendes übersehen?

Danke und Viele Grüße
Zuletzt geändert von oliverbaush am 24. Jan 2024 19:20, insgesamt 1-mal geändert.
openHAB4.3.1, installiert unter openhabian

Harka
Beiträge: 489
Registriert: 30. Apr 2021 13:13
Answers: 19

Re: ECMA (edition 11) Scripte laufen sehr langsam

Beitrag von Harka »

Moin,
normal ist eine "Denkpause" nur beim ersten Aufruf der Rule. Bei https://community.openhab.org/ haben aber auch schon einige von dauerhaften Problemen berichtet. Schau mal ob es ggf. dort eine Lösung für Dich gibt.

Benutzeravatar
udo1toni
Beiträge: 15244
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: ECMA (edition 11) Scripte laufen sehr langsam

Beitrag von udo1toni »

Vermutlich nutzt Du Java in der 32-Bit Version, da ist diese Trägheit reproduzierbar.
Abhilfe: auf 64 Bit wechseln.
Alternativ kannst Du die alte Scriptsprache weiter verwenden (mindestens bis es eine vernünftige Lösung für das Problem gibt) oder (umständlich, mag aber irgendwie funktionieren) Du schreibst eine Rule, welche dafür sorgt, dass jede Rule zu Beginn gelesen wird, so dass sie, wenn Du dann tatsächlich darauf zugreifst, direkt aus dem RAM Cache geholt werden kann.
Die 64-Bit Variante ist natürlich nur eine gute Option, wenn Du mindestens einen Pi 4 mit mindestens 2 GByte RAM hast.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

oliverbaush
Beiträge: 24
Registriert: 4. Jan 2022 23:01
Answers: 0
Wohnort: Aschaffenburg

Re: ECMA (edition 11) Scripte laufen sehr langsam

Beitrag von oliverbaush »

udo1toni hat geschrieben: 21. Jan 2024 23:43 Vermutlich nutzt Du Java in der 32-Bit Version, da ist diese Trägheit reproduzierbar.
Abhilfe: auf 64 Bit wechseln.
Das ist richtig (wobei, das ist keine Trägheit sondern eine Ewigkeit :roll: ):

Code: Alles auswählen

openhabian@openhabian:~ $ java --version
openjdk 17.0.9 2023-10-17
OpenJDK Runtime Environment (build 17.0.9+9-Raspbian-1deb11u1rpt1)
OpenJDK Client VM (build 17.0.9+9-Raspbian-1deb11u1rpt1, mixed mode, emulated-client)
Wenn ich das richtig verstanden hatte wird die 32 Bit JRE auf ARM empfohlen: https://www.openhab.org/docs/installation/

Blöde Frage zur Installation: unter openhabian-config wird OpenJDK 11 oder OpenJDK 17 angeboten (32 Bit?). Backup ist eingerichtet. Muss dann "nur" openhab beendet und das openJDK17 64 Bit installiert werden und das war es?
openHAB4.3.1, installiert unter openhabian

Benutzeravatar
udo1toni
Beiträge: 15244
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: ECMA (edition 11) Scripte laufen sehr langsam

Beitrag von udo1toni »

oliverbaush hat geschrieben: 22. Jan 2024 08:11das ist keine Trägheit sondern eine Ewigkeit
Der Punkt ist, dass die 32-Bit-Version diverse Teile zunächst hin und her schieben muss, was bei der 64-Bit-Version komplett entfallen kann, weil die ganzen Liobraries inzwischen nativ nur noch als 64-Bit-Version vorliegen. Diese Kopieraktionen werden bei jedem Neueinlesen der betreffenden Datei aufs Neue ausgeführt.
oliverbaush hat geschrieben: 22. Jan 2024 08:11Wenn ich das richtig verstanden hatte wird die 32 Bit JRE auf ARM empfohlen:
Es ist halt so, dass die 64-Bit-Version einen größeren Overhead hat, weil alle Zeiger und Datenspeicher grundsätzlich 64 Bit breit sind. Man kann in eine m8-Bit-System auch 64-Bit-Werte verarbeiten, muss dafür aber 8 Byte adressieren und ziemlich umständlich damit jonglieren. Will man ein einzelnes Bit speichern, so muss man dennoch 8 Bit adressieren. Man kann die übrigen 7 Bit für andere Dinge verwenden, aber wenn man keine Verwendung dafür hat, dann ist das Overhead. Umgekehrt kann man in einem 64-Bit-System ebenfalls ein einzelnes Bit adressieren, hat dann aber 63 Bit übrig. Adressiert man einen Integer Wert, dann ist der normalerweise 32 Bit breit, womit wieder 32 Bit Overhead bleiben. Anders als bei den Bits ist es auch nicht üblich, diese 32 Bit anderweitig zu verwenden.
Da nicht der gesamte Code von diesem Overhead betroffen ist, kann man von etwa 10 % mehr Speicherbedarf ausgehen.
Wenn Du nun ein ARM-System mit nur 1 GByte RAM hast, tun diese 10 % eventuell weh :) Hast Du hingegen 2 oder 4 GByte RAM, ist der höhere Speicherbedarf insgesamt gesehen ziemlich irrelevant. RAM geht nicht kaputt, wenn es genutzt wird :)
der Ratschlag mit 32 Bit stammt aus einer Zeit, wo nur wenige ARM-Systeme die nötigen Ressourcen mitbrachten.

Wenn Du openHAB4 einsetzen willst, musst Du zwingend Java17 installieren, und auf dem Pi bevorzugt OpenJDK 17 JRE Headless (Java Runtime Environment ohne Desktop).
Um die 64-Bit-Variante nutzen zu können, musst Du auch das OS in 64 Bit installieren. Die Daten kannst Du aus der alten Installation sichern, mittels openhab-cli backup (anschließend die entstehende zip-Datei auf einen USB-Stick kopieren oder per Netzwerk auf einen anderen Rechner auslagern).

Du kannst eine bestehende Sicherung auch direkt bei ersten Start von openHABian automatisch wiederherstellen lassen, dazu muss die zip-Datei unter dem Namen initial.zip auf die erste Partition der Micro-SD-Karte kopiert werden (das ist die einzige Partition, die von Windows aus nativ les- und schreibbar ist)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

oliverbaush
Beiträge: 24
Registriert: 4. Jan 2022 23:01
Answers: 0
Wohnort: Aschaffenburg

[Gelöst] Re: ECMA (edition 11) Scripte laufen sehr langsam

Beitrag von oliverbaush »

udo1toni hat geschrieben: 22. Jan 2024 13:04 Um die 64-Bit-Variante nutzen zu können, musst Du auch das OS in 64 Bit installieren. Die Daten kannst Du aus der alten Installation sichern, mittels openhab-cli backup (anschließend die entstehende zip-Datei auf einen USB-Stick kopieren oder per Netzwerk auf einen anderen Rechner auslagern).

Du kannst eine bestehende Sicherung auch direkt bei ersten Start von openHABian automatisch wiederherstellen lassen, dazu muss die zip-Datei unter dem Namen initial.zip auf die erste Partition der Micro-SD-Karte kopiert werden (das ist die einzige Partition, die von Windows aus nativ les- und schreibbar ist)
Danke, das hat genauso geklappt und war einfacher als gedacht. JRE 64 Bit ist jetzt drauf, die Scripte brechen wg Syntaxfehler ab... aber nach ca 2 Sek statt 20. Das ist aber ein anderes Thema. Jetzt muss halt Doku gelesen werden ;)
openHAB4.3.1, installiert unter openhabian

Antworten