Perché un server multimediale utilizza molta CPU durante la riproduzione?

Eva Wong è la Technical Writer e smanettatrice residente di ZimaSpace. Una geek da sempre con una passione per homelab e software open-source, si specializza nel tradurre concetti tecnici complessi in guide accessibili e pratiche. Eva crede che l'auto-ospitare debba essere divertente, non intimidatorio. Attraverso i suoi tutorial, dà potere alla comunità di demistificare le configurazioni hardware, dalla costruzione del loro primo NAS al dominio dei container Docker.

Un uso elevato della CPU durante la riproduzione multimediale di solito significa che il server sta facendo più che inviare il file originale. Potrebbe decodificare e ricodificare il video, incorporare i sottotitoli in ogni fotogramma, convertire HDR per un client SDR, ridurre la risoluzione o creare uno stream a bitrate inferiore per una connessione remota.

Tuttavia, un uso elevato della CPU non dimostra automaticamente che il processore sia troppo debole. L'accelerazione hardware potrebbe funzionare solo per una parte della pipeline, un'attività di analisi in background potrebbe essere in esecuzione contemporaneamente o più sessioni potrebbero competere per le stesse risorse. Il primo passo è identificare la modalità di riproduzione e il processo che sta effettivamente consumando la CPU.

Controllare la modalità di riproduzione prima di incolpare l'hardware

Aprire il pannello di controllo del server mentre lo stream problematico è attivo. Plex, Jellyfin, Emby e piattaforme simili mostrano normalmente se la sessione utilizza Riproduzione Diretta, Direct Stream o Remux, conversione audio o transcodifica video completa.

La riproduzione diretta invia al client il contenitore originale, il video, l'audio e le tracce di sottotitoli supportate. Remux o Direct Stream modificano solo una parte del formato di consegna, spesso senza ricodificare il video. Una transcodifica video decodifica la sorgente e crea un nuovo flusso video, rendendola la causa più probabile di un uso elevato e costante della CPU.

Questa distinzione determina il test successivo. Un uso elevato della CPU durante una transcodifica video confermata può essere previsto se l'elaborazione avviene via software. Un uso elevato della CPU durante la riproduzione diretta di solito indica un'altra sessione, un'attività di analisi in background o un processo diverso in esecuzione sul server.

Stato della riproduzione Lavoro del server Cosa indica un uso elevato della CPU
Riproduzione diretta Leggere e fornire il file originale Controllare i processi in background, un altro processo o un'altra sessione
Remux / Direct Stream Rimodulare i flussi o convertire l'audio Un uso intensivo e costante della CPU è insolito; verificare il compito esatto
Transcodifica audio Convertire o mixare l'audio Solitamente meno pesante del video; controllare eventuali elaborazioni aggiuntive
Transcodifica video Decodificare, filtrare, ridimensionare e codificare il video Elaborazione software o accelerazione hardware incompleta
Incorporamento dei sottotitoli Renderizzare i sottotitoli in ogni fotogramma video Potrebbe essere necessario un'elaborazione video completa

La transcodifica video software è solitamente la causa principale

Un server multimediale effettua la transcodifica video quando il client non può accettare la combinazione originale di codec, profilo, risoluzione, bitrate, contenitore, audio o sottotitoli. Può anche transcodificare perché l'utente ha selezionato una qualità di riproduzione inferiore.

Il server deve decodificare i fotogrammi sorgente, applicare eventuali filtri necessari, ridimensionare o convertire l'immagine e codificare un nuovo flusso abbastanza velocemente da restare avanti alla riproduzione. Una sorgente 4K HEVC convertita in H.264 a risoluzione inferiore richiede un'elaborazione sostanzialmente maggiore rispetto alla semplice trasmissione del file originale.

Se tutte queste fasi vengono eseguite su core CPU generici, un utilizzo elevato può essere normale. La domanda importante è se il transcodificatore rimane più veloce della riproduzione. Una CPU occupata con riproduzione fluida è diversa da una CPU al limite mentre il client continua a bufferizzare.

Spesso è il client a decidere se la CPU è necessaria

Lo stesso file può essere riprodotto direttamente su una console di streaming e attivare una transcodifica completa su un browser, un'app televisiva, un telefono o un lettore più vecchio. Ogni client supporta una combinazione diversa di contenitori, profili video, profondità di bit, formati audio, sottotitoli e bitrate massimi.

Anche quando il codec video è supportato, una traccia audio o un formato di sottotitoli incompatibile può modificare il percorso di riproduzione. Un client può accettare video HEVC ma richiedere la conversione dell'audio TrueHD, oppure può richiedere la transcodifica video quando i sottotitoli selezionati non possono essere riprodotti localmente.

Confronta lo stesso file su due client mantenendo inalterati la traccia audio, la selezione dei sottotitoli e l'impostazione della qualità. Se l'elevato uso della CPU segue un client, concentra l'attenzione sulle capacità e le impostazioni di quel client prima di sostituire l'hardware del server.

Una qualità inferiore può aumentare l'uso della CPU del server

Scegliere una qualità inferiore potrebbe sembrare ridurre il carico del server. In realtà, il server di solito deve creare un nuovo flusso quando la risoluzione o il bitrate richiesti differiscono dalla sorgente.

Ad esempio, richiedere 1080p a 8 Mbps da un file 4K ad alto bitrate richiede decodifica, ridimensionamento e ricodifica. Selezionare la qualità Originale può permettere il Direct Play quando il client supporta il formato sorgente e la rete può gestire il suo bitrate.

Usa la qualità Originale come test diagnostico sulla rete locale. Non è una soluzione universale: un client con codec incompatibili, larghezza di banda insufficiente o sottotitoli non supportati potrebbe comunque richiedere la conversione.

La bruciatura dei sottotitoli può trasformare un flusso leggero in uno pesante

Se l'uso della CPU aumenta solo dopo l'attivazione dei sottotitoli, la traccia dei sottotitoli selezionata è un forte sospetto. I sottotitoli testuali come SRT sono spesso riprodotti dal client, mentre PGS e VobSub sono formati basati su immagini. ASS e SSA contengono testo ma possono includere stile e posizionamento che alcuni client non riescono a riprodurre.

Quando il client non può riprodurre la traccia dei sottotitoli, il server può bruciarla nell'immagine. Ciò richiede la decodifica del video, la composizione dei sottotitoli su ogni fotogramma e la codifica di un nuovo flusso video.

Plex ha lavorato specificamente su migliorare le prestazioni del burn-in dei sottotitoli durante la transcodifica hardware, con risultati che dipendono dal sistema operativo, dal tipo di GPU e dal fatto che il tone mapping rimanga nella pipeline. Per questo lo stesso test sui sottotitoli può produrre un uso della CPU diverso tra i server.

Testa la traccia dei sottotitoli separatamente

Riproduci la stessa scena con i sottotitoli disattivati. Se l'uso della CPU cala immediatamente e la sessione torna a Direct Play, è il percorso dei sottotitoli — non solo il video sorgente — a causare il lavoro extra.

Prova quindi una traccia SRT esterna, un'altra lingua di sottotitoli o un client con supporto più ampio per i sottotitoli. Controlla anche se il server segnala il burn-in dei sottotitoli anziché la semplice consegna dei sottotitoli.

Non dare per scontato che ogni formato di sottotitoli abbia lo stesso costo. Una traccia di testo stilizzata può essere facile per un client e richiedere un'elaborazione video completa su un altro, mentre un sottotitolo immagine da un Blu-ray può essere particolarmente difficile da fornire senza burn-in.

Una GPU funzionante non significa che l'intera pipeline sia accelerata

È possibile vedere attività della GPU mentre la CPU rimane alta. L'accelerazione hardware può decodificare e codificare il video mentre la CPU gestisce ancora il rendering dei sottotitoli, la conversione audio, la scalatura, il tone mapping o un altro filtro.

Un caso di risoluzione problemi della community ha mostrato transcodifica GPU operante insieme a un alto utilizzo della CPU dovuto a burn-in dei sottotitoli e conversione audio. Il caso non deve essere considerato una regola fissa per ogni versione attuale, ma illustra perché l'utilizzo della GPU da solo non è una prova completa.

Controlla sia i motori di decodifica che di codifica della GPU, quindi ispeziona il registro del transcodificatore per i filtri software. Confronta l'uso della CPU con i sottotitoli disattivati, una traccia audio compatibile selezionata e il tone mapping rimosso dal test.

L'accelerazione hardware può ricorrere al software

Un'opzione di accelerazione hardware può essere abilitata nell'interfaccia del server anche quando il driver host, i permessi del dispositivo, il runtime o il codec selezionato non funzionano correttamente.

Alcuni formati di origine possono utilizzare con successo la GPU mentre altri ricorrono alla CPU. Una GPU potrebbe supportare H.264 e HEVC Main ma non la profondità di bit esatta, il formato cromatico, l'obiettivo di codifica o il percorso di tone-mapping richiesti da un file specifico.

Forza una transcodifica nota e monitora il server in tempo reale. Conferma che il decodificatore e l’encoder hardware siano attivi, ispeziona il comando del transcodificatore e cerca errori di inizializzazione o messaggi di fallback software invece di affidarti solo alla casella abilitata.

Docker aggiunge un livello separato di accesso alla GPU

Quando il media server gira in Docker, rilevare la GPU sull’host non dimostra che l’applicazione possa usarla all’interno del container. Il container ha bisogno del dispositivo, delle librerie userspace compatibili, del runtime corretto e del permesso di accedere alle funzioni video.

Per le implementazioni NVIDIA, una sequenza di validazione utile è confermare prima il driver host, verificare che Docker riconosca il runtime NVIDIA, controllare che le librerie e i dispositivi necessari esistano all’interno del container e osservare l’attività dell’encoder durante una transcodifica forzata. Un container dove nvidia-smi Le esecuzioni possono comunque mancare di librerie o capacità richieste dal media server.

Una configurazione Docker pratica deve quindi verificare il runtime NVIDIA, le librerie userspace, l’esposizione del dispositivo e l’attività dell’encoder all’interno del container. Evita di usare la modalità privilegiata come scorciatoia permanente; espone solo le risorse di cui il servizio ha bisogno.

Le macchine virtuali possono creare lo stesso schema di errore

Una macchina virtuale può rilevare un adattatore video senza avere accesso alle funzioni hardware di codifica e decodifica necessarie per la transcodifica media. Il passthrough GPU, i dispositivi mediati, i driver e i permessi guest influenzano tutti il risultato.

Verifica la GPU dall’interno del sistema operativo guest e poi dal processo del media server. L’attività GPU a livello host non dimostra che l’applicazione guest stia usando il motore previsto.

Se un’installazione nativa utilizza l’accelerazione hardware ma un’installazione VM altrimenti identica usa molta CPU, confronta l’esposizione del dispositivo e i log prima di modificare le impostazioni del codec o di ricodificare la libreria.

La mappatura tonale HDR può lasciare un carico significativo sulla CPU

Quando un media HDR viene riprodotto su un display SDR o tramite un client che non può accettare il flusso HDR originale, il server potrebbe dover eseguire la mappatura tonale oltre alla normale transcodifica.

La pipeline può includere la decodifica a 10 bit, la conversione dello spazio colore, la mappatura della luminosità, la scalatura, la composizione dei sottotitoli e la codifica. Il supporto hardware per il codec sorgente non garantisce che tutte queste fasi possano rimanere sulla GPU.

Testa lo stesso file su un client compatibile HDR, poi confrontalo con un output SDR. Se le transcodifiche SDR ordinarie sono efficienti ma le sessioni da HDR a SDR usano molta CPU, indaga sul metodo di tone-mapping e sul supporto hardware invece di trattare tutti i media 4K come equivalenti.

