Выделение оперативной памяти для 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%

image

Конфигурация OpenHAB состоит из:

  • Things - 122
  • items - 779
  • pages - 24
  • rules - 153 (около половины правил на JS)
  • scripts - 30 (все на JS)

До того, как не были прописаны параметры XMS и XMX, в логах иногда выскаквала ошибка OutOfMemoryError и правила не запускались.

После того, как поменяете параметры, требуется перезапуск OpenHAB