Per tenere il passo con il crescente volume di contenuti multimediali, Verizon Media, ora Edgio Media, Platform, ha investito nell’espansione della nostra area cache globale. Solo nel 2019, abbiamo aggiunto oltre 25 Tbps di capacità, sette pop globali e quasi 900 connessioni dell’ultimo miglio. Anche se efficace nel migliorare le performance, la capacità non è sufficiente, né è un modello di business sostenibile per soddisfare la domanda globale in continua crescita di contenuti in streaming.
Per massimizzare la disponibilità della nostra capacità di rete, investiamo ugualmente in tecnologie, processi e strumenti che tengono sotto controllo i costi operativi e di infrastruttura. Il nostro team di ricerca spinge continuamente i confini delle tecnologie di caching, applicando e perfezionando i processi per offrire ai nostri operatori di rete un controllo granulare su come, quando e dove i contenuti vengono memorizzati nella cache.
Strategie di caching moderne
L’obiettivo di qualsiasi strategia di caching è mantenere i contenuti più diffusi nella cache, rimuovendo i contenuti meno diffusi in modo rapido ed efficiente. Nel corso degli anni, ricercatori e sviluppatori di software hanno elaborato innumerevoli strategie volte a risolvere la sfida del caching. Questi variano da relativamente semplici a estremamente complessi. Alcune delle strategie più popolari includono:
- L’LRU meno utilizzata di recente
- Uso meno frequente (LFU)
- FIFO (First in, First Out)
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 la LRU offre il miglior compromesso tra il tasso di hit e i/o su disco, fornendo il 60% in meno di scritture rispetto alla FIFO, mantenendo al contempo alti tassi di hit. Inoltre, per le dimensioni del disco utilizzate nella CDN, l’LRU funziona allo stesso modo di policy più complesse come S4LRU (LRU quadruplicata). Potete ottenere maggiori dettagli in questo documento pubblicato l’anno scorso in occasione della Passive and Active Measurement Conference (PAM) tenutasi a Puerto Varas, Cile.
Strategia di caching in evoluzione 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 uno strato di astrazione sopra la 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 specifici pezzi di contenuto. Per controllo si intende la possibilità di memorizzare esplicitamente alcuni contenuti per una durata maggiore o minore in base a 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 dal vivo, molti dei quali sono distribuiti a milioni di spettatori simultanei. Nonostante la grande popolarità di tali eventi, una volta completato un flusso di eventi live, è improbabile che venga ritrasmesso in streaming a qualsiasi volume significativo. Con la LRU ibrida, possiamo specificare un periodo di cache più breve, liberando preziose risorse di cache per altri contenuti e contenuti multimediali.
Stiamo sperimentando la possibilità di bloccare determinati contenuti e di garantirne al massimo la permanenza nella cache. Ciò può essere particolarmente utile per i flussi video live con una durata limitata, ma può essere ancora 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 determinato periodo di tempo in modo che non colpiscano 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 una scarsa QoE quando la CDN non ha contenuto richiesto nella sua cache. In questi casi, una nuova richiesta client attiverebbe un errore di cache che l’origine dovrà riempire, con conseguente potenziale rebuffering. L’invecchiamento più lento di questo contenuto rimarrà nella cache più a lungo e ridurrà il numero di riempimenti di origine.
Parametri di utilizzo LRU ibrida
La LRU ibrida è costituita da due parametri sintonizzabili che consentono di ritardare o accelerare lo sfratto o la rimozione di contenuti specifici dalle nostre cache:
- Velocità di invecchiamento
- TTL (Time To Live)
Il parametro TTL (Time To Live) riduce l’età di un articolo di una quantità specificata. Funziona fornendo 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 di tempo specificato dall’ultimo accesso. Il valore predefinito è 0 secondi, il che significa che non esiste una preferenza speciale.
I grafici riportati di seguito mostrano come funzionano questi parametri sintonizzabili 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 di contenuto. I grafici mostrano come gli oggetti invecchiano nel tempo nelle cache dei server durante l’attesa di accesso.
Per prima cosa, diamo un’occhiata al tasso di invecchiamento. Gli oggetti LRU tradizionali invecchiano alla stessa velocità nel tempo. Ma quando alziamo il quadrante del tasso di invecchiamento, gli articoli invecchiano più velocemente nel tempo. Allo stesso modo, ruotando il quadrante nella direzione opposta, gli articoli invecchiano più lentamente rispetto all’LRU. “Ruotando la manopola a sufficienza, gli elementi che invecchiano lentamente non superano mai la “soglia di sfratto”, come mostrato nella figura uno.” Con questo controllo, possiamo rimuovere gli elementi prima per liberare spazio o mantenere gli elementi sul disco più a lungo, in base alle necessità, per ridurre i tempi di estrazione dell’origine o per altri motivi.
A differenza della velocità di invecchiamento, TTL ci consente di modificare la capacità di 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) che venga sfrattato. Una volta scaduto il TTL, l’articolo può iniziare a invecchiare nel modo tradizionale LRU o con invecchiamento rapido o lento (a seconda di come l’operatore lo configura). Nella figura riportata di seguito, il TTL con invecchiamento lento ha mantenuto un elemento sul disco fino al punto in cui non ha superato la soglia di sfratto della cache. All’estremità opposta, TTL ha garantito che un flusso video live fosse memorizzato nella cache per almeno la durata dell’evento, ma successivamente è stato rapidamente rimosso 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 di sfratto del contenuto dalla cache, poiché può adattarsi facilmente alla quantità di traffico su un disco. Il TTL, d’altra parte, è più aggressivo e può bloccare efficacemente una parte di un disco fino a quando il contenuto non viene rilasciato. Tuttavia, come illustrato in questi esempi, i due controlli 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, trattando tutti i contenuti in modo uguale, 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 video/eventi dal vivo una tantum) che difficilmente avranno successo in futuro rimangono nella cache, occupando spazio. L’LRU ibrida aggiunge un livello di perfezionamento con l’intento di ridurre l’ingombro della cache non necessario e migliorare il rapporto di riscontri della cache. È come usare un piccolo martello o un cacciavite per controllare con maggiore precisione quali file dovrebbero rimanere nella cache e quali dovrebbero essere rimossi.
Attualmente, l’IFR ibrida è sperimentale e richiede che un operatore regoli i tempi di sfratto per il contenuto. Guardando al futuro, stiamo cercando se i profili delle richieste 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 che arrivano contemporaneamente, quindi file video-on-demand. Stiamo anche cercando di apportare modifiche in base alle dimensioni dei file: Vuoi mantenere file di grandi dimensioni su disco per ridurre al minimo il traffico di rete o mantenere file di dimensioni ridotte a portata di mano per ottimizzare il rapporto di hit della cache?
Anche se siamo sicuri delle prestazioni e della maturità del nostro sistema di caching e delle nostre strategie, la necessità di ottimizzare le risorse finite rimane uno sforzo importante e continuo.