Para mantenerse al día con el creciente volumen de contenido multimedia, Verizon Media, ahora Edgio Media, Platform, ha invertido en expandir nuestra huella de caché global. Solo en 2019, agregamos más de 25 Tbps de capacidad, siete COP globales y cerca de 900 conexiones de última milla. Si bien es eficaz para mejorar el rendimiento, la capacidad bruta no es suficiente, ni tampoco es un modelo de negocio sostenible para satisfacer la creciente demanda mundial de contenido en streaming.
Para maximizar la disponibilidad de nuestra capacidad de red, invertimos por igual en tecnologías, procesos y herramientas que mantienen bajo control los costos operativos y de infraestructura. Nuestro equipo de investigación continuamente empuja los límites de las tecnologías de almacenamiento en caché, aplicando y refinando los procesos para dar a nuestros operadores de red un control granular sobre cómo, cuándo y dónde se almacena el contenido en caché.
Estrategias modernas de almacenamiento en caché
El objetivo de cualquier estrategia de almacenamiento en caché es mantener el contenido más popular en la caché mientras se elimina de forma rápida y eficiente el contenido menos popular. A lo largo de los años, los investigadores y desarrolladores de software han ideado innumerables estrategias destinadas a resolver el desafío del almacenamiento en caché. Estos van desde relativamente simples hasta extremadamente complejos. Algunas de las estrategias más populares incluyen:
- El menos utilizado recientemente (LRU)
- Menos frecuentemente utilizado (LFU)
- Primero en entrar, primero en salir (FIFO)
Sería conveniente si hubiera una única estrategia de almacenamiento en caché para gobernar todas las situaciones. Sin embargo, esta solución aún no se ha desarrollado, y la efectividad de una estrategia en particular puede variar mucho dependiendo del tamaño del servidor y del disco, los patrones de tráfico y otros factores. Basándonos en extensas pruebas, hemos descubierto que LRU ofrece el mejor compromiso entre la tasa de aciertos y la E/S del disco, proporcionando un 60% menos de escrituras que FIFO mientras mantiene altas tasas de aciertos. Además, para los tamaños de disco utilizados en nuestra CDN, LRU funciona a la par con políticas más complejas como S4LRU (LRU de segmentación cuádruple). Puede obtener más detalles en este artículo que publicamos el año pasado en la Conferencia de Medición Pasiva y Activa (PAM) realizada en Puerto Varas, Chile.
Evolución de la estrategia de almacenamiento en caché con Hybrid LRU
Aunque LRU funciona muy bien para nuestro entorno, siempre estamos buscando formas de impulsar la innovación y mejorar el rendimiento del cliente. Esto ha llevado a una nueva capacidad que hemos añadido recientemente a nuestra plataforma llamada Hybrid LRU. Se llama híbrido porque agrega una capa de abstracción encima de LRU. Si no utilizamos la funcionalidad híbrida, el sistema sigue funcionando normalmente, por lo que es muy fácil de entender y activar o desactivar.
Lo que estamos haciendo con el enfoque híbrido es ajustar el sistema LRU para darnos más control sobre piezas específicas de contenido. Por control, nos referimos a tener la capacidad de almacenar explícitamente algún contenido durante una duración más larga o más corta en función de la configuración predefinida.
Esto es importante debido a los cambios que ocurren en el panorama de la transmisión de video, particularmente el rápido crecimiento de la transmisión en vivo. Solo nuestra red ha albergado cientos de miles de eventos en vivo, muchos de los cuales se entregan a millones de espectadores simultáneos. A pesar de la popularidad masiva de tales eventos, una vez que se completa una transmisión de eventos en vivo, no es probable que se vuelva a transmitir a un volumen significativo. Con Hybrid LRU, podemos especificar un período de caché más corto, liberando valiosos recursos de caché para otros medios y contenido.
Estamos experimentando con bloquear cierto contenido y proporcionar una garantía de esfuerzo de que permanecerá en nuestra caché. Esto puede ser particularmente útil para transmisiones de video en vivo con una vida útil limitada, pero aún así puede tener una gran demanda durante algunas horas después de un evento en vivo, lo que se convierte en una pieza normal de contenido de video bajo demanda. Esta funcionalidad también se puede utilizar en condiciones en las que un proveedor de contenido desea bloquear explícitamente algunos contenidos durante un período de tiempo específico para que no llegue a sus servidores de origen.
Hybrid LRU también nos permite almacenar algunos contenidos durante un período de tiempo más largo. Esto es útil si el origen se encuentra en una parte remota del mundo, por ejemplo, lo que puede conducir a una QoE deficiente cuando la CDN no tiene contenido solicitado en su caché. En tales casos, una nueva solicitud de cliente desencadenaría un error de caché que el origen necesitará llenar, lo que podría resultar en un rebúfer. Envejecer este contenido más lento permanecerá en la caché más tiempo y reducirá el número de rellenos de orígenes.
Parámetros de uso de LRU híbrido
Hybrid LRU consta de dos parámetros ajustables que nos dan la capacidad de retrasar o acelerar el desalojo o la eliminación de contenido específico de nuestros cachés:
- Tasa de envejecimiento
- Tiempo para vivir (TTL)
El parámetro Tiempo de vida (TTL) reduce la edad de un elemento en una cantidad específica. Funciona dando una puntuación de desalojo extremadamente baja a un artículo durante la duración establecida por esta variable. Esto obliga a un elemento a permanecer en la caché durante una duración especificada desde que se accedió por última vez. El valor predeterminado es 0 segundos, lo que significa que no hay preferencia especial.
Los siguientes gráficos muestran cómo funcionan estos parámetros ajustables para ajustar cuánto tiempo permanece el contenido en la caché. Considerar estos parámetros como botones o diales que se pueden ajustar con precisión para satisfacer las demandas de contenido es útil. Los gráficos muestran cómo los objetos envejecen con el tiempo en las cachés del servidor mientras esperan ser accedidos.
Primero, veamos la tasa de envejecimiento. Los objetos LRU tradicionales envejecen al mismo ritmo con el tiempo. Pero a medida que aumentamos el dial de la tasa de envejecimiento, los artículos envejecen más rápido con el tiempo. Del mismo modo, cuando giramos el dial en la dirección opuesta, los elementos envejecen más lentamente que LRU. Gire el dial lo suficiente, y los elementos de envejecimiento lento nunca superan el “umbral de desalojo”, como muestra la figura uno. Con este control, podemos eliminar los elementos antes para liberar espacio o mantener los artículos en el disco más tiempo según sea necesario para reducir las tiradas de origen o por otras razones.
En contraste con Aging Rate, TTL nos permite cambiar la capacidad de caché de un elemento en particular. Durante la duración establecida con la función TTL, un elemento no envejece mientras está en el disco, por lo que es menos probable (incluso muy improbable) que sea desalojado. Después de que el TTL expire, el artículo puede comenzar a envejecer ya sea de la manera tradicional LRU o con envejecimiento rápido o envejecimiento lento (dependiendo de cómo lo configura el operador). En la figura siguiente, TTL con envejecimiento lento mantuvo un elemento en el disco hasta el punto en que no superó el umbral de desalojo de caché. En el extremo opuesto, TTL se aseguró de que una transmisión de video en vivo se almacenara en caché durante al menos la duración del evento, pero después de eso se eliminó rápidamente del disco usando el envejecimiento rápido.
En la mayoría de los casos, cambiar el valor de la tasa de envejecimiento es el método preferido para ajustar el tiempo para cuando el contenido es desalojado de la caché, ya que puede adaptarse fácilmente a la cantidad de tráfico en un disco. TTL, por otro lado, es más agresivo y puede bloquear efectivamente una parte de un disco hasta que se libere el contenido. Sin embargo, como ilustran estos ejemplos, los dos controles se pueden utilizar juntos para lograr de forma fiable el efecto deseado.
Estrategias de almacenamiento en caché prospectivo
Una estrategia de almacenamiento en caché amplia como LRU es como un gran martillo, tratando todo el contenido por igual, independientemente del tipo o tamaño del archivo. Si un archivo no recibe un hit dentro de un tiempo determinado, se elimina de la caché. Mientras tanto, otros archivos (como transmisiones / eventos de video en vivo de una sola vez) que es poco probable que obtengan visitas en el futuro se sientan en la caché, ocupando espacio. Hybrid LRU agrega un nivel de refinamiento con la intención de reducir la huella de caché innecesaria y mejorar la relación de aciertos de caché. Es como usar un pequeño martillo o destornillador para controlar con mayor precisión qué archivos deben permanecer en la caché y cuáles deben eliminarse.
Actualmente, Hybrid LRU es experimental y requiere que un operador ajuste los plazos de desalojo para el contenido. De cara al futuro, estamos investigando si los perfiles de solicitud y otros factores pueden aprovecharse para realizar ajustes automáticamente. Los eventos en vivo, por ejemplo, tienen muchos perfiles diferentes (miles de solicitudes para los mismos segmentos de archivos que llegan al mismo tiempo) y luego archivos de vídeo bajo demanda. También estamos considerando hacer ajustes basados en el tamaño del archivo. ¿Desea mantener archivos grandes en el disco para minimizar el tráfico de red o mantener archivos más pequeños a mano para optimizar la relación de aciertos de la caché?
Aunque confiamos en el rendimiento y la madurez de nuestro sistema y estrategias de almacenamiento en caché, la necesidad de optimizar los recursos finitos sigue siendo un esfuerzo importante y continuo.