- Viernes, 01 Marzo 2019
Los centros de datos de hoy consumen y desperdician una buena cantidad de energía respondiendo a las solicitudes de los usuarios lo más rápido posible, con un retraso de unos pocos microsegundos. Un nuevo sistema de investigadores del MIT mejora la eficiencia de las operaciones de alta velocidad al asignar mejor el procesamiento de datos sensible al tiempo a través de los núcleos de la unidad central de procesamiento (CPU) y garantizar que el hardware funcione de manera productiva.
Los centros de datos funcionan como redes distribuidas, con numerosas aplicaciones web y móviles implementadas en un solo servidor. Cuando los usuarios envían solicitudes a una aplicación, se extraen fragmentos de datos almacenados de cientos o miles de servicios en tantos servidores. Antes de enviar una respuesta, la aplicación debe esperar a que el servicio más lento procese los datos. Este tiempo de retraso se conoce como latencia de cola.
Los métodos actuales para reducir las latencias de cola dejan toneladas de núcleos de CPU en un servidor abierto para manejar rápidamente las solicitudes entrantes. Pero esto significa que los núcleos permanecen inactivos durante gran parte del tiempo, mientras que los servidores continúan usando energía solo para mantenerse encendidos. Los centros de datos pueden contener cientos de miles de servidores, por lo que incluso pequeñas mejoras en la eficiencia de cada servidor pueden ahorrar millones de dólares.
Alternativamente, algunos sistemas reasignan núcleos a través de aplicaciones basadas en la carga de trabajo. Pero esto ocurre en milisegundos, alrededor de una milésima de la velocidad deseada para las solicitudes aceleradas de hoy. Esperar demasiado tiempo también puede degradar el rendimiento de una aplicación, ya que cualquier información que no se procese antes de un tiempo asignado no se envía al usuario.
En un documento que se ha presentado en la conferencia USENIX Networked Systems Design, los investigadores desarrollaron un sistema de asignación de núcleos más rápido, llamado Shenango, que reduce las latencias de cola, mientras que logra altas eficiencias. Primero, un nuevo algoritmo detecta qué aplicaciones están luchando para procesar datos. Luego, un componente de software asigna núcleos inactivos para manejar la carga de trabajo de la aplicación.
"En los centros de datos, hay una compensación entre la eficiencia y la latencia, y realmente necesita reasignar los núcleos a una granularidad mucho más precisa que cada milisegundo", afirma la primera autora Amy Ousterhout, estudiante de doctorado en el Laboratorio de Ciencias de la Computación e Inteligencia Artificial (CSAIL). Shenango permite a los servidores "administrar las operaciones que ocurren en escalas de tiempo realmente cortas y hacerlo de manera eficiente".
Los ahorros de energía y costes variarán según el centro de datos, dependiendo del tamaño y las cargas de trabajo. Pero el objetivo general es mejorar la utilización de la CPU del centro de datos, de modo que cada núcleo sea puesto en buen uso. Las mejores tasas de utilización de la CPU en la actualidad se sitúan en alrededor del 60 por ciento, pero los investigadores dicen que su sistema podría aumentar esa cifra al 100 por ciento.
"La utilización del centro de datos hoy es bastante baja", comenta el coautor Adam Belay, profesor asistente de ingeniería eléctrica y ciencias de la computación e investigador de CSAIL. "Este es un problema muy serio que no se puede resolver en un solo lugar en el centro de datos. Pero este sistema es una pieza fundamental para aumentar la utilización ".
Detección eficiente de la congestión.
En un centro de datos del mundo real, Shenango (algoritmo y software) se ejecutaría en cada servidor en un centro de datos. Todos los servidores podrán comunicarse entre sí.
La primera innovación del sistema es un nuevo algoritmo de detección de congestión. Cada cinco microsegundos, el algoritmo verifica los paquetes de datos en cola para el procesamiento de cada aplicación. Si un paquete aún está esperando por la última observación, el algoritmo señala que hay un retraso de al menos 5 microsegundos. También verifica si algún proceso de cálculo, llamado subproceso, está esperando para ser ejecutado. Si es así, el sistema considera que una aplicación está “congestionada".
Parece bastante simple. Pero la estructura de la cola es importante para lograr la detección de congestión de microsegundos. El pensamiento tradicional significaba que el software verificara la marca de tiempo de cada paquete de datos en cola, lo que llevaría demasiado tiempo.
Los investigadores implementan las colas en estructuras eficientes conocidas como "buffers de anillo". Estas estructuras se pueden visualizar como diferentes ranuras alrededor de un anillo. El primer paquete de datos ingresados entra en una ranura inicial. A medida que llegan nuevos datos, se colocan en ranuras posteriores alrededor del anillo. Por lo general, estas estructuras se usan para el procesamiento de datos primero en entrar, primero en salir (FIFO), sacando datos del slot inicial y trabajando hacia el slot final.
El sistema de los investigadores, sin embargo, solo almacena paquetes de datos brevemente en las estructuras, hasta que una aplicación pueda procesarlos. Mientras tanto, los paquetes almacenados se pueden utilizar para verificaciones de congestión. El algoritmo solo necesita comparar dos puntos en la cola (la ubicación del primer paquete y la ubicación del último paquete hace cinco microsegundos) para determinar si los paquetes se encuentran en un retraso.
"Puedes ver estos dos puntos y hacer un seguimiento de su progreso cada cinco microsegundos, para ver cuántos datos se han procesado", afirma Fried. Debido a que las estructuras son simples, “solo tienes que hacer esto una vez por núcleo. Si estás viendo 24 núcleos, haces 24 comprobaciones en cinco microsegundos, que se escalan muy bien ".
Asignación inteligente
La segunda innovación se llama IOKernel, el centro de software central que dirige los paquetes de datos a las aplicaciones apropiadas. IOKernel también utiliza el algoritmo de detección de congestión para asignar rápidamente los núcleos a las aplicaciones congestionadas en órdenes de magnitud más rápidamente que los enfoques tradicionales.
Por ejemplo, IOKernel puede ver un paquete de datos entrantes para una aplicación determinada que requiere velocidades de procesamiento de microsegundos. Si la aplicación está congestionada debido a la falta de núcleos, IOKernel dedica inmediatamente un núcleo inactivo a la aplicación. Si también ve otra aplicación que ejecuta núcleos con datos menos sensibles al tiempo, necesitará algunos de esos núcleos y los reasignará a la aplicación congestionada. Las aplicaciones también ayudan: si una aplicación no está procesando datos, alerta al IOKernel de que sus núcleos pueden ser reasignados. Los datos procesados regresan a IOKernel para enviar la respuesta.
"IOKernel se concentra en las aplicaciones que necesitan núcleos que no las tienen", comenta Behrens. "Se trata de averiguar quién está sobrecargado y necesita más núcleos, y les da núcleos lo más rápido posible, para que no se queden atrás y tengan latencias enormes".
La estrecha comunicación entre IOKernel, el algoritmo, las aplicaciones y el hardware del servidor es "única en los centros de datos" y permite que Shenango funcione a la perfección, según Belay: "El sistema tiene visibilidad global de lo que está sucediendo en cada servidor. Ve el hardware que proporciona los paquetes, lo que se está ejecutando en cada núcleo y cuán ocupadas están cada una de las aplicaciones. Y lo hace en la escala de microsegundos ".
El siguiente paso es que los investigadores están refinando Shenango para la implementación de un centro de datos en el mundo real. Para hacerlo, se aseguran de que el software pueda manejar un rendimiento de datos muy alto y que tenga las características de seguridad adecuadas.
###
Escrito por Rob Matheson, Oficina de Noticias del MIT