Obecnie rolę serwera – od strony sprzętu – dla m.in. Home Assistant i ESPHome pełni u mnie Raspberry Pi 3B+, czyli nie jest to może demon wydajności, ale na moje potrzeby obecnie wystarcza. Zresztą z takiej samej Maliny korzysta kolega, który przyczynił się do pomysłu na ten artykuł. Z tą różnicą, że ja Home Assistant i ESPHome mam w ramach Dockera (Home Assistant Container), a kolega w ramach dedykowanego systemu, czyli Home Assistant Operating System (HAOS). A poszło o to, o co przy takim demonie wydajności mogło pójść, czyli o wydajność. A konkretnie obciążenie Raspberry Pi przy kompilowaniu oprogramowania dla płytek (np. ESP8266, ESP32) z poziomu ESPHome.

Maksymalna liczba jednoczesnych procesów kompilacji w ESPHome

Nie ma co ukrywać, dla Raspberry Pi 3B+ jest to zadanie niezwykle wymagające, i w standardowej konfiguracji potrafi nawet sprawić, że inne usługi na Raspberry Pi – w tym np. Home Assistant – tymczasowo mogą przestać być dostępne. A na co zwrócił uwagę lekko zaskoczony kolega – u mnie podczas kompilowania oprogramowania ESPHome dalej można było korzystać np. z Home Assistant, choć oczywiście było widać, że lekko spowalnia. Ale jednak dało się korzystać.

I tu na scenę wkracza jedna z opcji konfiguracji w ESPHome, pozwalająca określić, ile jednocześnie procesów kompilacji może być uruchomione. Domyślnie jest tyle, ile rdzeni ma procesor, czyli leci tyle, ile się da.

Więc by zwiększyć szanse na to, że Malina sie nie zablokuje, to ograniczam liczbę do połowy liczby rdzeni, czyli do 2 (Raspberry Pi 3B+ ma 4 rdzenie). W tym celu w kodzie projektu należy dodać odpowiedni parametr:

esphome:
  [...]
  compile_process_limit: X

Zamiast „X” należy podać, ile maksymalnie jednoczesnych procesów kompilacji może być uruchomione.

Robimy to z poziomu projektu, czyli w każdym projekcie niezależnie możemy to określić. Co dla mnie nie jest problemem, bo rzadko kiedy zaczynam projekt od zera, a zazwyczaj korzystam z jednego z kilku przygotowanych wcześniej szablonów z podstawową „moją konfiguracją”, gdzie m.in. jest ustawiony ten limit.

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej