Netflix utilizza eBPF per migliorare i suoi servizi di streaming multimediale: ecco perché

eBPF è una tecnologia innovativa nell'ambito del kernel Linux: permette l'esecuzione di programmi a basso livello, senza modifiche al kernel stesso. Originariamente progettato per il filtraggio dei pacchetti, eBPF ora supporta il monitoraggio delle performance, la sicurezza e l'analisi del traffico. Netflix ha adottato eBPF per migliorare il monitoraggio delle performance in tempo reale e gestire efficacemente i problemi sulla sua infrastruttura.

Negli ultimi tempi si sta parlando sempre di più di eBPF (Extended Berkeley Packet Filter), una tecnologia avanzata integrata nel kernel Linux che consente l’esecuzione di programmi a basso livello senza la necessità di modificare il codice sorgente del kernel stesso. Originariamente sviluppato per il filtraggio dei pacchetti di rete, eBPF si è evoluto in maniera davvero vorticosa includendo un’ampia gamma di possibilità, tra cui il monitoraggio delle performance, la sicurezza e l’analisi del traffico.

Abbiamo detto, di recente, che eBPF sarà utilizzato in ambiente Linux per proteggere i sistemi dalle schermate blu ed evitare quindi che situazioni anomale possano impattare negativamente sulla continuità operativa, bloccando interi sistemi. In realtà potrebbe essere utilizzato anche sul versante Windows.

Perché Netflix ha scelto eBPF e come lo usa

eBPF funziona creando un’interfaccia tra il kernel e i programmi utente. Gli sviluppatori possono scrivere piccoli programmi in linguaggi come C, che vengono poi compilati e caricati nel kernel.

Una volta attivi, questi programmi possono monitorare eventi specifici (come il cambio di stato di un processo o l’utilizzo della CPU) e raccogliere dati senza influenzare negativamente le performance complessive del sistema.

Uno dei motivi principali per cui Netflix ha adottato eBPF è la sua capacità di fornire un monitoraggio dettagliato delle performance in tempo reale. In un ambiente multi-tenant come quello di Netflix, è fondamentale identificare e risolvere rapidamente i problemi prestazionali che possono derivare da “vicini rumorosi” (noisy neighbor): ad esempio, contenitori o processi che consumano risorse eccessive, impattando sugli altri.

Flessibilità e scalabilità, senza sovraccaricare le risorse

Una piattaforma di streaming online come Netflix deve “spremere al massimo” le risorse disponibili evitando situazioni di carico eccessivo che potrebbero malauguratamente riverberarsi sull’esperienza di visione degli utenti finali.

Gli ingegneri di Netflix spiegano che con eBPF l’azienda ha la possibilità di implementare monitoraggi specifici senza dover modificare il kernel Linux. Una flessibilità che consente agli ingegneri di adattare rapidamente le soluzioni ai cambiamenti nelle esigenze aziendali. Poiché eBPF può operare al livello del kernel, è in grado di gestire enormi carichi di lavoro in modo scalabile.

I programmi eBPF possono eseguire operazioni con un sovraccarico minimo, il che significa che non influenzano significativamente le performance del sistema. Questo è particolarmente importante per Netflix, che deve gestire una mole incredibile di dati e transazioni in tempo reale, senza compromettere l’esperienza utente.

Netflix ha inoltre implementato un monitoraggio proattivo appoggiandosi a eBPF: consente di identificare i problemi di performance prima che diventino critici. Ciò si traduce in una maggiore affidabilità del servizio e in un’esperienza di visione ancora più fluida.

Agire sul kernel Linux migliora l’osservabilità di qualunque piattaforma

Mentre Microsoft decide di chiudere il kernel Windows alle soluzioni antimalware di terze parti per evitare possibili crash di sistema, come avvenuto nel noto caso CrowdStrike di luglio 2024, è Netflix stessa a spiegare che l’accesso diretto al kernel Linux tramite eBPF migliora l’osservabilità dell’infrastruttura, fornendo approfondimenti e monitoraggio avanzato.

Per garantire l’affidabilità dei nostri carichi di lavoro, che dipendono da risposte a bassa latenza, verifichiamo la latenza della run queue per ciascun container, misurando il tempo che i processi trascorrono nella coda di scheduling prima di essere dispatchati alla CPU. L’attesa prolungata in questa coda può segnalare problemi di performance, specialmente quando i container non stanno utilizzando la loro allocazione totale in termini di CPU“, spiega Netflix in un eccellente post tecnico.

Credit immagine in apertura: Copilot Designer

Ti consigliamo anche

Link copiato negli appunti