Home Articles techniques Pourquoi la capacité du réseau ne suffit pas : stratégies de mise en cache pour un meilleur streaming
Applications

Pourquoi la capacité du réseau ne suffit pas : stratégies de mise en cache pour un meilleur streaming

About The Author

Outline

Pour suivre le rythme de la croissance du volume de contenu multimédia, la plateforme Verizon Media, aujourd’hui Edgio Media, a investi dans l’expansion de notre empreinte cache mondiale. 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 n’est pas suffisante, et ce n’est pas non plus un modèle commercial durable pour répondre à la demande mondiale toujours croissante de contenu en streaming.

Pour maximiser la disponibilité de la capacité de notre 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 conçu 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 qu’il y ait une stratégie de mise en cache unique pour régler 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 de la même manière que des stratégies plus complexes comme S4LRU (Quadruply-segmented LRU). Vous pouvez obtenir plus de détails dans cet article que nous avons publié l’année dernière lors de 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 capacité que nous avons récemment ajoutée à notre plate-forme appelée Hybrid LRU. Il est appelé hybride parce qu’il ajoute une couche d’abstraction au-dessus de 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, c’est 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 certains contenus 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 du streaming vidéo, en particulier la croissance rapide du streaming en direct. À lui seul, notre réseau 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énements en direct est terminé, il est peu probable qu’il soit retransmis à 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 la garantie 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 pour une période de temps spécifique afin qu’ils n’atteignent pas leurs serveurs d’origine.

Le LRU hybride nous permet également de stocker du contenu pour une plus longue durée. 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 vie lorsque le CDN n’a pas de contenu demandé dans son cache. Dans de tels cas, une nouvelle requête client déclencherait une absence de cache que l’origine devra remplir, ce qui pourrait entraîner une remise en mémoire tampon. Vieillir ce contenu plus lentement restera dans le cache plus longtemps et réduira le nombre de ces remplissages d’origines.

Paramètres d’utilisation du LRU hybride

Le LRU hybride se compose de deux paramètres réglables qui nous permettent de retarder ou d’accélérer l’expulsion ou la suppression d’un contenu spécifique de nos caches :

  • Taux de vieillissement
  • Durée de vie (TTL)
Le taux de vieillissement définit le taux d’augmentation du score d’éviction au fil du temps. C’est une fonction de mise à l’échelle que les opérateurs peuvent utiliser pour faire vieillir un contenu plus rapidement ou plus lentement. La valeur par défaut pour le taux de vieillissement est 10, donc changer cette valeur à 200, par exemple, accélérera le vieillissement du fichier vidéo de 20 fois (200/10 = 20). La valeur peut également être modifiée à cinq pour vieillir un contenu à la moitié de la vitesse par défaut.

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 son dernier accès. La valeur par défaut est de 0 secondes, ce qui signifie qu’il n’y a pas de préférence spéciale.

Les graphiques ci-dessous montrent comment ces paramètres ajustables fonctionnent pour ajuster la durée de conservation du contenu dans le cache. Il est utile de considérer ces paramètres comme des boutons ou des cadrans qui peuvent être ajustés avec précision pour répondre aux demandes de contenu. Les graphiques montrent comment les objets vieillissent dans le temps sur les caches de serveur en attendant d’être consultés.

Tout d’abord, regardons le taux de vieillissement. Les objets LRU traditionnels vieillissent au même rythme dans le temps. Mais à mesure que nous montons le cadran de taux de vieillissement, les articles vieillissent plus rapidement avec le temps. De même, lorsque nous tournons le cadran dans la direction opposée, les articles vieillissent plus lentement que LRU. Tournez suffisamment le cadran, et les articles à vieillissement lent ne dépassent jamais le «seuil d’expulsion», comme le montre la figure 1. Grâce à ce contrôle, nous pouvons soit supprimer des éléments plus tôt pour libérer de l’espace, soit conserver des éléments sur le disque plus longtemps pour réduire les extractions d’origine ou pour d’autres raisons.

Contrairement à Aging Rate, TTL nous permet de modifier la capacité de cache d’un élément particulier. Pour la durée définie à l’aide de la fonction TTL, un élément ne vieillit pas lorsqu’il est sur le disque, il est donc moins probable (même très improbable) d’être expulsé. Une fois le TTL expiré, l’élément peut commencer à vieillir de la manière traditionnelle LRU ou 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’éviction du cache. À l’autre extrémité, TTL a veillé à ce qu’un flux vidéo en direct soit mis en cache pendant au moins la durée de l’événement, mais 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, d’autre part, est plus agressif et peut effectivement verrouiller une partie d’un disque jusqu’à ce que le contenu soit libéré. Cependant, comme l’illustrent ces exemples, les deux contrôles peuvent être utilisés ensemble pour obtenir de manière fiable l’effet souhaité.

Stratégies de mise en cache prospectives

Une stratégie de mise en cache étendue telle que LRU est comme un gros marteau, traitant tous les contenus de la même manière, 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 des flux vidéo/événements en direct ponctuels) qui sont peu susceptibles d’obtenir des hits à l’avenir restent dans le cache, occupant de l’espace. Le LRU hybride ajoute un niveau de raffinement visant à réduire l’encombrement inutile du cache et à améliorer le taux de réussite du 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 un opérateur pour ajuster les délais d’expulsion du contenu. À l’avenir, nous cherchons à déterminer 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 de vidéo à la demande. Nous envisageons également de procéder à des ajustements en fonction de la taille des fichiers. Voulez-vous conserver les fichiers volumineux sur le disque pour minimiser le trafic réseau ou conserver 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.