Ile zadań równoczesnych może obsłużyć Immich, zanim spadnie responsywność wyszukiwania?

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.

Immich nie ma uniwersalnej bezpiecznej liczby zadań; wyszukiwanie działa gorzej, gdy współbieżni pracownicy wysycają zasób, którego potrzebują również żądania interaktywne.

Dwa serwery mogą uruchamiać taką samą liczbę zadań generowania miniatur, przetwarzania metadanych i uczenia maszynowego, a mimo to zapewniać zupełnie różne opóźnienia wyszukiwania. Użyteczny limit to zatem najwyższe obciążenie mieszane, które utrzymuje określony docelowy czas odpowiedzi interaktywnej, a jednocześnie pozwala kolejce nadal się opróżniać.

Liczba zadań nie opisuje obciążenia

Wartość współbieżności określa jedynie limit pracowników, a nie bezpośrednią miarę obciążenia. Generowanie miniatur, transkodowanie wideo, ekstrakcja metadanych i wnioskowanie uczenia maszynowego wykonują różną ilość pracy obliczeniowej i operacji na pamięci masowej. Cztery lekkie zadania związane z metadanymi mogą pozostawić interfejs responsywny, podczas gdy dwa zadania wideo znacznie intensywniej obciążą ten sam host.

Raport społeczności dotyczący wysokiego użycia procesora przez uczenie maszynowe opisuje zmniejszenie liczby współbieżnych zadań po zaimportowaniu dużej kolekcji, co obniżyło obciążenie, ale wydłużyło czas realizacji. Ta obserwacja potwierdza główny kompromis: mniejsza współbieżność chroni responsywność zadań pierwszoplanowych, pozwalając kolejce opróżniać się wolniej, a nie usuwając leżącą u podstaw pracę.

Traktuj każdą kolejkę jako klasę obciążenia. Zapisuj, które zadania są aktywne, jaki typ multimediów przetwarzają oraz czy dostępna jest akceleracja. Bezpiecznej wartości całkowitej wyliczonej dla małych plików JPEG nie można przenieść na zdjęcia RAW ani długie nagrania wideo, ponieważ zmieniła się ilość pracy przypadająca na jedno miejsce.

Wyszukiwanie działa gorzej w pierwszym współdzielonym punkcie nasycenia

Interaktywne wyszukiwanie przechodzi przez kilka współdzielonych warstw: żądanie dociera do aplikacji, baza danych wybiera wyniki, miniatury są odczytywane, a klient je wyświetla. Pracownicy działający w tle mogą konkurować o zasoby na więcej niż jednej warstwie. Pierwsza nasycona warstwa staje się praktycznym limitem współbieżności, nawet gdy każdy kontener pozostaje sprawny.

Dyskusja na temat wydajności Immich opisuje opóźnione ładowanie miniatur na hoście o wystarczającej nominalnej przepustowości, pokazując, dlaczego sama szybkość łącza nie pozwala wskazać wąskiego gardła. Planowanie czasu procesora, odczyty z bazy danych, opóźnienia systemu plików i dostarczanie danych do klienta pozostają możliwymi przyczynami, dopóki pomiary nie pokażą, które oczekiwanie wydłuża się podczas wolnego żądania.

Wykorzystanie zasobów należy analizować łącznie z opóźnieniem. Wysokie użycie procesora przy stabilnym czasie wyszukiwania może oznaczać produktywne nasycenie, podczas gdy umiarkowane użycie procesora połączone z rosnącym czasem oczekiwania dysku może wskazywać na kolejkę pamięci masowej. Presja na pamięć ma znaczenie wtedy, gdy odzyskiwanie pamięci lub wymiana zwiększa opóźnienie, a nie tylko dlatego, że system operacyjny wykorzystuje dostępną pamięć RAM jako pamięć podręczną.

Indeksowanie wyszukiwalne może się opóźniać bez spowalniania zapytań

Szybkie zapytanie może zwrócić niepełną kolekcję możliwą do przeszukiwania, gdy nowe zasoby nie zakończyły jeszcze indeksowania. Z drugiej strony wszystkie elementy mogą być już zindeksowane, a zapytania mogą działać wolno z powodu rywalizacji o dostęp do bazy danych lub pamięci masowej. Nazywanie obu tych sytuacji „pogorszeniem wyszukiwania” zaciera różnicę między dwoma punktami końcowymi i prowadzi do niewłaściwej korekty współbieżności.

Wyjaśnienie ZimaSpace dotyczące ścieżki danych Immich rozdziela akceptację przesyłania, gotowość podglądu i wyszukiwanie semantyczne jako odrębne punkty końcowe. To rozróżnienie jest kluczowe podczas testów obciążeniowych: znacznik czasu przybycia pliku nie może zastępować znacznika czasu, w którym jego reprezentacja staje się dostępna dla wyszukiwania.

Śledź dwa czasy dla ustalonego zestawu importu. Pierwszy mierzy interaktywne opóźnienie zapytań względem już zindeksowanych zdjęć kontrolnych; drugi mierzy czas do pojawienia się nowo zaimportowanych zdjęć w wynikach zdefiniowanych wcześniej wyszukiwań. Pierwszy chroni doświadczenie aktywnego użytkownika, a drugi pokazuje koszt przepustowości wynikający ze zmniejszenia współbieżności.

-15% OFF

Znajdź limit za pomocą testu stopniowego, a nie zgadywania

Utwórz reprezentatywną partię multimediów i wybierz trzy stałe wyszukiwania zwracające znane zasoby. Rozpocznij od jednego pracownika w każdej aktywnej kolejce, uruchom import i zapisuj medianę oraz wartości z długiego ogona opóźnień wyszukiwania, tempo opróżniania kolejki, użycie procesora, presję na pamięć, przepustowość sieci oraz czas oczekiwania pamięci masowej w tym samym oknie obserwacji.

Ogólne wskazówki dotyczące wąskich gardeł zalecają korelowanie zmian obciążenia z oczekiwaniem na procesor, pamięć, dysk, sieć i zależności, zamiast wybierania wykresu wyglądającego na najbardziej obciążony. W każdym przebiegu zwiększaj tylko jeden parametr współbieżności. Powtarzanie tej samej sekwencji wyszukiwań i używanie tej samej partii multimediów ułatwia jednoznaczne wskazanie zmienionej wartości.

Zatrzymaj się przy pierwszym kroku, w którym nie zostanie osiągnięty docelowy czas wyszukiwania z długiego ogona, serwer zacznie używać pamięci wymiany, czas oczekiwania pamięci masowej pozostanie podwyższony, pojawią się błędy albo kolejka zadań w tle przestanie zwiększać użyteczną przepustowość. Ponownie przetestuj poprzedni krok po zimnym ponownym uruchomieniu, a następnie jeszcze raz w stanie rozgrzanym. Ta niższa, powtarzalna wartość jest uzasadnionym limitem dla tego obciążenia.

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.