NEWS
[gelöst] Blockly und RAM
-
Hallo allerseits,
ich habe da mal eine Frage, die ich allein nicht so richtig gegriffen bekomme. Es geht um Blockly Scripting und den damit zusammenhängenden Speicherverbrauch. Am Anfang habe ich gang klassisch einen Trigger genommen und sämtliche Login in das Script gepackt. Das wird dann auf Dauer ein langes und durchaus auch unübersichtliches Script. Nach einigem hin und her probieren bin ich jetzt bei der Variante ein Script mit einem Trigger zu benutzen und in diesem Script weitere Scripte in der Art
! schedule("0 23 * * *", function () {
! setStateDelayed("javascript.0.scriptEnabled.Rolladen.Flur.Zu"/scriptEnabled.Rolladen.Flur.Zu/, true, true, 2000, false);
! });So bleiben die Triggerscripte klein und übersichtlich und das dann zu startende Script (mit ganz viel Logik) macht was es soll und beendet sich selbst dann wieder. Aus diesem zweiten Script heraus, können dann natürlich auch andere Scripte gestartet werden. Die Idee dahinter: Ein Script das zur Zeit nichts tut muss auch nicht laufen und Ressourcen verbrauchen. Gleichzeitig kann man viele kleine Einzelfunktionen (ähnlich wie bei JavaScript im global Ordner) für die Blocklys zur Verfügung stellen, ohne Dinge doppelt und dreifach schreiben zu müssen.
Was ich jetzt nicht herausbekomme: Stimmt denn mein Gedanke? Verbrauchen nur Scripte die gestartet sind auch Ressourcen, oder ist allein die Existenz des Script etwas das Ressourcen benötigt?
Warum komme ich auf den Gedanken? Bisher hatte ich das Zeug auf einem Raspi 3B laufen. Da war ich natürlich irgendwann mit dem RAM am Anschlag.
Jetzt habe ich das System auf NUC + Proxmox + Debian VM. 2GB RAM (es ginge mehr, ist aber zum testen so festgelegt) und der Speicherverbrauch ist (trotz der gleichen Menge an Scripting und Adpater wie auf dem Raspi) knapp doppelt so hoch. Also der RAM der da ist, wird genommen. Gleichzeitig habe ich den Eindruck, dass wenn zu viele Scripte gleichzeitig gestartet werden, dass das System nicht alle korrekt abgearbeitet bekommt. Erkennbar daran, dass dann z.B. heute Morgen 2 Lampen nicht wie gewünscht ausgeschaltet wurden.
Ich hoffe man hat meine Frage verstanden….
-
Bei der ganzen RAM Betrachtung solltest Du bei Linux das hier beachten: https://www.linuxatemyram.com/ Das erklärt einiges denke ich.
Kleine Skripte sind sehr simpel und brauchen an sich auch sehr wenig RAM, also das kann nicht der Grund sein
-
Verbrauchen nur Scripte die gestartet sind auch Ressourcen, oder ist allein die Existenz des Script etwas das Ressourcen benötigt? `
Nur gestartete Skripte verbrauchen RAM und belasten die CPU. -
Durch einiges herumprobieren habe ich herausbekommen, dass ich gar kein Ressourcenproblem habe. Das einige Dinge nicht funktionierten lag daran, dass man durchaus darauf achten muss "Aktualisiere ObjectID" und "Steuere ObjectID" korrekt zu benutzen. Wenn man das beachtet, dann funktioniert auch alles korrekt.