Przeprowadź test porównawczy Home Assistant, odtwarzając jedno stałe obciążenie od zdarzenia do działania i mierząc opóźnienia percentylowe, błędy, nasycenie oraz odzyskiwanie sprawności przy kontrolowanych warunkach dotyczących pamięci podręcznej i procesów w tle.
Szybkie kliknięcie na pulpicie nie dowodzi, że automatyzacje pozostaną responsywne podczas zapisu przez Recorder, tworzenia kopii zapasowych lub nagłych serii zdarzeń z urządzeń. Przydatny test porównawczy domowego serwera zaczyna się od zdefiniowanego wejścia, a kończy na obserwowalnym działaniu, przy stałej liczbie encji, zachowaniu integracji, ścieżce sieciowej, stanie pamięci podręcznej, temperaturze i usługach konkurujących o zasoby. Powtarzanie tej ścieżki ujawnia zmienność oraz pierwszy zasób, który traci zapas wydajności.
Przed pomiarem zasobów wybierz jeden rezultat mierzony od początku do końca
Zacznij od rezultatu, który gospodarstwo domowe może zaobserwować, na przykład czasu od syntetycznej zmiany stanu do wywołania usługi albo od polecenia na pulpicie do potwierdzenia docelowego stanu. Ten przedział obejmuje więcej niż pracę procesora: opóźnienie integracji, obsługę zdarzeń, logikę automatyzacji, dostarczenie przez sieć, reakcję urządzenia i potwierdzenie mogą mieć na niego wpływ.
Metodyka testów porównawczych jest lepsza, gdy rzeczywiste obciążenia zastępują odizolowane mikrotesty, a zamiast samych średnich mierzy się także zachowanie w ogonie rozkładu. Praktyczny zestaw zasad projektowania testów porównawczych podkreśla znaczenie obciążenia zbliżonego do rzeczywistego, percentyli, współbieżności oraz stanów zimnych i ciepłych.
Wybrany rezultat staje się kryterium akceptacji. Odczyty procesora, pamięci, pamięci masowej i sieci wyjaśniają, dlaczego ten rezultat się zmienia; nie zastępują go. Serwer może wykazywać niskie średnie wykorzystanie zasobów, a mimo to ścieżka automatyzacji może czasami mieć długie opóźnienia istotne dla oświetlenia, zamków, alarmów lub ogrzewania.
Zbuduj skrypt odtwarzający stałe obciążenie
Zapisz dokładne encje, częstotliwość wyzwalania, ścieżkę automatyzacji, aktywność pulpitu, retencję Recorder, stan bazy danych oraz zadania w tle uwzględnione w teście. Używaj syntetycznych lub nieszkodliwych danych wejściowych, aby sekwencję można było odtwarzać bez wpływu na bezpieczeństwo domowe i bez zużywania rzeczywistych urządzeń. Ustal czas trwania testu oraz czas odzyskiwania sprawności między próbami.
Dyskusje na temat automatyzacji o wysokiej częstotliwości pokazują, dlaczego częstotliwość zdarzeń i praca szablonów muszą być jawnie określone. Jedno z dochodzeń społeczności Home Assistant dotyczące obciążenia zdarzeniami o wysokiej częstotliwości opisuje obciążenia przekraczające tysiąc zdarzeń na minutę, pokazując, jak nieokreślona częstotliwość wyzwalania może sprawić, że dwa wyniki testów będą nieporównywalne.
Reprezentatywne obciążenie nie musi być obciążeniem maksymalnym. Uwzględnij najbardziej intensywne typowe nakładanie się zadań oraz jeden kontrolowany krok ponad ten poziom. Pierwsza próba ustala zachowanie normalne, a dodatkowy krok ujawnia pozostały zapas wydajności. Unikaj losowego mieszania usług, ponieważ niewyjaśnione zadanie w tle zmienia test w anegdotę.
Testuj oddzielnie stany zimne, ciepłe i ustalone
Restart Home Assistant, pierwsze otwarcie pulpitu i odpytywanie niebuforowanej historii mogą uruchamiać ścieżki pamięci masowej i inicjalizacji, których późniejsze powtórzenia już nie używają. Ciepłe uruchomienia mogą ponownie korzystać ze stron bazy danych, zasobów interfejsu, odpowiedzi DNS i pamięci podręcznej systemu operacyjnego. Długie testy dodają stabilizację termiczną, rozrost logów i planowanie zadań w tle.
Rozgrzewanie pamięci podręcznej zmienia opóźnienie, umieszczając często używane dane w szybszej warstwie, zanim pojawi się żądanie. Ta analiza wpływu rozgrzewania pamięci podręcznej wyjaśnia, dlaczego ciepły wynik może być prawidłowy dla normalnej pracy, a jednocześnie mylący jako dowód wydajności po restarcie lub podczas odzyskiwania sprawności.
Raportuj każdy stan osobno, zamiast uśredniać je razem. Wydajność w stanie zimnym pokazuje zachowanie systemu po restarcie lub opróżnieniu pamięci podręcznej; wydajność w stanie ciepłym opisuje powtarzane codzienne interakcje; wydajność w stanie ustalonym odpowiada obciążeniu długotrwałemu. Twierdzenie o pojemności jest wiarygodne tylko wtedy, gdy nazwany stan odpowiada scenariuszowi użytkownika.
Mierz percentyle i granice etapów
Zapisuj każde opóźnienie od początku do końca, a następnie podawaj medianę i wartości wysokich percentyli wraz z liczbą błędów. Mediana opisuje typowe doświadczenie, natomiast 95. lub 99. percentyl ujawnia sporadyczne kolejki ukryte przez średnią. Jeśli ścieżka na to pozwala, używaj znaczników czasu wyzwolenia, rozpoczęcia automatyzacji, wywołania działania i potwierdzenia docelowego stanu.
Szybka diagnostyka systemu sprawdza procesy, procesor, pamięć, sieć, urządzenia blokowe i błędy, ponieważ opóźnienie może przenosić się między zasobami. Proces analizy wydajności systemu Linux stanowi zwięzły przykład korelowania sygnałów zasobów zamiast diagnozowania na podstawie jednego procentowego wskaźnika wykorzystania.
Znaczniki czasu etapów odróżniają wolną integrację od zajętej pętli zdarzeń, powolnej pracy bazy danych, opóźnienia sieciowego lub niespiesznego urządzenia docelowego. Jeśli Home Assistant szybko wydaje polecenie działania, lecz potwierdzenie przychodzi późno, dodanie procesora do hosta nie naprawi zmierzonego wąskiego gardła. Pierwszy etap, którego opóźnienie rośnie, jest użytecznym punktem wyjścia do dalszej diagnostyki.
Używaj łącznie wskaźników wykorzystania, nasycenia i błędów
Wykorzystanie informuje, jak zajęty jest zasób; nasycenie wskazuje pracę oczekującą w kolejce, której nie można natychmiast obsłużyć; błędy ujawniają nieudane operacje. Podczas testu sprawdzaj wszystkie trzy wskaźniki dla procesora, pamięci, pamięci masowej i sieci. Wysokie wykorzystanie może być prawidłowe, a krótkie skoki nasycenia mogą powodować opóźnienia, nawet gdy długa średnia wygląda komfortowo.
Metoda analizy wydajności USE wyraźnie ostrzega, że zgrubne średnie mogą ukrywać krótkie okresy pełnego wykorzystania i kolejkowania. Jest to bezpośrednio istotne dla Home Assistant, gdzie krótka seria zdarzeń może mieć większe znaczenie niż pięciominutowa średnia wykorzystania procesora hosta.
Łącz sygnały systemowe z tymi samymi znacznikami czasu co test. Kolejka pamięci masowej rosnąca podczas każdego wolnego ogona sugeruje inny kolejny eksperyment niż zdarzenie odzyskiwania pamięci lub retransmisja sieciowa. Nie uznawaj najczęściej używanego zasobu za wąskie gardło, jeśli jego nasycenie lub błędy nie pokrywają się z opóźnieniem widocznym dla użytkownika.
Kiedy test porównawczy przestaje być porównywalny
Wyniki przestają być porównywalne, gdy bez odnotowania zmieniają się wersje oprogramowania, zestawy encji, rozmiary baz danych, retencja, klienci, ścieżki sieciowe, temperatura otoczenia lub usługi działające w tle. Są również niewiarygodne, gdy w jednym teście pamięć podręczna zostaje rozgrzana, a w drugim nie, albo gdy dla krótkich przedziałów pomiar ręczny zastępuje znaczniki czasu zdarzeń.
Testy kontenerów muszą określać środowisko uruchomieniowe, limity zasobów, ścieżkę pamięci masowej, tryb sieci oraz warunki hosta. Ten przewodnik po testach wydajności Dockera rozdziela testy procesora, pamięci, pamięci masowej i sieci, pokazując, dlaczego sama etykieta kontenera nie jest wystarczającym opisem środowiska.
Wyniki syntetyczne również przestają przewidywać doświadczenie gospodarstwa domowego, gdy pomijają najwolniejszą rzeczywistą zależność. Automatyzacja w pętli zwrotnej może czysto testować Core, ale nie mówić nic o integracji chmurowej ani urządzeniu zasilanym bateryjnie. Zachowaj zarówno kontrolowaną ścieżkę wewnętrzną, jak i reprezentatywną ścieżkę od początku do końca, a ich wyników nigdy nie łącz w jedną liczbę.
Wykonaj pięciopróbny protokół akceptacyjny
Zapisz manifest środowiska, a następnie wykonaj pięć zimnych i pięć ciepłych prób stałego obciążenia. Potem przeprowadź test długotrwały obejmujący najbardziej intensywne dozwolone zadanie w tle. Raportuj medianę, 95. percentyl, maksimum, błędy, zdarzenia restartu oraz sygnały wykorzystania, nasycenia i błędów dla każdego zasobu fizycznego.
Metryki dla poszczególnych kontenerów stają się użyteczne, gdy są przechowywane i skorelowane z wynikami aplikacji. Ten przewodnik po monitorowaniu kontenerów wyjaśnia pola dotyczące procesora, pamięci, sieci i operacji wejścia-wyjścia urządzeń blokowych, które można zestawić z rozkładem opóźnień.
Zaakceptuj zmianę tylko wtedy, gdy poprawia docelowy percentyl bez zwiększania liczby błędów ani przenoszenia nasycenia na inną wymaganą ścieżkę. Diagnostyka ZimaSpace dotycząca lokalizowania ograniczającego zasobu jest kolejnym krokiem, gdy powtarzane próby wskazują ten sam limit.
Centrum Technologii i Sztucznej Inteligencji
Więcej do przeczytania

Dlaczego Home Assistant ponownie przetwarza istniejące dane po aktualizacji?
Home Assistant może ponownie przetworzyć istniejące dane po aktualizacji, aby dostosować zapisany stan, indeksy, pamięci podręczne i integracje do nowego kodu.

Które zależności najczęściej wyznaczają rzeczywistą granicę wydajności Home Assistant?
Wydajność Home Assistant jest ograniczana przez najwolniejszą wymaganą zależność na ścieżce od zdarzenia do wyniku, a niekoniecznie przez procesor hosta.

Sieciowanie Home Assistant: jak wykrywanie, DNS i routing zapewniają dostępność
Osiągnięcie dostępności Home Assistant wymaga wykrywania, prawidłowego rozpoznawania nazw, poprawnej trasy, dozwolonego ruchu oraz nasłuchującego punktu końcowego.

