Varför använder Plex mer GPU-minne vid samtidiga anslutningar från blandade klienter?

Eva Wong är Teknisk skribent och den boende fixaren på ZimaSpace. En livslång nörd med en passion för hemma-labb och öppen källkod, hon specialiserar sig på att översätta komplexa tekniska koncept till tillgängliga, praktiska guider. Eva tror att självhosting ska vara roligt, inte skrämmande. Genom sina handledningar ger hon gemenskapen verktyg att avmystifiera hårdvaruinstallationer, från att bygga sin första NAS till att bemästra Docker-containrar.

Plex använder mer GPU-minne vid samtidig användning från blandade klienter när samtidiga sessioner kräver att olika arbetsmängder för avkodning, bearbetning och kodning ligger kvar i minnet.

Den viktiga variabeln är inte bara antalet tittare. En konvertering från 1080p H.264, en konvertering från 4K HEVC HDR och en Direct Play-session kan samtidigt använda helt olika GPU-vägar. En användbar felsökning innebär att skilja minnesbelastning från videominne, kodningskapacitet, CPU-reservväg samt lagrings- eller nätverksbegränsningar innan VRAM betraktas som flaskhalsen.

Blandade klienter skapar olika GPU-arbetsmängder

En blandad klientpark förändrar vad Plex måste hålla redo för varje aktiv session. En tv kan acceptera den ursprungliga HEVC-videon, en annan webbläsare kan behöva H.264-utdata och en telefon på en begränsad fjärranslutning kan begära lägre upplösning. Sessionerna förbrukar därför inte GPU-resurser som identiska kopior av samma arbetsbelastning.

När videokonvertering krävs behöver Plex codecspecifikt stöd för avkodning och kodning samt buffertar för mellanliggande bildrutor. Den exakta hårdvarubaserade videoavkodnings- och kodningsvägen förändras beroende på kombinationen av källa och utdata, vilket är anledningen till att två sessioner med samma nominella upplösning kan skapa olika minnesavtryck.

Direct Play är det användbara kontrollfallet eftersom servern då inte behöver avkoda och koda om videon. Om GPU-minnet bara ökar när en klient går från Direct Play till en hårdvarubaserad transkodning, tillhör den extra allokeringen konverteringsvägen och inte samtidigheten i sig.

Upplösning och codec ändrar storleken på bildytorna

Videominne används till mer än den komprimerade filen som kommer från lagringen. Hårdvaruavkodare och -kodare arbetar med avkodade bildytor, referensbilder och mellanliggande utdatabuffertar vars storlek förändras med upplösning, bitdjup, krominansformat och codecbeteende. En 4K-bild kräver därför en större arbetsmängd än en 1080p-bild redan innan samtidigheten räknas in.

4K HEVC kan kräva mer VRAM än AVC i 1080p i vissa Plex HDR-arbetsbelastningar. Se det som en ledtråd om arbetsbelastningen snarare än som en fast formel per ström, eftersom drivrutinsversioner, tonmappningsvägar, GPU-arkitektur och Plex-versioner kan ändra den exakta allokeringen.

Den diagnostiska slutsatsen är enkel: jämför samma antal sessioner medan du bara ändrar källklassen. Om två 1080p-konverteringar fungerar utan problem men minnet ökar kraftigt när den ena ersätts med 4K HEVC, är upplösnings- och codec-relaterade bildytor en del av orsaken.

Tonmappning och bearbetningssteg lägger till ytterligare ett minneslager

En konvertering kan omfatta mer än att avkoda ett format och koda ett annat. Skalning, färgkonvertering, HDR-till-SDR-tonmappning och sammansättning av undertexter kan introducera mellanliggande bildytor som överlappar avkodarens och kodarens buffertar. Dessa steg är viktigast när olika klienter kräver olika utdata från samma bibliotek.

I en container måste renderingsenheternas noder som används för hårdvarubaserat vide arbete vara åtkomliga för Plex innan GPU-minnesavläsningar kan tolkas meningsfullt. Om de inte är det kan CPU-reservvägen göra att VRAM ser lågt ut medan det krävande arbetet har flyttats någon annanstans.

Betrakta en låg VRAM-avläsning tillsammans med hög CPU-användning som ett problem med att verifiera sökvägen innan du drar slutsatsen att GPU:n används för lite. Samma regel fungerar åt andra hållet: högt GPU-minne med normal transkodningshastighet kan vara normal minnesresidenthet snarare än ett kapacitetsfel.

Samtidighet spelar roll när arbetsmängderna överlappar

Varje hårdvarutranskoderad session behåller sitt eget aktiva avkodnings- och kodningstillstånd medan uppspelningen fortsätter. Med blandade klienter kan dessa tillstånd skilja sig åt och vara aktiva samtidigt, så den totala GPU-minnesanvändningen kan öka snabbare än vad ett enkelt antal tittare antyder. Överlappningen blir viktigare när flera användare söker, startar uppspelning eller ändrar kvalitet inom samma korta tidsintervall.

I en uppmätt konfiguration med GTX 1660 Ti använde en enda 4K-transkodning cirka 600 MB GPU-minne. Det är ett avgränsat exempel på mätbar minnesresidenthet, inte en rekommenderad VRAM-mängd för varje 4K-ström.

Använd den mest krävande trovärdiga kombinationen i stället för att starta identiska testfiler i en loop. Arbetsbelastningen bör omfatta de codecs, HDR-lägen, utdat kvaliteter och klienter som hushållet faktiskt använder, eftersom samtidighet från blandade klienter just är det som gör uppskattningar baserade på identiska strömmar mindre tillförlitliga.

Skilj minnesbelastning från andra GPU-begränsningar

VRAM kan vara fullt medan kodaren fortfarande har kapacitet, eller så kan det finnas gott om VRAM kvar medan ett codecsteg, en sessionsgräns, en drivrutinsväg eller en CPU-baserad operation halkar efter. Quick Sync kan hantera flera transkodningar i lämpliga arbetsbelastningar, men det gör inte minneskapaciteten till den enda samtidighetsbegränsningen.

Övervaka GPU-minne, videomotorernas användning, transkodningshastighet, CPU-användning och uppspelning tillsammans. Minnesbelastning blir sannolik när nya eller tyngre sessioner misslyckas när allokeringen närmar sig enhetens gräns, samtidigt som resten av sökvägen fungerar normalt. Hög användning utan detta mönster pekar på något annat.

För den omgivande serversökvägen kan du använda en välfungerande 4K Plex-serversökväg som utgångspunkt för codecstöd, lagringsleverans och hårdvaruacceleration. GPU-minne är en del av helheten, inte en fristående specifikation för antalet strömmar.

Teknik- och AI-hubb

Mer att läsa

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.