La conversione audio di solito non è pesante come la transcodifica video

TrueHD, DTS, audio multicanale o un codec audio non supportato possono essere convertiti in un formato riproducibile dal client. Il server può anche effettuare il downmix del surround in stereo.

La transcodifica audio consuma potenza di elaborazione, ma è generalmente più leggera rispetto alla decodifica e ricodifica di un intero flusso video. Il remuxing di un contenitore preserva anche il flusso video e normalmente richiede molta meno elaborazione rispetto alla conversione video.

Se il pannello di controllo segnala solo la transcodifica audio mentre la CPU rimane vicina al limite, controlla la presenza di elaborazione sottotitoli, analisi in background, un'altra sessione attiva o un processo di transcodifica separato. Non presumere che l'etichetta audio visibile spieghi l'intero carico di lavoro.

La riproduzione diretta con alta CPU di solito significa che un altro compito è in esecuzione

La riproduzione diretta richiede comunque letture di file, autenticazione, logica applicativa e consegna in rete, quindi l'uso della CPU non sarà esattamente zero. Normalmente non dovrebbe richiedere l'elaborazione video pesante associata a una transcodifica software.

Plex può consumare una quantità significativa di CPU per rilevamento di intro e crediti, anteprime in miniatura, analisi vocale, rilevamento pubblicità, ottimizzazione media e preparazione al download. Alcuni di questi processi invocano il transcodificatore anche quando nessuno sta attivamente guardando media.

Controlla la lista dei processi del sistema operativo invece di guardare solo il grafico totale della CPU. Identifica se il transcodificatore dello stream corrente, un processo di analisi programmata, uno scanner della libreria o un container non correlato è responsabile.

L'analisi programmata può sembrare un carico da riproduzione

Un processo in background può iniziare più o meno nello stesso momento in cui qualcuno inizia a guardare, facendo sembrare che la riproduzione stessa abbia causato il picco della CPU. Le finestre di manutenzione spesso avvengono durante la notte o poco dopo l'aggiunta di nuovi contenuti.

Una discussione su Unraid ha tracciato un carico della CPU apparentemente a riposo all'analisi programmata dei media e successivamente al rilevamento di intro e crediti. Questo è un esempio della comunità e non una prova che ogni caso di carico a riposo abbia la stessa causa.

Metti temporaneamente in pausa la generazione di anteprime, il rilevamento degli intro, il rilevamento dei titoli di coda, l'ottimizzazione e l'analisi approfondita dei media. Se l'uso della CPU diminuisce senza cambiare lo stream attivo, sposta questi compiti in una finestra di manutenzione diversa invece di modificare le impostazioni di riproduzione.

Più stream moltiplicano diversi tipi di lavoro

Una sessione di riproduzione diretta aggiunge principalmente domanda di storage e rete. Una transcodifica audio aggiunge un compito di conversione minore. Una transcodifica video 4K software può consumare molta più potenza di calcolo rispetto a diversi stream diretti.

Quando un altro utente avvia la riproduzione, ispeziona ogni sessione individualmente. Due utenti non creano necessariamente il doppio del carico: uno può riprodurre direttamente mentre l'altro brucia i sottotitoli in una transcodifica HDR.

Aggiungi sessioni di test una alla volta mentre osservi CPU, GPU, rete, latenza del disco e velocità di transcodifica. Questo rivela se il limite pratico è la codifica software, la capacità dell'encoder hardware, la contesa dello storage o la larghezza di banda aggregata.

La TV in diretta può richiedere un'elaborazione aggiuntiva

La TV in diretta può arrivare in un codec, risoluzione, formato interlacciato o bitrate che il client di riproduzione non può accettare direttamente. Il server potrebbe dover deinterlacciare, convertire il video, cambiare l'audio o creare uno stream a bitrate inferiore.

Queste operazioni possono rendere la riproduzione live più intensiva per la CPU rispetto a un film ordinario che viene riprodotto direttamente. La registrazione e l'analisi commerciale possono anche essere eseguite durante la visione, aggiungendo ulteriore lavoro al server.

