Home Articoli tecnici Perché la capacità di rete non è sufficiente: Strategie di caching per uno streaming migliore
Applications

Perché la capacità di rete non è sufficiente: Strategie di caching per uno streaming migliore

About The Author

Outline

Per stare al passo con il crescente volume di contenuti multimediali, Verizon Media, ora Edgio Media, Platform ha investito nell’espansione della cache globale. Solo nel 2019, abbiamo aggiunto più di 25 Tbps di capacità, sette POP globali e quasi 900 connessioni dell’ultimo miglio. Pur essendo efficace nel migliorare le prestazioni, la capacità non elaborata non è sufficiente, né è un modello di business sostenibile per soddisfare la crescente domanda globale di contenuti in streaming.

Per massimizzare la disponibilità della nostra capacità di rete, investiamo ugualmente in tecnologie, processi e strumenti che tengano sotto controllo i costi operativi e dell’infrastruttura. Il nostro team di ricerca spinge continuamente i confini delle tecnologie di caching, applicando e perfezionando i processi per fornire ai nostri operatori di rete un controllo granulare su come, quando e dove i contenuti vengono memorizzati nella cache.

Moderne strategie di caching

L’obiettivo di qualsiasi strategia di memorizzazione nella cache è quello di mantenere i contenuti più diffusi nella cache, rimuovendo in modo rapido ed efficiente i contenuti meno diffusi. Nel corso degli anni, ricercatori e sviluppatori di software hanno ideato innumerevoli strategie per risolvere la sfida del caching. Queste vanno da relativamente semplici a estremamente complesse. Alcune delle strategie più popolari includono:

  • Il meno recente utilizzato (LRU)
  • Uso meno frequente (LFU)
  • Primo ingresso, primo uscita (FIFO)

Sarebbe conveniente se ci fosse un’unica strategia di caching per governare tutte le situazioni. Tuttavia, tale soluzione deve ancora essere sviluppata e l’efficacia di una particolare strategia può variare notevolmente a seconda delle dimensioni del server e del disco, dei modelli di traffico e di altri fattori. Sulla base di test approfonditi, abbiamo scoperto che LRU offre il miglior compromesso tra la frequenza di hit e i/o del disco, fornendo il 60% in meno di scritture rispetto alla FIFO, mantenendo elevati i tassi di hit. Inoltre, per le dimensioni del disco utilizzate nella nostra CDN, l’LRU funziona alla pari con policy più complesse come S4LRU (LRU quadruplicata). Potete ottenere maggiori dettagli in questo documento che abbiamo pubblicato lo scorso anno alla Passive and Active Measurement Conference (PAM) tenutasi a Puerto Varas, Cile.

Evoluzione della strategia di caching con LRU ibrida

Anche se LRU funziona molto bene per il nostro ambiente, siamo sempre alla ricerca di modi per promuovere l’innovazione e migliorare le prestazioni dei clienti. Questo ha portato a una nuova funzionalità che abbiamo recentemente aggiunto alla nostra piattaforma chiamata Hybrid LRU. Si chiama ibrido perché aggiunge un livello di astrazione sopra LRU. Se non usiamo la funzionalità ibrida, il sistema continua a funzionare normalmente, quindi è molto facile da capire e attivare o disattivare.

Quello che stiamo facendo con l’approccio ibrido è modificare il sistema LRU per darci un maggiore controllo su parti specifiche di contenuti. Per controllo si intende la possibilità di memorizzare esplicitamente alcuni contenuti per una durata maggiore o minore in base alle impostazioni predefinite.

Ciò è importante a causa dei cambiamenti che si verificano nel panorama dello streaming video, in particolare la rapida crescita dello streaming live. La nostra rete da sola ha ospitato centinaia di migliaia di eventi live, molti dei quali distribuiti a milioni di spettatori simultanei. Nonostante l’enorme popolarità di tali eventi, una volta completato uno streaming di eventi dal vivo, non è probabile che venga ritrasmesso in streaming a qualsiasi volume significativo. Con la LRU ibrida, possiamo specificare un periodo di cache più breve, liberando risorse cache preziose per altri contenuti e contenuti multimediali.

Stiamo sperimentando il blocco di alcuni contenuti e ci assicuriamo che rimarranno nella nostra cache. Questo può essere particolarmente utile per i flussi video live con durata a magazzino limitata, ma può essere ancora molto richiesto per alcune ore dopo un evento live, che diventa un normale contenuto video-on-demand. Questa funzionalità può essere utilizzata anche in condizioni in cui un provider di contenuti desidera bloccare esplicitamente alcuni contenuti per un periodo di tempo specifico in modo che non raggiungano i server di origine.

La LRU ibrida ci consente inoltre di memorizzare alcuni contenuti per una durata più lunga. Ciò è utile se l’origine si trova in una parte remota del mondo, ad esempio, il che può portare a un QoE scadente quando la CDN non ha contenuto richiesto nella cache. In questi casi, una nuova richiesta client potrebbe generare un errore di cache che l’origine dovrà riempire, con conseguente possibilità di rebuffering. L’invecchiamento di questo contenuto più lento rimane nella cache più a lungo e riduce il numero di riempimenti di tali origini.

Parametri di utilizzo LRU ibrida

