Co właściwie buforuje Home Assistant i które powtarzane żądania działają szybciej?

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

„Home Assistant działa szybciej za drugim razem” może opisywać kilka różnych mechanizmów. Przeglądarka może ponownie wykorzystać zasoby interfejsu, już otwarty pulpit może otrzymywać aktualny stan przez WebSocket zamiast przebudowywać stronę, system operacyjny może przechowywać w pamięci strony bazy danych lub konfiguracji, a integracja może ponownie wykorzystać ustanowione połączenie.

Określanie wszystkich tych efektów mianem „pamięci podręcznej Home Assistant” ukrywa miejsce, w którym następuje przyspieszenie. Przydatny model polega na nazwaniu powtarzanego żądania, a następnie określeniu, która warstwa może uniknąć pracy przy drugim uruchomieniu.

Pamięć podręczna przeglądarki przyspiesza zasoby interfejsu

JavaScript, style, ikony, niestandardowe karty i inne zasoby interfejsu mogą pozostać w pamięci podręcznej przeglądarki, dzięki czemu ponowne ładowanie strony nie wymaga pobierania ani ponownego tworzenia tych samych zasobów od podstaw.

Aktualne wskazówki Home Assistant dotyczące przeglądarek wyraźnie informują, że interfejs użytkownika przechowuje wiele elementów w pamięci podręcznej przeglądarki, aby działać szybko. Ta sama pamięć podręczna może stać się nieaktualna po aktualizacjach lub zmianach niestandardowych kart, dlatego wymuszone odświeżenie może naprawić nieprawidłowo działający interfejs.

Ta pamięć podręczna wpływa na uruchamianie i renderowanie strony, a nie na fizyczną szybkość sterowania urządzeniami. Jej wyczyszczenie to test interfejsu, a nie ogólny reset wydajności serwera.

Otwarty pulpit ponownie wykorzystuje ścieżkę bieżącego stanu WebSocket

Po nawiązaniu połączenia z interfejsem nie musi on ponownie pobierać całego stanu inteligentnego domu przy każdej zmianie. Otrzymuje aktualizacje i subskrypcje przez API WebSocket oraz aktualizuje odpowiednie elementy interfejsu.

Aktualna architektura interfejsu opisuje, jak interfejs otrzymuje podstawowy stan za pośrednictwem współdzielonego obiektu hass i synchronizuje dodatkowe subskrybowane dane przez WebSocket. Tablet ścienny, który pozostaje połączony, ma więc inną ścieżkę powtarzanych żądań niż telefon otwierający pulpit po raz pierwszy każdego ranka.

Nie należy traktować tego ponownego wykorzystania jako dowodu, że znacznie większa liczba klientów będzie skalować się liniowo. Każdy dodatkowy klient nadal może zwiększać obciążenie związane z serializacją, subskrypcjami, żądaniami historii i renderowaniem po stronie klienta.

Pamięć stron systemu Linux przyspiesza ponowne odczyty plików i baz danych

Standardowe odczyty systemu plików przechodzą przez pamięć stron systemu Linux. Ostatnio używane strony baz danych, pliki konfiguracyjne i zasoby statyczne mogą pozostać w pamięci, eliminując konieczność ponownego fizycznego odczytu z nośnika przy kolejnym żądaniu.

Aktualna dokumentacja jądra Linux wyjaśnia, że standardowe odczyty plików zapełniają pamięć stron, dzięki czemu kolejne odczyty mogą uniknąć bardziej kosztownego dostępu do nośnika. Oznacza to, że powtarzane zapytanie History może skorzystać z pamięci, nawet jeśli Home Assistant nie zaimplementował specjalnej pamięci podręcznej aplikacji dla tego konkretnego zapytania.

Dlatego różnice między dyskiem SSD a HDD mogą wyglądać na mniejsze w rozgrzanym teście niż po ponownym uruchomieniu, usunięciu danych z pamięci podręcznej lub przy znacznie większym zbiorze roboczym.

Rozgrzane dane nie oznaczają, że podstawowe zapytanie stało się tańsze

Żądanie History nadal może skanować lub indeksować tę samą logiczną ilość danych, podczas gdy potrzebne strony akurat znajdują się w pamięci. Pulpit nadal może żądać tych samych encji, gdy zasoby i stan połączenia są już dostępne.

Powiązany przewodnik ZimaSpace dotyczący testu porównawczego oddzielania wydajności z rozgrzaną pamięcią podręczną od rzeczywistej przepustowości pokazuje praktyczne następstwo: pamięć podręczna jest przydatna, ale deklaracja dotycząca możliwości musi wytrzymać realistyczną presję na pamięć podręczną i długotrwałe obciążenie.

Trafienie do pamięci podręcznej usuwa jeden koszt z jednego żądania. Nie eliminuje obciążenia procesora, pamięci, sieci, bazy danych ani integracji, które należy do innych etapów tej ścieżki.

Różne powtarzane żądania rozgrzewają różne warstwy

  • Ponowne ładowanie tego samego pulpitu: zasoby przeglądarki i środowisko uruchomieniowe klienta mogą być już rozgrzane.
  • Pozostawienie otwartego tabletu ściennego: stan WebSocket i subskrypcje pozostają aktywne.
  • Powtarzanie tego samego zakresu History: strony bazy danych i systemu plików mogą pozostać w pamięci.
  • Wywoływanie tej samej usługi lokalnej: ustanowione połączenia integracji lub sieciowe mogą już istnieć.
  • Otwieranie po ponownym uruchomieniu: kilka z tych warstw może być jednocześnie nieaktywowanych.

Mierz warstwę odpowiadającą działaniu użytkownika, zamiast czyścić każdą pamięć podręczną i nazywać to „naukowym podejściem”.

FAQ

Czy wyczyszczenie pamięci podręcznej przeglądarki spowalnia Home Assistant Core?

Wpływa głównie na ścieżkę ładowania interfejsu. Core nadal wykonuje tę samą logikę serwera, ale przeglądarka może ponownie pobierać i tworzyć zasoby, przez co pierwsze ładowanie interfejsu będzie wolniejsze.

Czy rozgrzane zapytanie History jest bezużyteczne w testach wydajności?

Nie. Rozgrzane zapytania odzwierciedlają rzeczywiste warunki pracy. Błędem jest uznawanie wyniku rozgrzanego zapytania za jedyny wynik dotyczący możliwości, gdy presja na pamięć, ponowne uruchomienie lub większy zbiór roboczy mogą usunąć tę samą przewagę pamięci podręcznej.

Centrum Technologii i Sztucznej Inteligencji

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.