Controlla separatamente il codec sorgente della sessione live, lo stato di deinterlacciamento, la modalità di riproduzione e la qualità selezionata rispetto alla libreria di media archiviati. Un problema con la TV in diretta non dimostra che tutti i file locali richiedano lo stesso hardware.

La riproduzione remota spesso forza un nuovo bitrate

Un file ad alto bitrate può essere riprodotto direttamente sulla LAN domestica ma superare la velocità di upload internet disponibile del server. Il client remoto o il limite del server richiedono quindi uno stream più piccolo.

Ridurre il bitrate significa che il server deve normalmente creare un nuovo output video. L'uso della CPU può quindi aumentare durante la riproduzione remota anche quando lo stesso client utilizza poca potenza di calcolo del server a casa.

Confronta il bitrate sorgente con la capacità di upload sostenibile e l'impostazione di qualità remota del client. Se abbassare lo stream crea una transcodifica software, un'accelerazione hardware configurata correttamente o una versione remota pre-encodata possono ridurre la domanda di CPU.

Un breve picco della CPU può essere normale

Alcuni transcodificatori lavorano in anticipo rispetto alla posizione di riproduzione per creare un buffer. L'uso della CPU può aumentare bruscamente all'inizio, diminuire quando sono stati prodotti abbastanza segmenti e aumentare di nuovo quando è necessario più output.

Un picco breve con riproduzione fluida e temperature stabili non richiede necessariamente una correzione. Un uso massimo prolungato, velocità di transcodifica in calo, buffering ripetuto o throttling termico indicano un problema di capacità più serio.

Osserva il carico di lavoro per diversi minuti invece di affidarti a uno screenshot singolo della CPU. Registra se il processore rimane bloccato, se il transcoder resta avanti e se la frequenza del server cala con l'aumento della temperatura.

Non ricodificare prima l'intera libreria

Convertire ogni file in un formato ampiamente supportato può ridurre la transcodifica in tempo reale futura, ma richiede tempo, spazio aggiuntivo e un ulteriore passaggio di codifica lossy per molte sorgenti.

Potrebbe anche non risolvere la causa reale se l'alta CPU deriva da sottotitoli incorporati, tone mapping HDR, limiti di bitrate remoti, analisi in background o accesso GPU rotto dentro Docker.

Identifica prima le combinazioni che falliscono ripetutamente sui client che usi effettivamente. Crea copie ottimizzate solo per i media con problemi ad alta frequenza, o usa un client più capace dove è più semplice che mantenere più versioni della libreria.

Usa questo ordine di risoluzione problemi

  1. Riproduci la sessione ad alto utilizzo CPU con lo stesso file e client.
  2. Registra se si tratta di Direct Play, Remux, transcodifica audio o video.
  3. Identifica il processo esatto che consuma CPU.
  4. Registra la ragione dichiarata per la conversione.
  5. Testa la qualità originale sulla rete locale.
  6. Disabilita i sottotitoli e seleziona un'altra traccia audio.
  7. Riproduci lo stesso file su un altro client.
  8. Monitora i motori di decodifica e codifica GPU.
  9. Ispeziona il log del transcoder o di FFmpeg per un fallback software.
  10. Verifica l'accesso alla GPU dall'interno di Docker o della macchina virtuale.
  11. Metti in pausa l'analisi dei media, la generazione delle anteprime e i lavori di ottimizzazione.
  12. Aggiungi flussi aggiuntivi uno alla volta.
  13. Controlla la temperatura e la frequenza della CPU.
  14. Aggiorna l'hardware solo dopo aver confermato il collo di bottiglia.