La LRU ibrida è costituita da due parametri regolabili che ci consentono di ritardare o accelerare lo sfratto o la rimozione di contenuti specifici dalle nostre cache:

  • Tasso di invecchiamento
  • Tempo di attivazione (TTL)
Il tasso di invecchiamento definisce il tasso di aumento del punteggio di sfratto nel tempo. È una funzione di ridimensionamento che gli operatori possono utilizzare per rendere un pezzo di età del contenuto più veloce o più lento. Il valore predefinito per la velocità di invecchiamento è 10, quindi modificando questo valore su 200, ad esempio, l’invecchiamento del file video verrà accelerato di 20 volte (200/10 = 20). Il valore può anche essere modificato in cinque per affinare un contenuto a metà della velocità predefinita.

Il parametro Time To Live (TTL) riduce l’età di un articolo di una quantità specificata. Funziona dando un punteggio di sfratto estremamente basso a un elemento per la durata impostata da questa variabile. In questo modo un elemento rimane nella cache per un periodo specificato dall’ultimo accesso. Il valore predefinito è 0 secondi, il che significa che non è disponibile alcuna preferenza speciale.

I grafici riportati di seguito mostrano come funzionano questi parametri ottimizzabili per regolare il tempo di permanenza del contenuto nella cache. È utile considerare questi parametri come manopole o quadranti che possono essere regolati con precisione per soddisfare le esigenze dei contenuti. I grafici mostrano come gli oggetti invecchiano nel tempo nella cache del server in attesa di essere accesi.

Innanzitutto, diamo un’occhiata al tasso di invecchiamento. Gli oggetti LRU tradizionali invecchiano alla stessa velocità nel tempo. Ma quando si alza il quadrante del tasso di invecchiamento, gli articoli invecchiano più velocemente nel tempo. Allo stesso modo, quando si ruota il quadrante nella direzione opposta, gli elementi invecchiano più lentamente rispetto all’LRU. Ruotando la manopola a sufficienza, gli oggetti che invecchiano lentamente non superano mai la “soglia di sfratto”, come mostrato nella figura 1. Con questo controllo, possiamo rimuovere gli elementi prima per liberare spazio o mantenere gli elementi su disco più a lungo, se necessario per ridurre i prelievi dell’origine o per altri motivi.

A differenza della velocità di invecchiamento, TTL consente di modificare la capacità cache di un particolare elemento. Per la durata impostata utilizzando la funzione TTL, un elemento non invecchia mentre è sul disco, quindi è meno probabile (anche molto improbabile) essere sfrattato. Dopo la scadenza del TTL, l’articolo può iniziare a invecchiare in modo tradizionale LRU o con invecchiamento rapido o lento (a seconda di come l’operatore lo configura). Nella figura seguente, TTL con invecchiamento lento ha mantenuto un elemento su disco al punto in cui non ha superato la soglia di sfratto della cache. All’estremità opposta, TTL assicurava che un flusso video live fosse memorizzato nella cache almeno per la durata dell’evento, ma in seguito è stato rimosso rapidamente dal disco utilizzando il fast aging.

Nella maggior parte dei casi, la modifica del valore della velocità di invecchiamento è il metodo preferito per regolare la tempistica per quando il contenuto viene sfrattato dalla cache perché può adattarsi facilmente alla quantità di traffico su un disco. TTL, d’altra parte, è più aggressivo e può bloccare efficacemente una parte di un disco fino al rilascio del contenuto. Tuttavia, come illustrato in questi esempi, i due comandi possono essere utilizzati insieme per ottenere in modo affidabile l’effetto desiderato.

Strategie di caching lungimiranti

Un’ampia strategia di caching, come LRU, è come un grande martello, che tratta tutti i contenuti allo stesso modo, indipendentemente dal tipo o dalle dimensioni del file. Se un file non ottiene un successo entro un certo periodo di tempo, viene eliminato dalla cache. Nel frattempo, altri file (come flussi/eventi video live una tantum) che difficilmente riceveranno riscontri in futuro si trovano nella cache, occupando spazio. La LRU ibrida aggiunge un livello di perfezionamento con l’intento di ridurre l’ingombro della cache non necessario e migliorare il rapporto di hit della cache. È come usare un piccolo martello o un cacciavite per controllare con maggiore precisione quali file devono rimanere nella cache e quali devono essere rimossi.

Attualmente, la LRU ibrida è sperimentale e richiede che un operatore regoli i tempi di sfratto per il contenuto. In prospettiva, stiamo cercando se i profili di richiesta e altri fattori possono essere sfruttati per apportare modifiche automaticamente. Gli eventi live, ad esempio, hanno molti profili diversi: Migliaia di richieste per gli stessi segmenti di file in arrivo contemporaneamente, quindi file video on demand. Stiamo anche cercando di apportare modifiche in base alle dimensioni dei file: Vuoi mantenere i file di grandi dimensioni su disco per ridurre al minimo il traffico di rete o tenere a portata di mano file più piccoli per ottimizzare il rapporto di hit della cache?

Anche se siamo fiduciosi nelle prestazioni e nella maturità del nostro sistema e delle nostre strategie di caching, la necessità di ottimizzare le risorse finite rimane uno sforzo importante e costante.