Google envió una propuesta para Linux para mejorar la transferencia de datos de red entre dispositivos

Tux, la mascota del Kernel de Linux

El kernel de Linux es el elemento principal de los sistemas operativos (SO) Linux, y es la interfaz fundamental entre el hardware de una computadora y sus procesos.

Hace poco se dio a conocer la noticia de que Google realizo una propuesta mediante las listas de correo de los desarrolladores del kernel de Linux, para la transferencia de datos de red entre dispositivos.

La propuesta como tal, es sobre una implementación del mecanismo Device memory TCP (devmem TCP), que permite que los datos se transfieran directamente a través de la red desde la memoria de algunos dispositivos a la memoria de otros dispositivos, sin la copia intermedia de estos datos en búferes ubicados en la memoria del sistema host.

Sobre la propuesta de Google, se menciona que se espera que la memoria TCP del dispositivo aumente significativamente la eficiencia de la interacción en clústeres y sistemas de aprendizaje automático distribuido utilizando placas aceleradoras adicionales.

Ademas de ello, se menciona que el uso de aceleradores de aprendizaje automático conduce a un aumento significativo en la cantidad de información transferida en el proceso de entrenamiento de modelos desde el almacenamiento a la memoria GPU/TPU. En algunos casos, los modelos de aprendizaje automático de entrenamiento pueden consumir solo el 50 % de los recursos informáticos de TPU disponibles, y una forma de eliminar el tiempo de inactividad y hacer un uso más completo de los recursos de GPU/TPU es aumentar el rendimiento y la eficiencia de la transferencia de datos.

Actualmente, la transferencia de datos entre dispositivos en diferentes hosts se limita a copiar datos de la memoria del dispositivo a la memoria del host, transferir información a otro host a través de la red y copiar desde la memoria del host de destino a la memoria de otro dispositivo. Tal esquema no es óptimo y, al transferir grandes cantidades de información, crea una carga adicional en el ancho de banda de la memoria y el bus PCIe.

Hoy en día, la mayoría de las transferencias de datos de dispositivo a dispositivo en la red son implementadas con las siguientes operaciones de bajo nivel: copia de dispositivo a host, Transferencia de red de host a host y copia de host a dispositivo.

La implementación es subóptima, especialmente para transferencias masivas de datos, y puede que ejerza una presión significativa sobre los recursos del sistema, como el ancho de banda de la memoria del host, ancho de banda PCIe, etc. Una razón importante detrás del estado actual es la falta de semántica del núcleo para expresar transferencias de dispositivo a red.

El mecanismo TCP de la memoria del dispositivo le permite excluir la memoria del host de esta cadena e inmediatamente transferir datos a través de la red desde la memoria del dispositivo y colocar los datos recibidos en paquetes de red en la memoria del dispositivo.

Para que Device Memory TCP funcione, se requiere una tarjeta de red que pueda procesar por separado los encabezados de los paquetes y los datos encapsulados en paquetes (carga útil) en diferentes búferes. Los datos se cargan desde la memoria del dispositivo al búfer de carga útil de la NIC mediante el mecanismo dmabuf, y los encabezados se transfieren desde la memoria principal y se rellenan con la pila TCP/IP del sistema. Para mejorar la eficiencia, se pueden usar adicionalmente las capacidades de las tarjetas de red para el procesamiento separado de flujos en diferentes colas rx.

La necesidad de un mecanismo de intercambio de datos de alto rendimiento entre dispositivos está aumentando teniendo en cuenta el uso de sistemas distribuidos para el aprendizaje automático, donde los aceleradores se ubican en diferentes hosts, así como cuando los datos para el entrenamiento de modelos se transfieren desde SSD externos. Las pruebas de rendimiento realizadas en una configuración con 4 GPU y 4 tarjetas de red mostraron que el uso de Device Memory TCP le permite alcanzar un nivel del 96,6 % de la velocidad de línea disponible al transferir datos directamente entre la memoria del dispositivo.

Finalmente cabe mencionar que la implementación aún se encuentra en la etapa RFC, es decir que esta para su discusión y revisión por parte de la comunidad, pero no formalizado para su envío a la rama principal del kernel de Linux.

Fuente: https://lore.kernel.org/



from Desde Linux https://ift.tt/2BPYSKL
via IFTTT

No hay comentarios.:

Publicar un comentario