Seite 1 von 1

Arbeitsspeicher Openhab

Verfasst: 21. Nov 2022 09:39
von SaschaQ
Hallo zusammen,

ich habe über die Java Einstellungen von Openhab festgelegt, dass er Initial 2 GB RAM hat und bis zu 4 GB erhöhen darf.

Komischerweise wächst der Speicher innerhalb einer Woche immer auf 4 GB an und dann bleibt OH hängen.

Wie handhabt ihr das mit dem Arbeitsspeicher.

Was ist das optimalste?

Zur Info:

Ich habe durch KNX sehr viele Items in meinem OH.

Re: Arbeitsspeicher Openhab

Verfasst: 21. Nov 2022 10:45
von udo1toni
~ Grummel ~
Optimal ist bereits der Superlativ. Wenn etwas anderes "noch optimaler" wäre, wäre das Optimale nicht mehr optimal.

openHAB braucht keine 2GByte RAM, selbst wenn Du 10000 Items hast.

Java hat einen Garbage Collector, der automatisch ungenutzten Speicher freigibt. Das tut er allerdings erst dann, wenn es nicht mehr vermeidbar ist, denn alles, was im RAM liegt, muss nicht erst ins RAM geholt werden. Auf dem Pi wird openHAB gewöhnlich immer als 32 Bit Version ausgeführt. Java kann also gar keine 4 GByte Speicher zur Verfügung haben, selbst wenn Du ein 8 GByte Modell nutzen solltest. Setze die Untergrenze ruhig auf 1 GByte und die Obergrenze meinetwegen auf 3 GByte, aber wundere Dich nicht, wenn openHAB nach einer Weile "immer 3 GByte verbraucht", das ist normal und so gewollt. Warum sollte man RAM ungenutzt lassen? Dennoch sollten auch andere Prozesse im System noch Speicher zur Verfügung haben ;)

Re: Arbeitsspeicher Openhab

Verfasst: 21. Nov 2022 13:04
von SaschaQ
Hallo Udo1toni,

okay soweit verstanden. Aber wieso läuft Openhab dann bei mir in einen Java Out of Memory sobald es die 4 GB erreicht hat und wendet dann nicht den Garbage Collector an?

Wenn ich ja nun 1 und 3 GB einstelle dann erreicht es ja auch irgendwann die 3GB und bleibt hängen oder?

Re: Arbeitsspeicher Openhab

Verfasst: 21. Nov 2022 14:09
von udo1toni
Das habe ich geschrieben.

Aber noch mal andersrum...
Gesamtspeicher des Pi 4 GByte (oder 8 GByte, aber ich gehe jetzt mal von 4 GByte aus)
Davon geht Speicher für die Grafik ab (keine Ahnung, wieviel das ist, mutmaßlich 64 MByte oder 128 MByte)
Vom Rest nimmt sich das Betriebssystem ebenfalls etwas, jedes Programm braucht RAM. Mein Samba Container benötigt etwas über 128MByte, das dürfte auch in etwa dem minimalen Bedarf des Pi mit Raspberry Pi OS lite (ohne laufendes Java) entsprechen. Jetzt sind von den 4 GByte vermutlich bereits etwa 256MByte weg, bleiben noch 3,75GByte
Aber selbst wenn Du ein 8 GByte Modell nutzt (und das Betriebssystem auch die 8 GByte nutzt... das ist nicht der Fall mit dem openHABian 32 Bit Image), Java läuft immer noch im 32 Bit Modus. Java benötigt selbst Speicher und nutzt diesen auch, der kommt aber ontop. Nur kann Java im 32 Bit Modus nur insgesamt 4 GByte adressieren. Wenn Du nun Java sagst, dass openHAB 4 GByte nutzen kann, bleibt kein Speicher mehr für Java übrig, wenn openHAB sich der Grenze nähert.

Die Speichervoreinstellungen sind selbst für größere Installationen gewöhnlich ausreichend, aber natürlich kann man sie anpassen. Nur muss man sich dann zumindest einigermaßen damit auskennen, sonst sind Probleme vorprogrammiert.

Re: Arbeitsspeicher Openhab

Verfasst: 21. Nov 2022 15:58
von SaschaQ
Hallo Udo1Toni,

ich habe mein Openhab nicht auf einem Raspberry laufen sondern auf einem Debian in einer virtuellen Maschine.

Ich lasse die Einstellungen default indem ich aus der Datei "openhab" unter etc/default den JAVA OPTS Parameter entferne oder?

Re: Arbeitsspeicher Openhab

Verfasst: 21. Nov 2022 16:19
von udo1toni
SaschaQ hat geschrieben: 21. Nov 2022 15:58 ich habe mein Openhab nicht auf einem Raspberry laufen sondern auf einem Debian in einer virtuellen Maschine.
Ah, das war mir nicht bewusst. Du hast Dein Setting nicht als Signatur angehängt :) Singemäß gilt aber das Gleiche, wobei Du im Zweifel ohne Probleme die 64-Bit-Version laufen lassen kannst, aber auch da musst Du shcon darauf achten, JAva nicht mehr Speicher zuweisen zu lassen, als Du überhaupt zur Verfügung hast. Wenn die VM also 8 GByte hat, kannst Du mit einem 64-Bit-Java ohne Probleme auch 6 oder 7 GByte als Obergrenze definieren, aber Java wird dieses Mehr an Speicher auch hemmungslos vollpacken und nur freigeben, wenn es am oberen Limit ankommt.
VMs sollte gewöhnlich nicht den kompletten zugewiesenen Speicher nutzen, sondern erst bei Bedarf weiteren Speicher anfordern (je nach Platform heißt das dann z.B. Ballooning). Das wird hier nicht gut funktionieren, Du wirst also spürbar mehr Speicher benötigen, weil Java nutzbaren Speicher nicht freiwillig zurückgibt.
SaschaQ hat geschrieben: 21. Nov 2022 15:58 Ich lasse die Einstellungen default indem ich aus der Datei "openhab" unter etc/default den JAVA OPTS Parameter entferne oder?
Ja, das sollte so sein.