Odczyt i zapis przez Jellyfin powodują różne obciążenia systemu, ponieważ duże transfery multimediów, małe aktualizacje bazy danych, strony w pamięci podręcznej i trwałe zapisy korzystają z różnych ścieżek wejścia/wyjścia.
Serwer może strumieniować kilka filmów z dysku HDD przy niewielkim pozornym obciążeniu, a następnie zacząć działać ospale, gdy jednocześnie wykonywane są skanowanie, odświeżanie metadanych, aktualizacja stanu obejrzenia i zapis pamięci podręcznej transkodowania. Ważną zmienną nie jest samo „obciążenie dysku”, lecz to, czy obciążenie jest sekwencyjne czy losowe, z przewagą odczytu czy zapisu, możliwe do buforowania czy wymagające trwałości danych, a także czy konkuruje z innymi usługami o tę samą kolejkę.
Odtwarzanie multimediów zwykle oznacza duże obciążenie związane z sekwencyjnym odczytem
Funkcja Direct Play zwykle odczytuje plik do przodu z szybkością zbliżoną do przepływności dostarczanych multimediów, a przeskoki występują tylko wtedy, gdy klient przewija materiał. Dostęp sekwencyjny pozwala urządzeniom pamięci masowej i mechanizmowi wstępnego odczytu systemu operacyjnego działać wydajnie, dlatego dysk mechaniczny często może obsługiwać zwykłe odtwarzanie, mimo że jego opóźnienie dostępu losowego jest znacznie większe niż w przypadku dysku SSD. Jednocześnie widoczne obciążenie procesora serwera może pozostać niewielkie.
Wskazówki Jellyfin dotyczące pamięci masowej wyraźnie rozdzielają pliki multimedialne od własnych plików Jellyfin: multimedia wymagają przede wszystkim przepustowości sekwencyjnej większej niż ich przepływność, natomiast pliki aplikacji generują znaczną liczbę losowych operacji dostępu. Ten podział pamięci masowej na multimedia i aplikację wyjaśnia, dlaczego dysk może pomyślnie przejść test kopiowania pliku o rozmiarze kilku gigabajtów, a mimo to być złym miejscem dla intensywnie używanej bazy danych i drzewa metadanych.
Granicę wyznaczają skoki przepływności i współbieżność. Wiele odczytów o wysokiej przepływności, opóźnienia zdalnego systemu plików, fragmentacja pamięci masowej lub konkurencyjne operacje wyszukiwania mogą zniwelować przewagę dostępu sekwencyjnego. Zamiast zakładać, że każdy strumień filmu zachowuje się jak pojedyncze, nieprzerwane kopiowanie pliku, zmierz rzeczywistą przepływność dostarczania danych i długość kolejki urządzenia podczas faktycznego zestawu odtwarzanych materiałów.
Praca z bazą danych i metadanymi generuje mniejsze, mniej sekwencyjne operacje wejścia/wyjścia
Skanowanie biblioteki, indeksowanie wyszukiwania, aktualizacje grafik, stan użytkownika i zmiany konfiguracji dotyczą wielu rekordów i plików, zamiast odczytywać jeden duży obiekt od początku do końca. Małe operacje uwydatniają znaczenie opóźnienia dostępu i liczby operacji wejścia/wyjścia na sekundę, szczególnie gdy zbiór roboczy jest większy niż dostępna pamięć. Taka sama ilość przesłanych danych może więc sprawiać wrażenie znacznie bardziej kosztownej niż odczyt multimediów.
Ta różnica wyjaśnia, dlaczego przewodnik ZimaSpace dotyczący buforowania zaleca oddzielenie aplikacji wymagających niskich opóźnień od multimediów masowych, gdy problemem stają się mieszane obciążenia. Jego wyjaśnienie mieszanych operacji wejścia/wyjścia opisuje, jak skanowanie, pobieranie, kopie zapasowe i operacje na metadanych mogą zakłócać odtwarzanie, mimo że każde z tych zadań osobno wydaje się rozsądne.
Granica dotyczy związku przyczynowego: przenoszenie każdego pliku na SSD jest zbędne, jeśli zaobserwowane opóźnienie wynika z konwersji obciążającej procesor lub przeciążonej sieci. Najpierw porównaj opóźnienie danych aplikacji z opóźnieniem odczytu multimediów przy takim samym nakładaniu się obciążeń. Tylko praca pamięci masowej, która koreluje z objawem, powinna prowadzić do zmiany lokalizacji danych.
Pamięć podręczna stron sprawia, że odczyty i zapisy wyglądają asymetrycznie
Buforowane odczyty mogą po pierwszym pobraniu stron stać się operacjami realizowanymi z pamięci, natomiast buforowane zapisy często kończą się po zmodyfikowaniu stron w pamięci, pozostawiając jądru systemu późniejsze zapisanie tych zmienionych stron. To sprawia, że krótkie obserwacje mogą wprowadzać w błąd: seria zapisów może początkowo wyglądać na tanią, a następnie wywołać opóźnioną aktywność urządzenia, podczas gdy powtarzane odczyty mogą wyglądać niemal na bezkosztowe, ponieważ dysk nie jest już zaangażowany.
Model pamięci podręcznej stron systemu Linux opisuje obie ścieżki: zwykłe odczyty zapełniają buforowane strony, a zapisy mogą tworzyć zmienione strony, których utrwalenie jest odroczone do momentu zapisania ich przez mechanizm writeback lub jawnej synchronizacji. To zachowanie zapisu zwrotnego wyjaśnia, dlaczego Jellyfin może wykazywać skokową aktywność pamięci masowej już po zakończeniu operacji widocznej dla użytkownika, która pierwotnie utworzyła dane.
Granica dotyczy trwałości danych i presji na pamięć. Oprogramowanie bazodanowe może wymagać silniejszych gwarancji trwałości niż zwykłe pliki pamięci podręcznej, a host z ograniczoną ilością pamięci może zostać zmuszony do wcześniejszego zapisania zmienionych stron lub usunięcia przydatnych stron odczytu. Nie wyciągaj wniosków o możliwościach urządzenia na podstawie operacji, która została w większości obsłużona w pamięci RAM.
Współbieżne odczyty i zapisy konkurują za pośrednictwem tej samej kolejki urządzenia
Dysk lub SSD ma ostatecznie ograniczoną wydajność obsługi, dlatego odczyty podczas odtwarzania, zatwierdzanie zmian w bazie danych, pobieranie, kopie zapasowe i fragmenty transkodowania mogą czekać w tej samej kolejce. W przypadku dysku HDD ruch głowicy dodatkowo zwiększa karę wydajności, gdy sekwencyjne odczyty są przerywane przez niezwiązane z nimi małe zapisy. Dyski SSD znacznie zmniejszają opóźnienie wyszukiwania, ale kolejki nadal mogą się pojawiać, gdy wzmacnianie zapisu, operacje opróżniania buforów lub inne kontenery doprowadzają urządzenie do granic nasycenia.
Test nasycenia pamięci masowej przedstawia to jako problem zasobów: samo wykorzystanie zasobu nie wystarcza, ponieważ długość kolejki i opóźnienie pokazują, czy żądania czekają na obsługę. Dysk pracujący ze średnią przepustowością na umiarkowanym poziomie nadal może być wąskim gardłem, jeśli małe operacje synchroniczne tworzą wystarczająco długą kolejkę, aby opóźniać interaktywne żądania bazy danych Jellyfin.
Granica dotyczy powtarzalnej korelacji. Jednorazowy skok opóźnienia podczas zaplanowanej kopii zapasowej nie dowodzi, że projekt pamięci masowej jest niewystarczający do zwykłego odtwarzania. Odtwórz to samo nakładanie się obciążeń, wstrzymaj jeden z procesów zapisujących i sprawdź, czy opóźnienie Jellyfin spadnie; jeśli tak, zmiana harmonogramu lub odizolowanie tego procesu może rozwiązać problem bez wymiany całej warstwy pamięci masowej.
Przygotuj macierz odczytów i zapisów przed zmianą pamięci masowej
Przetestuj cztery stany z tymi samymi multimediami i klientem: samo odtwarzanie, odtwarzanie ze skanowaniem biblioteki, odtwarzanie z ciągłym zewnętrznym zapisem oraz pełny scenariusz normalnego szczytowego obciążenia. Zapisz przepustowość multimediów, opóźnienie danych aplikacji, głębokość kolejki urządzenia, aktywność zmienionych stron lub mechanizmu writeback, jeśli są dostępne, a także opóźnienie wyświetlenia pierwszej klatki lub przewijania. Ta macierz pokaże, czy problem jest związany z odczytami, zapisami czy tylko z ich nakładaniem się.
Konieczny jest także test z rozgrzaną pamięcią podręczną, ponieważ powtarzana nawigacja po bibliotece może już nie odwoływać się do urządzenia. Test zimnej i rozgrzanej pamięci podręcznej zapewnia uczciwe porównanie: wykonaj jeden przypadek z pustą pamięcią podręczną i jeden powtórzony, aby nie pomylić trafienia w pamięć podręczną z zapasem wydajności pamięci masowej ani braku trafienia z trwałym spadkiem wydajności.
Pozostaw istniejący układ, gdy odtwarzanie pozostaje stabilne, kolejka ma ograniczoną długość, a opóźnienie danych aplikacji nie wzrasta znacząco podczas typowego nakładania się obciążeń. Przenieś dane aplikacji, pamięć podręczną lub zadania intensywnie zapisujące na inną warstwę, gdy te same zakłócenia konsekwentnie się powtarzają. Wyjdź poza diagnozę pamięci masowej, gdy kolejka pozostaje w normie, ale zawodzą wskaźniki procesora, pamięci lub sieci.
| Test | Co izoluje | Interpretacja |
|---|---|---|
| Tylko odtwarzanie | Podstawowy odczyt sekwencyjny | Ustalenie ścieżki multimediów |
| Odtwarzanie + skanowanie | Odczyt + zapisy metadanych | Ujawnienie zakłóceń w danych aplikacji |
| Odtwarzanie + zewnętrzny zapis | Współdzielona kolejka urządzenia | Ujawnienie rywalizacji o zapis |
| Powtórzenie z rozgrzaną pamięcią podręczną | Ponowne wykorzystanie stron i pamięci podręcznej | Oddzielenie operacji RAM od wejścia/wyjścia urządzenia |
Centrum Technologii i Sztucznej Inteligencji
Więcej do przeczytania

Jak częstotliwość tworzenia kopii zapasowych wpływa na jakość punktu odtwarzania w Jellyfin?
Krótsze odstępy między kopiami zapasowymi mogą ograniczyć utratę stanu Jellyfin, ale jakość punktu odzyskiwania zależy również od spójności przechwytywania, historii przechowywania oraz przetestowanych procedur...

Gdzie przebiega bezpieczna granica aktualizacji Jellyfin i dlaczego ma znaczenie?
Bezpieczne aktualizacje Jellyfin zapewniają możliwość przywrócenia zgodności środowiska uruchomieniowego ze stanem trwałym, ponieważ cofnięcie obrazu nie cofa zmian schematu, danych ani wtyczek.

Jak Jellyfin wykrywa i synchronizuje zmiany między urządzeniami?
Spójność Jellyfin między urządzeniami jest oparta na serwerze: serwer wykrywa zmiany lub je otrzymuje, zapisuje stan, a klienci odświeżają dane na podstawie tego wspólnego...

