Si alguna vez te has preguntado cómo funciona con respecto a hardware el servicio de streaming bajo demanda de Netflix entonces estás de enhorabuena, ya que por fin han revelado que utilizan para que puedas ver tus series y películas cómodamente desde tu casa o desde cualquier lugar. Y no, no se trata de ningún hardware único y especial, sino servidores basados en CPUs de AMD.
Los servicios de emisión de contenido por internet, conocidos como servicios de emisión en directo, requieren de hardware muy potente en el lado del proveedor, pero especialmente el añadido de nuevo hardware y software que eran antes totalmente inéditos en el mundo de los servidores. Y es que aunque servicios como Netflix ya llevan unos años, antes no existía el vídeo bajo demanda y con ello tampoco ciertos problemas que han traído nuevos paradigmas como las tarjetas de red inteligentes.
Así es el hardware que utiliza Netflix en sus servidores
La conferencia EuroBSD no es sobre hardware, sino sobre los sabores de las versiones BSD de Unix como es el caso de FreeBSD, sistema operativo con el que corren los servidores de Netflix, pero lo que realmente nos interesa es lo que tienen en su interior. Y es que cada servidor tiene una CPU AMD EPYC 7502P a 3,35 GHz equipado con 32 núcleos y por tanto 64 hilos de ejecución. La memoria RAM de cada servidor es de 256 GB del tipo DDR4-3200 conectada a través de 8 canales de memoria y otorgando un ancho de banda de 50 GB/s.
Además, cada servidor dispone de dos tarjetas de red Mellanox ConnectX-6 DX, donde en cada uno de ellos se implementa un SmartNIC que se utiliza para encriptar los datos, lo cual es clave para el correcto funcionamiento del servicio y que este funcione de manera continua sin paradas en el mismo, las cuales serían fatales para una experiencia óptima en el servicio.
¿Por qué Netflix necesita un SmartNIC en sus servidores?
AMD utiliza la interfaz Infinity Fabric como un conector universal en sus procesadores, no solo a nivel interno de los mismos, sino también externo y esto les permite intercomunicar las diferentes CPU en el caso de los AMD EPYC, no solo las que comparten un mismo IOD, sino también de manera externa. ¿El problema con el que se ha encontrado la gente de Netflix? Pese a que teóricamente la infraestructura puede soportar hasta 280 GB/s de ancho de banda, a efectos prácticos no es así.
El proceso de comunicación que empieza en las unidades de almacenamiento hasta que se envía la información al cliente a través de la tarjeta de red es el siguiente:
- A través de una unidad DMA se copian los datos desde el almacenamiento a la memoria RAM, primer acceso al bus NUMA.
- La CPU lee los datos para la posterior encriptación, segundo acceso al bus NUMA.
- La CPU escribe los datos ya encriptados a la RAM, tercer acceso al bus NUMA.
- Una unidad DMA copia los datos de la RAM a la red, cuarto acceso al bus NUMA.
El problema con esto es que a dicha velocidad las peticiones de encriptación para la CPU saturan su bus con la RAM para hacer otras tareas, lo que lleva a que el procesador no tiene comunicación con la memoria RAM y se «pare» por completo, ya que no puede recibir datos desde la memoria.
¿La solución? Hacer que la encriptación de los datos no sea realizada por la CPU, sino que dicha tarea recaiga en el SmartNIC de la tarjeta de red, de tal manera que el proceso queda simplificado.
- A través de una unidad DMA se copian los datos desde el almacenamiento a la memoria RAM, primer acceso al bus NUMA.
- Gracias la capacidad del bus PCI Express de acceder a la RAM, la unidad DMA en la tarjeta de red copia los datos, segundo y último acceso al bus NUMA.
Con ello Netflix reduce el ancho de banda interno necesario a 100 GB/s y libera a la CPU del trabajo de encriptación y evitando así las paradas en la misma. Esto permite que en nuestras casas podamos disfrutar de todo el contenido de la compañía en 4K con HDR, Dolby Vision o Dolby Atmos con la máxima calidad de imagen y sonido, lo cual es extremadamente complejo dada la cantidad de millones de usuarios por todo el mundo.