Jak opóźnienia pamięci masowej wpływają na tworzenie kopii zapasowych rodzinnych zdjęć w Immich

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.

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

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.