Выделение оперативной памяти для OpenHAB - d51x/openhab-docs-russian GitHub Wiki
OpenHAB является java-приложением, которому свойствены два параметра запуска XMS
и XMX
.
XMS и XMX управляют размером Heap-памяти:
- XMS - начальный объем памяти.
- XMX - максимально-доступный объем памяти.
Heap - это то место, где во время выполнения хранятся все объекты OpenHAB - items, things, rules и т.д.
По умолчанию (если параметры XMS и XMX не заданы), то считается, что
- XMS - 1/64 от всего объема RAM
- XMX - 1/4 от всего объема RAM
Если на устройстве 1 Gb RAM, то
- XMS = 16 Mb
- XMX = 256 Mb
Если на устройстве 2 Gb RAM, то
- XMS = 32 Mb
- XMX = 512 Mb
Если OpenHAB работает нормально, не тормозит, в логах нет ошибок OutOfMemoryError, то ничего делать не нужно.
Если чувствуется, что свободной оперативной памяти еще достаточно, но OpenHAB тормозит или в логах присутствуют ошибки OutOfMemoryError, то стоит задуматься над изменением параметров XMS и XMX. Их подбирают экспериментально.
Обычно ошибка OutOfMemoryError может возникать, если вы используете JS-правила. Особенно, когда активно их редактируете. После создания/редактирования JS-парвила происходит его компиляция. Как раз в эти моменты может возникать ошибка.
Для изменения значений XMS и XMX нужно отредактировать файл /etc/default/openhab
Найти параметр EXTRA_JAVA_OPTS="-Xms ... -Xmx..." и расскоментировать его (убрать #).
Далее, основываясь на общем объеме RAM, и принимая во внимание, какие еще приложения запущены на сервере вместе с OpenHAB, подобрать допустимые значения параметров.
Например, TV Box с 2 GB RAM.
Запущенные приложения:
- OpenHAB
- mosquitto
- nodered
В таком случает можно задать следующие значения параметров:
EXTRA_JAVA_OPTS="-Xms1024m -Xmx1024m"
а затем следить за работой ситсемы и корректировать параметры в нужную сторону.
При оптимизации java-приложений есть одна из рекомендаций делать xms и xmx одинакового размера, чтобы память под Heap была сразу выделена нужного объема.
В моем случае для указанных значений общий объем потребляемой памяти может доходить до 90%
Конфигурация OpenHAB состоит из:
- Things - 122
- items - 779
- pages - 24
- rules - 153 (около половины правил на JS)
- scripts - 30 (все на JS)
До того, как не были прописаны параметры XMS и XMX, в логах иногда выскаквала ошибка OutOfMemoryError и правила не запускались.
После того, как поменяете параметры, требуется перезапуск OpenHAB