Opóźnienia pamięci masowej spowalniają Immich, gdy wymagane odczyty lub zapisy muszą czekać, zwłaszcza gdy importy konkurują z aktywnością bazy danych i przeglądaniem na współdzielonych urządzeniach.
Dwa telefony wykonują kopię zapasową zdjęć z weekendowego wyjazdu, podczas gdy inny członek rodziny przewija starsze albumy na tym samym serwerze NAS. Duże pliki nadal kopiują się z przyzwoitą szybkością, ale kafelki pojawiają się nierównomiernie, a niektóre żądania się zatrzymują. Ważne pytanie brzmi, czy oczekiwanie na pamięć masową występuje podczas tych konkretnych operacji, a nie czy dysk może osiągnąć wysoki wynik sekwencyjnego transferu.
Szybkie transfery mogą współistnieć z powolnymi małymi odczytami
Przepustowość opisuje, ile bajtów jest przesyłanych w czasie; opóźnienie opisuje, jak długo operacja czeka na zakończenie. Dysk może sprawnie dostarczać duży strumień sekwencyjny, a jednocześnie wolniej obsługiwać rozproszone małe odczyty. Przeglądanie w Immich i stan aplikacji nie zawsze przypominają ciągłe kopiowanie jednego pliku, więc oba te zjawiska mogą występować jednocześnie.
Analiza wydajności hosta bada oczekiwanie urządzenia i zachowanie kolejki wraz z przepustowością, a nie tylko pojedynczy procent wykorzystania. Przydatne są łącznie takie pomiary jak opóźnienie żądań, głębokość kolejki, oczekiwanie procesora i czasy aplikacji. Ich interpretacja zależy od stosu pamięci masowej, szczególnie od tego, gdzie pod raportowanym woluminem znajdują się wirtualizacja, buforowanie lub kilka urządzeń.
Dla uproszczonego przykładu dwadzieścia zależnych operacji trwających po 5 milisekund zużywa 100 milisekund, zanim zostanie uwzględniona jakakolwiek inna praca. Przy 0,5 milisekundy każda zużywają 10 milisekund. Rzeczywiste żądania mogą wykonywać operacje współbieżnie lub korzystać z pamięci podręcznej, więc jest to wyjaśnienie skumulowanego oczekiwania, a nie zmierzona prognoza czasu odpowiedzi Immich.
Różne role danych docierają do pamięci masowej w różny sposób
Oryginalny upload dodaje bajty multimediów; przygotowanie w tle odczytuje dane wejściowe i zapisuje pochodne; przeglądanie pobiera zasoby wyświetlania; baza danych obsługuje rekordy aplikacji i zapytania. Ta sama fizyczna pula może obsługiwać je wszystkie, ale rozmiary żądań i wzorce dostępu są różne. Zmiana pamięci masowej może więc znacznie bardziej pomóc jednemu etapowi niż innemu.
Opis rzeczywistej konfiguracji Immich umieszczał PostgreSQL na dysku SSD, pozostawiając multimedia i miniatury na dyskach twardych. Udokumentowany układ mieszany pokazuje, że role pamięci masowej można rozdzielić; nie dowodzi jednak, że jest to rozwiązanie optymalne, ani nie określa przyspieszenia uzyskanego dzięki SSD. Takie przykłady należy wykorzystywać do ustalenia, której roli dotyczy dana obserwacja, zanim wyciągnie się ogólne wnioski z listy sprzętu.
W przypadku rodzinnych kopii zapasowych należy odróżnić zaakceptowane oryginały od w pełni przygotowanych podglądów i przeszukiwalnych rekordów. Szybsze zapisy oryginałów nie usuną wąskiego gardła inferencji, a szybka baza danych nie gwarantuje szybkiego odczytu obrazu, którego nie ma w pamięci podręcznej. Odpowiednim punktem końcowym jest mierzona czynność domownika, uwzględniająca wszystkie wymagane etapy.
Importy zamieniają współdzieloną pamięć masową w kolejkę oczekujących
Podczas importu zapisy w tle i interaktywne odczyty mogą trafiać do tej samej kolejki urządzenia. Większa liczba jednoczesnych zadań może zwiększyć ilość oczekującej pracy, nawet gdy łączna przepustowość rośnie. Widoczny koszt często pojawia się w postaci sporadycznych długich żądań, które średnia może ukryć, podczas gdy większość kafelków osi czasu nadal ładuje się normalnie.
Prośba o oddzielną pamięć na miniatury wynikała bezpośrednio z chęci wykorzystania szybkiej pamięci masowej na wygenerowane zasoby przeglądania oraz pamięci masowej o dużej pojemności na oryginały. Jest to dowód na istnienie odrębnych priorytetów dostępu, a nie uniwersalne twierdzenie, że każda instalacja potrzebuje oddzielnych dysków. Rzeczywista korzyść zależy od tego, gdzie obecnie oczekują żądania i czy proponowana warstwa zmienia to oczekiwanie.
Ten mechanizm przestaje wyjaśniać spowolnienie, gdy opóźnienie urządzenia pozostaje stabilne, ale klient zatrzymuje się podczas dekodowania, sieć ponawia transfery albo inferencja nadal jest przeciążona. Samo przenoszenie danych z powodu niskiego użycia procesora może wtedy nie trafić w przyczynę. Współdzielona pamięć masowa jest potencjalną zależnością, a nie automatycznym werdyktem dotyczącym każdej przerwy podczas importu.
Skoreluj oczekiwanie na dysk z czynnością domownika
Wybierz jedną powtarzalną czynność domownika, na przykład otwarcie tego samego albumu lub przesłanie ustalonej próbki. Zmierz jej czas na spokojnym hoście oraz podczas reprezentatywnego importu, jednocześnie rejestrując opóźnienie urządzenia, zachowanie kolejki, czas pracy bazy danych i błędy. Nie zmieniaj konta, trasy sieciowej, ustawień multimediów ani klienta, aby porównanie miało jasne znaczenie.
To samo rozróżnienie ścieżki krytycznej pojawia się w analizie pamięci masowej współdzielonego serwera domowego: utrwalanie danych w tle nie oznacza, że każda widoczna czynność czeka na zapis na dysku. Ta zasada między aplikacjami pomaga ująć obserwację w odpowiednim kontekście, ale czasy Home Assistant nie są testami porównawczymi Immich. Przepływ pracy związany ze zdjęciami musi sam wykazać związek między oczekiwaniem na pamięć masową a opóźnieniem widocznym dla użytkownika.
Uznaj pamięć masową za prawdopodobne wyjaśnienie, gdy dłuższe oczekiwanie konsekwentnie zbiega się z opóźnionym etapem, a inny kontrolowany warunek zmienia oba te zjawiska. Jeśli tylko pierwszy odczyt danych nieobecnych w pamięci podręcznej jest powolny, odnotuj go osobno od trwałego przeciążenia. Zakończ analizę na zidentyfikowanej zależności; analiza tego mechanizmu nie wymaga destrukcyjnych testów obciążeniowych na produkcyjnej bibliotece zdjęć.
Centrum Technologii i Sztucznej Inteligencji
Więcej do przeczytania

Otwarte modele doganiają czołówkę AI — czy 2026 będzie rokiem, w którym lokalne AI stanie się wystarczająco dobre?
Otwarte modele stają się wystarczająco dobre do obsługi większej liczby lokalnych zadań AI, podczas gdy chmurowe modele czołowe pozostają przydatne w przypadku najtrudniejszych zadań...

NVIDIA PAIR zamienia Twoją sieć domową w lokalny klaster AI — czy nadal potrzebujesz jednego dużego serwera GPU?
NVIDIA PAIR rozdziela lokalne zadania AI między wiele komputerów, zwiększając elastyczność mocy obliczeniowej, podczas gdy jeden domowy serwer może zachować trwałość danych i stanu.

Dlaczego Immich działa szybciej w sieci LAN niż przez połączenia zdalne?
Żądania w sieci LAN zwykle korzystają z krótszej ścieżki o mniejszych opóźnieniach. Zdalny dostęp wiąże się z ograniczeniami przepustowości sieci WAN i może dodawać...