Sintomo Direzione probabile Test successivo
La CPU aumenta solo durante la transcodifica video Codifica software Verifica l'attività di decodifica e codifica GPU
La CPU aumenta solo con i sottotitoli Sottotitoli incorporati (burn-in) Disabilita i sottotitoli o seleziona una traccia SRT
Solo i contenuti HDR causano alta CPU Tone mapping o elaborazione a 10 bit Testa il file su un client compatibile HDR
La GPU è attiva ma la CPU rimane alta Accelerazione parziale Controlla audio, sottotitoli, filtri e log
Docker usa la CPU mentre l'host vede la GPU Runtime, librerie o permessi Verifica l'accesso all'hardware all'interno del container
Direct Play mostra un alto utilizzo della CPU Processo in background o non correlato Ispeziona attività programmate e nomi dei processi
Solo la riproduzione remota utilizza molta CPU Conversione del bitrate o della risoluzione Controlla la velocità di upload e la qualità remota
Un flusso funziona ma diversi no Limite di calcolo concorrente Confronta la modalità di riproduzione per ogni sessione
La CPU ha picchi brevi e poi diminuisce Elaborazione in anticipo del buffer Conferma che la riproduzione rimane fluida
L'uso elevato della CPU continua anche quando nessuno guarda Analisi, miniature, ottimizzazione o download Metti in pausa le attività programmate e in background

Conclusione finale

Un alto utilizzo della CPU durante la riproduzione media è solitamente il risultato di una decisione di elaborazione, non una diagnosi di per sé. La transcodifica video software completa è la causa più comune, ma l'incorporamento dei sottotitoli, la mappatura del tono HDR, l'accelerazione hardware parziale, i limiti di qualità remota e le sessioni concorrenti possono creare carichi simili.

Inizia identificando la modalità di riproduzione e il processo esatto che usa la CPU. Se la sessione sta transcodificando, verifica la compatibilità del client, la qualità originale, i sottotitoli, le tracce audio e l'intera pipeline di accelerazione hardware. Se è una riproduzione diretta, controlla l'analisi in background e altre attività attive.

Aggiorna il server solo dopo che i log e i test controllati mostrano che l'elaborazione in tempo reale richiesta supera la capacità di calcolo disponibile. Molti casi di alto utilizzo della CPU possono essere risolti cambiando il percorso di riproduzione, correggendo l'accesso GPU in Docker, programmando l'analisi fuori dagli orari di visione o selezionando un client che possa riprodurre direttamente il media originale.

FAQ

Perché l'uso della CPU aumenta quando i sottotitoli sono abilitati?

Il client potrebbe non essere in grado di riprodurre il formato di sottotitoli selezionato. Il server quindi incorpora i sottotitoli in ogni fotogramma video, il che richiede la decodifica e la ricodifica del video. Prova a disabilitare i sottotitoli o seleziona una traccia testuale supportata.

Perché la CPU è ancora alta quando la transcodifica hardware è abilitata?

La GPU può accelerare solo la decodifica e la codifica video mentre la CPU gestisce i sottotitoli, l'audio, la mappatura del tono, la scalatura o altri filtri. L'accesso all'hardware può anche essere incompleto all'interno di Docker o di una macchina virtuale.

La riproduzione diretta non usa la CPU?

No. La riproduzione diretta richiede comunque accesso ai file, rete, autenticazione e elaborazione dell'applicazione. Normalmente dovrebbe usare molta meno CPU rispetto alla transcodifica video, quindi un carico pesante e costante dovrebbe far controllare i processi in background o altri processi.

Perché abbassare la qualità dello streaming aumenta l'uso della CPU?

Una risoluzione o un bitrate più basso di solito richiede al server di creare un nuovo flusso video. Se il file originale poteva essere riprodotto direttamente, selezionare una qualità inferiore trasforma la sessione in una transcodifica e aumenta l'elaborazione del server.

La scansione dei media può causare un alto utilizzo della CPU mentre un film è in riproduzione?

Sì. La generazione delle miniature di anteprima, il rilevamento dell'introduzione o dei crediti, l'ottimizzazione, l'analisi vocale e altri processi in background possono essere eseguiti contemporaneamente alla riproduzione. Controlla l'elenco dei processi e lo stato delle attività programmate prima di attribuire tutto l'uso della CPU allo stream attivo.

Supporto e consigli

Altro da leggere

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.