Wydajność Immich jest zwykle ograniczana przez najwolniejszą aktywną zależność w konkretnym przepływie pracy, a nie przez jedną stałą specyfikację sprzętową.
Przesyłanie, inteligentne wyszukiwanie, przeglądanie osi czasu i odtwarzanie wideo wykorzystują różne kombinacje klienta, sieci, serwera, bazy danych, procesów roboczych i pamięci masowej. Rzeczywisty limit zmienia się, gdy zmienia się punkt końcowy lub nakładanie zadań w tle, dlatego użyteczna odpowiedź dotycząca wydajności powinna zaczynać się od ścieżki, a nie od listy komponentów.
Limit wydajności dotyczy punktu końcowego
Limit wydajności to maksymalna użyteczna przepustowość lub minimalne osiągalne opóźnienie dla jednej operacji w określonych warunkach. Nie jest to najwyższy procent użycia procesora. Akceptacja przesyłania, wybór wyników wyszukiwania, widoczne miniatury i odtwarzanie wideo mają różne punkty zakończenia, a więc także różne łańcuchy zależności.
Artykuł ZimaSpace o ścieżce danych Immich rozdziela akceptację przesyłania, gotowość do przetwarzania, wybór wyników wyszukiwania i dostarczanie multimediów. To rozróżnienie wyjaśnia, dlaczego usprawnienie procesu roboczego uczenia maszynowego może przyspieszyć indeksowanie bez wpływu na dostarczanie miniatur oraz dlaczego szybszy dostęp sieciowy nie naprawi wolnego zapytania do bazy danych.
W przypadku każdej skargi lub testu porównawczego zapisz zdarzenie początkowe, zdarzenie końcowe, klienta, grupę multimediów, stan pamięci podręcznej i obciążenie w tle. Dopiero potem wyznacz wymagane etapy. Limit ustala etap, którego czas obsługi lub kolejka uniemożliwia poprawę punktu końcowego, gdy praca napływa szybciej.
Stan bazy danych i kolejki często ogranicza koordynację
Baza danych wybiera zasoby i zachowuje relacje aplikacji, a stan kolejki koordynuje pracę w tle. Ich opóźnienia mogą ograniczać wyszukiwanie, importy lub gotowość, nawet gdy procesy robocze mają wolne cykle. Z kolei długa kolejka może wskazywać, że napływ pracy przekracza przepustowość procesów roboczych, a nie że sama obsługa kolejki jest wolna.
Szczegółowa analiza architektury opisuje PostgreSQL jako bazę przechowującą użytkowników, zasoby, albumy i osadzenia wektorowe, podczas gdy Redis zarządza asynchronicznymi kolejkami zadań. Jest to niezależne wyjaśnienie wdrożenia, a jego wartość w tym kontekście polega na rozdzieleniu zależności, a nie na wskazaniu konkretnych, stałych wartości zasobów.
Obserwuj jednocześnie czas odpowiedzi bazy danych, oczekiwanie na połączenia, długość kolejki i liczbę ukończonych zadań na minutę. Jeśli długość kolejki rośnie, przepustowość procesów roboczych pozostaje stała, a czasy bazy danych się nie zmieniają, prawdopodobnym ograniczeniem są procesy robocze. Jeśli każdy etap zatrzymuje się podczas oczekiwania na bazę danych, zwiększenie współbieżności procesów roboczych może pogorszyć limit.
Pamięć masowa, pamięć operacyjna i moc obliczeniowa wymieniają się rolą wąskiego gardła
Pamięć operacyjna może przechowywać strony bazy danych, miniatury i modele blisko procesorów. Gdy zestaw roboczy przestaje się w niej mieścić, opóźnienie pamięci masowej pojawia się w żądaniach, które wcześniej działały z prędkością pamięci. Podczas nowych importów dominować może natomiast intensywne obliczeniowo tworzenie miniatur, przetwarzanie wideo i zadania uczenia maszynowego. Ograniczająca zależność zmienia się wraz ze stanem i obciążeniem.
Analiza samodzielnego hostowania Immich rozdziela umiarkowane wymagania aplikacji i bazy danych od większego zapotrzebowania uczenia maszynowego na pamięć oraz zwraca uwagę na wpływ ładowania modeli. Konkretne wartości różnią się w zależności od wersji i modelu, ale wniosek dotyczący zależności pozostaje taki sam: łączna ilość pamięci RAM nie pokazuje, która usługa traci swój zestaw roboczy.
Porównuj fazy zimnego startu, rozgrzewania i długotrwałej pracy. Duża poprawa między zimnym a ciepłym startem wskazuje na ładowanie modelu lub pamięci podręcznej; wysokie opóźnienie urządzenia podczas szerokich zapytań wskazuje na braki w zestawie roboczym; nasycona moc obliczeniowa przy stabilnych operacjach wejścia-wyjścia wskazuje na przetwarzanie. Po zmianie jednego ograniczenia uruchom ponownie całą ścieżkę, ponieważ teraz może dominować kolejny etap.
Zbuduj mapę punktu końcowego i zależności
Utwórz wiersze dla akceptacji przesyłania, odpowiedzi z wynikami wyszukiwania, ostatniej widocznej miniatury na osi czasu i rozpoczęcia odtwarzania wideo. Dodaj kolumny dotyczące przygotowania klienta, transferu sieciowego, obsługi aplikacji, pracy bazy danych lub kolejki, przetwarzania przez procesy robocze, dostępu do pamięci masowej i dekodowania po stronie klienta. Oznacz etapy jako niewykorzystywane, zamiast przypisywać każdy komponent do każdego punktu końcowego.
Raport społeczności dotyczący przeniesienia generowania miniatur dla rodzinnej biblioteki o pojemności dwóch terabajtów pokazuje praktyczną potrzebę rozróżnienia przepustowości przetwarzania od przepustowości pamięci masowej NAS. Nie dowodzi, że przeniesienie tego zadania jest zawsze konieczne; wskazuje konkretną ścieżkę procesu roboczego, która może dominować podczas dużego importu.
Zmierz jeden reprezentatywny przebieg i uszereguj wyłącznie zaobserwowane oczekiwania. Zaproponuj jedną interwencję dla wiodącego etapu oraz jeden warunek odrzucenia hipotezy. Jeśli punkt końcowy się poprawi, zaktualizuj mapę, ponieważ limit się przesunął; jeśli nie, odrzuć tę hipotezę. W ten sposób powstaje łańcuch dowodów zamiast listy zakupów.
Centrum Technologii i Sztucznej Inteligencji
Więcej do przeczytania

Dlaczego Immich ponownie przetwarza istniejące dane po aktualizacji?
Immich może ponownie przetwarzać zasoby, gdy aktualizacja unieważni wcześniejsze wersje pochodne, metadane, modele lub stan zadań; powtarzająca się, niekończąca praca to osobna usterka.

Sieciowanie Immich: jak wykrywanie, DNS i routing zapewniają dostępność
Immich jest dostępny tylko wtedy, gdy wybór punktu końcowego, DNS, routing, NAT lub obsługa serwera proxy, TLS oraz odpowiedź aplikacji tworzą jedną prawidłową ścieżkę.

Immich dla rodzin: jak tożsamość i uprawnienia kształtują korzystanie z usługi
Korzystanie z Immich przez rodzinę wymaga odrębnych tożsamości, własności zasobów, celowego udostępniania, ograniczonej administracji oraz przetestowanego cofania uprawnień.

