Pour suivre le volume croissant de contenu multimédia, la plateforme Verizon Media, aujourd’hui Edgio Media, a investi dans l’expansion de notre empreinte mondiale de cache. En 2019 seulement, nous avons ajouté plus de 25 Tbps de capacité, sept POP mondiaux et près de 900 connexions du dernier kilomètre. Bien qu’efficace pour améliorer les performances, la capacité brute ne suffit pas, pas plus qu’un modèle commercial durable pour répondre à la demande mondiale croissante de contenu en streaming.
Pour maximiser la disponibilité de notre capacité de réseau, nous investissons également dans des technologies, des processus et des outils qui permettent de maîtriser les coûts opérationnels et d’infrastructure. Notre équipe de recherche repousse continuellement les limites des technologies de mise en cache, en appliquant et en affinant les processus pour donner à nos opérateurs réseau un contrôle granulaire sur la façon, le moment et l’endroit où le contenu est mis en cache.
Stratégies modernes de mise en cache
L’objectif de toute stratégie de mise en cache est de conserver le contenu le plus populaire dans le cache tout en supprimant rapidement et efficacement le contenu le moins populaire. Au fil des ans, les chercheurs et les développeurs de logiciels ont mis au point d’innombrables stratégies destinées à résoudre le défi de la mise en cache. Ceux-ci vont de relativement simples à extrêmement complexes. Certaines des stratégies les plus populaires incluent:
- Le moins récemment utilisé (LRU)
- Moins fréquemment utilisé (LFU)
- Premier entré, premier sorti (FIFO)
Il serait pratique d’avoir une seule stratégie de mise en cache pour gérer toutes les situations. Cependant, une telle solution n’a pas encore été développée, et l’efficacité d’une stratégie particulière peut varier considérablement en fonction de la taille des serveurs et des disques, des modèles de trafic et d’autres facteurs. Sur la base de tests approfondis, nous avons constaté que le LRU offre le meilleur compromis entre le taux de réussite et les E/S disque, fournissant 60 % d’écritures en moins que le FIFO tout en maintenant des taux de réussite élevés. De plus, pour les tailles de disque utilisées dans notre CDN, le LRU fonctionne au même niveau que les règles plus complexes comme S4LRU (Quadruply-segmenté LRU). Vous pouvez obtenir plus de détails dans ce document que nous avons publié l’année dernière à la passive and Active Measurement Conference (PAM) qui s’est tenue à Puerto Varas, au Chili.
Évolution de la stratégie de mise en cache avec le LRU hybride
Même si LRU fonctionne très bien pour notre environnement, nous cherchons toujours des moyens de stimuler l’innovation et d’améliorer la performance de nos clients. Cela a conduit à une nouvelle fonctionnalité que nous avons récemment ajoutée à notre plate-forme appelée Hybrid LRU. On l’appelle hybride parce qu’il ajoute une couche d’abstraction au-dessus du LRU. Si nous n’utilisons pas la fonctionnalité hybride, le système continue de fonctionner normalement, il est donc très facile à comprendre et à activer ou désactiver.
Ce que nous faisons avec l’approche hybride est de peaufiner le système LRU pour nous donner plus de contrôle sur des éléments de contenu spécifiques. Par contrôle, nous entendons avoir la possibilité de stocker explicitement du contenu pour une durée plus ou moins longue en fonction de paramètres prédéfinis.
Ceci est important en raison des changements qui se produisent dans le paysage de la diffusion vidéo en continu, en particulier la croissance rapide du streaming en direct. Notre réseau à lui seul a accueilli des centaines de milliers d’événements en direct, dont beaucoup sont diffusés à des millions de téléspectateurs simultanés. Malgré la popularité massive de ces événements, une fois qu’un flux d’événement en direct est terminé, il est peu probable qu’il soit rediffusé à un volume significatif. Avec Hybrid LRU, nous pouvons spécifier une période de cache plus courte, libérant ainsi de précieuses ressources de cache pour d’autres médias et contenus.
Nous expérimentons actuellement le verrouillage de certains contenus et nous garantissons au mieux qu’ils resteront dans notre cache. Cela peut être particulièrement utile pour les flux vidéo en direct avec une durée de conservation limitée, mais peut encore être très demandé pendant quelques heures après un événement en direct, qui devient un élément normal de contenu vidéo à la demande. Cette fonctionnalité peut également être utilisée dans des conditions où un fournisseur de contenu souhaite explicitement verrouiller certains contenus pendant une période spécifique afin qu’ils ne touchent pas leurs serveurs d’origine.
Hybrid LRU nous permet également de stocker du contenu pour une durée plus longue. Ceci est utile si l’origine est située dans une partie éloignée du monde, par exemple, ce qui peut conduire à une mauvaise qualité de service lorsque le CDN n’a pas de contenu demandé dans son cache. Dans de tels cas, une nouvelle requête client déclencherait un échec de cache que l’origine devra remplir, ce qui pourrait entraîner une remise en mémoire tampon. Un vieillissement plus lent de ce contenu restera plus longtemps dans le cache et réduira le nombre de remplissages d’origines.
Paramètres d’utilisation du LRU hybride
Hybrid LRU se compose de deux paramètres réglables qui nous donnent la possibilité de retarder ou d’accélérer l’expulsion ou le retrait de contenu spécifique de nos caches:
- Taux de vieillissement
- Durée de vie (TTL)
Le paramètre durée de vie (TTL) réduit l’âge d’un élément d’une quantité spécifiée. Il fonctionne en donnant un score d’expulsion extrêmement faible à un élément pour la durée définie par cette variable. Ceci force un élément à rester dans le cache pendant une durée spécifiée depuis le dernier accès. La valeur par défaut est 0 seconde, ce qui signifie qu’aucune préférence particulière n’est accordée.
Les graphiques ci-dessous montrent comment ces paramètres ajustables fonctionnent pour ajuster la durée pendant laquelle le contenu reste dans le cache. Considérer ces paramètres comme des boutons ou des cadrans qui peuvent être ajustés avec précision pour correspondre aux demandes de contenu est utile. Les graphiques montrent comment les objets vieillissent au fil du temps sur les caches du serveur en attendant d’être accédés.
Tout d’abord, examinons le taux de vieillissement. Les objets LRU traditionnels vieillissent au même rythme dans le temps. Mais à mesure que nous augmentons le cadran tarifaire vieillissant, les articles vieillissent plus vite avec le temps. De même, lorsque nous tournons le cadran dans la direction opposée, les éléments vieillissent plus lentement que LRU. Tournez suffisamment le cadran, et les éléments vieillissants lentement ne dépassent jamais le « seuil d’expulsion », comme le montre la figure 1. Grâce à ce contrôle, nous pouvons soit retirer les articles plus tôt pour libérer de l’espace, soit conserver les articles sur le disque plus longtemps au besoin pour réduire les collectes à l’origine ou pour d’autres raisons.
Contrairement au taux de vieillissement, TTL nous permet de modifier la capacité de cache d’un élément particulier. Pendant la durée définie à l’aide de la fonction TTL, un élément ne vieillit pas alors qu’il est sur le disque, il est donc moins probable (même très peu probable) d’être expulsé. Une fois le TTL expiré, l’élément peut commencer à vieillir soit de la manière LRU traditionnelle, soit avec un vieillissement rapide ou lent (selon la façon dont l’opérateur le configure). Dans la figure ci-dessous, TTL avec vieillissement lent a conservé un élément sur le disque au point où il ne dépassait pas le seuil d’expulsion du cache. À l’opposé, TTL s’est assuré qu’un flux vidéo en direct était mis en cache au moins pendant la durée de l’événement, mais qu’après cela a été rapidement supprimé du disque en utilisant un vieillissement rapide.
Dans la plupart des cas, la modification de la valeur du taux de vieillissement est la méthode préférée pour ajuster le moment où le contenu est expulsé du cache, car elle peut facilement s’adapter à la quantité de trafic sur un disque. TTL, en revanche, est plus agressif et peut verrouiller efficacement une partie d’un disque jusqu’à ce que le contenu soit libéré. Cependant, comme l’illustrent ces exemples, les deux commandes peuvent être utilisées ensemble pour obtenir de manière fiable l’effet désiré.
Stratégies de mise en cache prospectives
Une stratégie de mise en cache étendue telle que LRU est comme un gros marteau, traitant tout le contenu de manière égale, indépendamment du type ou de la taille du fichier. Si un fichier ne reçoit pas de succès dans un certain temps, il est supprimé du cache. Pendant ce temps, d’autres fichiers (comme les flux vidéo/événements en direct uniques) qui sont peu susceptibles d’obtenir des hits à l’avenir restent dans le cache, prenant de l’espace. Le LRU hybride ajoute un niveau de raffinement visant à réduire l’encombrement inutile du cache et à améliorer le taux d’accès au cache. C’est comme utiliser un petit marteau ou un tournevis pour contrôler plus précisément quels fichiers doivent rester dans le cache et lesquels doivent être supprimés.
Actuellement, Hybrid LRU est expérimental et nécessite qu’un opérateur ajuste les délais d’expulsion pour le contenu. À l’avenir, nous recherchons si les profils de demande et d’autres facteurs peuvent être exploités pour effectuer des ajustements automatiquement. Les événements en direct, par exemple, ont de nombreux profils différents – des milliers de demandes pour les mêmes segments de fichiers arrivent en même temps – puis des fichiers vidéo à la demande. Nous cherchons également à faire des ajustements en fonction de la taille des fichiers. Voulez-vous conserver des fichiers volumineux sur le disque pour minimiser le trafic réseau ou garder des fichiers plus petits à portée de main pour optimiser le taux de réussite du cache ?
Même si nous sommes confiants dans les performances et la maturité de notre système et de nos stratégies de mise en cache, la nécessité d’optimiser les ressources limitées demeure un effort important et continu.