Zarezerwuj wystarczający zapas mocy CPU na najgorsze powtarzalne obciążenie, aby spełnić wymagania dotyczące czasu od zdarzenia do działania oraz ponownego uruchamiania; nie istnieje uzasadniony uniwersalny procent odpowiedni dla każdej konfiguracji Home Assistant.
Host z czterema rdzeniami może wykazywać umiarkowane średnie użycie, podczas gdy jeden rdzeń jest przeciążony, albo sprawiać wrażenie ograniczonego przez CPU, gdy rzeczywistym ograniczeniem jest oczekiwanie na pamięć masową, presja na pamięć lub dławienie termiczne. Zdefiniuj najbardziej obciążające realistyczne nakładanie się zadań, zmierz opóźnienie sterowania i zachowanie poszczególnych rdzeni, a następnie utrzymuj najmniejszy zapas zasobów, który wielokrotnie spełnia wymagania bez zatrzymywania normalnie działających usług towarzyszących.
Zdefiniuj szczytowe obciążenie i limit odczuwalny przez użytkownika
Przygotuj jedno obciążenie łączące najbardziej intensywny typowy impuls automatyzacji z korzystaniem z pulpitu oraz zaplanowanymi zadaniami w tle, takimi jak kopia zapasowa, konserwacja bazy danych, obsługa głosowa lub wybrane przetwarzanie obrazu z kamer. Zdefiniuj akceptowalne opóźnienie od zdarzenia do działania, czas reakcji pulpitu oraz gotowość po ponownym uruchomieniu, zanim zaczniesz mierzyć wykorzystanie zasobów.
Nie używaj sztucznego testu obciążenia wszystkich rdzeni jako jedynego obciążenia szczytowego. Mierzy on możliwości sprzętu, ale nie pokazuje nakładania się harmonogramowania, bazy danych, integracji i dodatków, którego użytkownicy faktycznie doświadczają.
Prawidłowy punkt odniesienia obejmuje trzykrotne uruchomienie przy tej samej liczbie urządzeń, tych samych integracjach, stanie bazy danych i usługach działających w tle. Jeśli obciążenia nie można powtórzyć, żaden wyprowadzony z niego procent nie stanowi wiarygodnej rezerwy.
Zarejestruj również przebieg w spokojnym okresie jako próbę kontrolną. Różnica między stanem spokojnym a szczytowym pokazuje wrażliwość na obciążenie; sam procent dla stanu szczytowego nie pozwala stwierdzić, czy system od początku działał blisko nasycenia.
Analizuj nasycenie poszczególnych rdzeni i oczekiwanie niezależnie
Rejestruj wykorzystanie każdego rdzenia, obciążenie, czas kradzieży dla maszyn wirtualnych, czas oczekiwania na operacje wejścia-wyjścia, częstotliwość, temperaturę oraz proces Home Assistant, a także opóźnienie odczuwalne przez użytkownika. Wyrównaj wszystkie pomiary do tych samych znaczników czasu.
Ponieważ jeden nasycony rdzeń może ukrywać się za znacznie niższą średnią dla całego systemu, analizuj kształt obciążenia procesu zamiast zakładać, że całkowite wykorzystanie pokazuje dostępny zapas mocy.
Jeśli jeden rdzeń osiąga pełne obciążenie, a opóźnienie rośnie, prawdopodobne są ograniczenia wydajności jednowątkowej CPU lub zadania blokujące. Jeśli jako pierwszy rośnie czas oczekiwania na operacje wejścia-wyjścia, popraw działanie pamięci masowej lub bazy danych. Jeśli częstotliwość spada wraz ze wzrostem temperatury, najpierw popraw chłodzenie, zamiast rezerwować większą nominalną moc.
Utwórz zapas mocy dzięki harmonogramowaniu i izolacji
Przenieś opcjonalne zadania poza najbardziej obciążone okno sterowania, ogranicz zasobożerne kontenery towarzyszące i nie pozwól, aby zadania związane z kamerami, AI lub multimediami zużywały każdy dostępny rdzeń. Zapewnij Home Assistantowi i niezbędnym brokerom możliwość dalszego działania podczas tych szczytów.
Porównuj zapas mocy procesora wynikający z obciążenia dopiero po zmierzeniu ograniczenia obecnego systemu. Zakup szybszego sprzętu nie rozwiąże problemu nieograniczonych zadań ani oczekiwania na pamięć masową.
Powtórz test po każdej zmianie harmonogramu lub limitów. Jeśli opóźnienie mieści się w wymaganiach bez zmiany sprzętu, odzyskany margines jest zapasem operacyjnym; jeśli ten sam rdzeń nadal pozostaje nasycony, porównaj mocniejszy CPU wyłącznie przy identycznym obciążeniu.
Ustal rezerwę na podstawie powtarzalnych pomiarów
Użyj najwyższego zaobserwowanego obciążenia szczytowego z poprawnie powtórzonych przebiegów, a następnie zachowaj dodatkową pojemność na spodziewany rozwój liczby integracji i jedno nakładające się zadanie konserwacyjne. Przedstaw wynik jako przetestowany zakres działania usługi, a nie uniwersalny docelowy poziom bezczynności.
Procedura opisana w teście porównawczym zapasu zasobów zapewnia podstawę porównawczą obejmującą CPU, pamięć, pamięć masową i sieć.
Test uznaje się za zaliczony, gdy pierwotne obciążenie szczytowe spełnia wymagania dotyczące opóźnienia i ponownego uruchomienia w kolejnych przebiegach, bez dławienia termicznego ani wymuszonych zatrzymań usług. Eskaluj problem lub wykonaj modernizację, gdy to samo nasycenie zależne od CPU utrzymuje się po wykluczeniu przyczyn związanych z harmonogramowaniem, integracjami i operacjami wejścia-wyjścia.
Wsparcie i wskazówki
Więcej do przeczytania

Jak zoptymalizować połączenia z bazą danych Immich dla równoczesnych kontenerów
Nie zwiększaj najpierw wartości max_connections. Zmierz sesje Immich, zsumuj zapotrzebowanie wszystkich kontenerów, zachowaj rezerwę dla administratora i dostosuj tylko faktycznie potwierdzone wąskie gardło.

Jak zapobiegać duplikowaniu zadań lub importów w Immich
Oddziel powtarzające się zadania od zduplikowanych zasobów. Użyj jednej kanonicznej ścieżki pozyskiwania danych, kontroluj ponowne próby i zmiany ścieżek, a następnie przetestuj ponowne wprowadzanie...

Jak naprawić Immich po zapełnieniu woluminu bazy danych
Nigdy nie usuwaj dziennika WAL PostgreSQL, aby zwolnić miejsce. Zatrzymaj operacje zapisu w Immich, zachowaj stan bazy danych, bezpiecznie zwiększ pojemność, odzyskaj działanie PostgreSQL,...

