Red de conocimiento informático - Material del sitio web - Cómo utilizar la tecnología de aceleración de hardware para reducir la carga en la CPU

Cómo utilizar la tecnología de aceleración de hardware para reducir la carga en la CPU

Cómo utilizar la tecnología de aceleración de hardware para reducir la carga en la CPU

1 Introducción a los antecedentes

Ha entrado la Ley de Moore para procesadores de uso general (CPU). sus años de ocaso, y el aprendizaje automático y la escala de los servicios web están creciendo exponencialmente. Con el desarrollo maduro de la tecnología de hardware actual, las CPU comunes ya no tienen ventajas absolutas sobre algún hardware especializado en términos de potencia informática o costos de recursos. Esto también ha provocado que las principales empresas, como los tres principales gigantes de Internet, prefieran la tecnología de aceleración de hardware. Baidu, Alibaba y Tencent utilizan soluciones KeyLess similares para acelerar la descarga de HTTPS, lo que no solo mejora la experiencia del usuario, sino que también ahorra costos de máquina. Según los resultados de la encuesta actual, se encuentra que la capa de acceso de las principales empresas de la industria todavía no adopta la aceleración de hardware para Gzip. Por primera vez, la capa de acceso de Alibaba combina la tecnología de aceleración de hardware para desinstalar Gzip, lo que no solo trae. mejoras de rendimiento, pero también tiene un impacto positivo en el desarrollo de la industria en este campo.

El cuello de botella de rendimiento actual de Tengine en la capa de acceso es la CPU. Por ejemplo, el módulo Gzip representa aproximadamente el 15%-20% de la CPU en Tengine. En comparación con otros módulos, el consumo de CPU es. alto y la proporción está aumentando (más tarde La lógica de compresión de la aplicación final se unifica y centraliza posteriormente en la capa de acceso frontal), por lo que el uso de la descarga de hardware del módulo Gzip es indispensable para mejorar el rendimiento y optimizar los costos.

2. Análisis e investigación

Antes del análisis, introduzcamos brevemente qué es la aceleración de hardware: la aceleración de hardware (HardwareAcceleration) utiliza módulos de hardware para reemplazar los algoritmos de software y aprovechar al máximo lo inherente. capacidades del hardware (la aceleración del hardware suele ser más eficiente que los algoritmos de software), para lograr una mejora del rendimiento y la optimización de costos. Actualmente, existen dos métodos de aceleración principales:

matriz de puertas programables en campo FPGA. , que se puede utilizar para ciertos propósitos. Programación personalizada de un algoritmo de software específico, como las tarjetas de red inteligentes en la industria;

Circuito integrado de aplicación específica ASIC, que es un circuito para propósitos especiales y diseñado y fabricado específicamente para un usuario, como la tarjeta QAT de Intel. Solo se admiten algoritmos de cifrado, descifrado y compresión específicos;

La comparación entre FPGA y ASIC se muestra en la siguiente tabla:

2.1. Análisis del consumo de CPU de Tengine de la capa de acceso

La capa de acceso del sitio principal transporta más del 90% del tráfico entrante del grupo. Parece que solo sirve como una puerta de enlace de reenvío de tráfico de siete capas, pero lo hace. muchas cosas, por ejemplo, pact_zone realiza una desfragmentación interna y su intensidad de llamada alcanza el 88,096%, como se muestra en la figura siguiente (Nota: el calor representa el calor de la función en sí, la llamada: representa la suma de. calor de la función llamada, en general: calor + llamada):

Después de una discusión conjunta con Intel R&D, se descubrió que el modelo actual Zlib Shim de Intel QAT no era razonable y el problema se resolvió promocionando su transformación para adoptar la solución del módulo de administración de memoria OOT USDM (que mantiene internamente un grupo de memoria HugePage).

b. Al usar el controlador intel-qatOOT31092 después de resolver el problema anterior, después de las pruebas, se encontró que el efecto de ahorro de CPU no era bueno (la CPU en modo usuario se redujo, pero la CPU en modo kernel sí). Después del análisis, se encontró que se usó aceleración QAT. Después de usar QAT, el uso de CPU de algunas funciones del sistema aumenta, como open, ioctl y futex, como se muestra en la siguiente figura (Nota: las de la imagen). a la izquierda están las funciones activas de cada sistema después de usar QAT. Después de usar QAT, el tiempo de ejecución de open, ioctl y futex toma hasta 8.95 (Nota: 3.91 + 2.68 + 2.36), mientras que el tiempo correspondiente de la versión no utilizada es. solo 0,44 (Nota: 0,24 + 0,14 + 0,06);

Al analizar la información de la pila del proceso de trabajo de Tengine se encontró que open, ioctl Todos aparecen en pares (es decir, la llamada al sistema aparece 4 veces en una solicitud http ). Este fenómeno se informó a los estudiantes de I+D de Intel y descubrieron que era causado por el nuevo controlador Zlib Shim. Después de la optimización y transformación, la frecuencia de las llamadas open e ioctl se redujo significativamente.

Sin embargo, la frecuencia de las llamadas al sistema futex no ha disminuido, lo que aún resulta en un uso de CPU relativamente alto en el modo kernel. A través del seguimiento de strace, se descubre que se llamará a futex varias veces después de una solicitud de compresión http, como se muestra en la figura. A continuación, los estudiantes de investigación y desarrollo de Intel aprendieron que Zlib Shim usa En modo multiproceso, su operación futex proviene de la lógica de zlib shim esperando que se devuelvan datos comprimidos o descomprimidos QAT.

Dado que Tengine es multiproceso y de un solo subproceso, y adopta el modo de evento IO asíncrono epoll, los estudiantes de I + D de Intel modificaron conjuntamente Zlib Shim (eliminando subprocesos) y finalmente las llamadas al sistema futex se redujeron significativamente.

Al analizar y promover a Intel para llevar a cabo múltiples transformaciones arquitectónicas de QAT, las características de aceleración de QAT se pueden utilizar mejor.

3.2. Funciones imperfectas

a. La ejecución de la recarga después de usar QAT puede provocar una respuesta de solicitud anormal, como se muestra a continuación:

Dado que cada trabajador procesa una instancia de QAT. debe asignarse para la descompresión de datos. La cantidad de procesos de trabajo en Tengine puede duplicarse en el momento de la recarga, y la versión inicial de la instancia QAT solo tiene 64, por lo que es posible que al proceso de trabajo recién iniciado no se le asigne una instancia, lo que provoca la solicitud. fracasar.

En respuesta a este problema, la nueva versión de QAT proporcionada por Intel ha aumentado el número de instancias de 64 a 256 para evitar este problema. Al mismo tiempo, hemos propuesto un plan de protección de recuperación ante desastres: cuando la instancia no se puede asignar, es necesario degradarla automáticamente a compresión de software para mejorar su usabilidad.

b. Zlib Shim tiene enormes pérdidas de memoria en la página, lo que provoca un volcado del núcleo del controlador QAT:

Tengine utiliza el modo de grupo de memoria para la gestión de la memoria, es decir, el espacio asignado llamando (In) No es necesario llamar a DeflateInit para el procesamiento (In)DeflateEnd. Cuando finaliza la solicitud, se llamará a la operación de liberación relacionada con la solicitud r para devolver la memoria. Sin embargo, debido a que la página enorme utilizada por Zlib Shim debe llamar a (In)DeflateEnd antes. se lanza a USDM, transformando el código relacionado con Tengine Gzip. Más tarde, el problema se resolvió y el volcado del núcleo del controlador QAT también fue causado por la fuga de enorme página, lo que provocó que la asignación exitosa no fuera posible.

c. La imperfección de la máquina de estado Zlib Shim provoca solicitudes de compresión y descompresión anormales en escenarios específicos, y muchos otros problemas no se introducirán uno por uno.

A lo largo del camino, a través de innumerables optimizaciones de rendimiento, pruebas funcionales y muchas discusiones con estudiantes de I+D de Intel, QAT pudo resolver rápidamente muchos problemas en términos de función, rendimiento, arquitectura, etc. para el trabajo preparatorio antes de conectarse.

3.3. Clasificación de operación y mantenimiento

Implementación y lanzamiento

Adopte un paquete de software de rpm único y modo binario dual para reducir el acoplamiento entre la versión de software y el hardware. grado de versión de aceleración, identifica automáticamente si la máquina de implementación tiene QAT habilitado y selecciona el binario correcto para la ejecución;

Protección de recuperación ante desastres

Debido a la falta de ciertos recursos durante la operación, el La ejecución de la versión de Gzip acelerada por hardware falló, cambiará automáticamente a la versión de software y cambiará automáticamente a la versión de aceleración de hardware cuando haya recursos disponibles;

Se puede mantener y monitorear

<. p>Aunque se realizaron una serie de pruebas de estrés y pruebas de estabilidad antes de conectarse, no se produjo ninguna excepción, pero el monitoreo en tiempo real de los indicadores de recursos relacionados con la aceleración del hardware sigue siendo esencial;

Efecto de aceleración

Máquina de prueba

modelo de CPU: Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz Núcleo de 32 núcleos: 2.6.32 Versión Zlib: controlador zlib-1.2.8 QAT versión: intel-qatOOT40052

Comparación de datos

p>

En las mismas condiciones, la CPU promedio después de activar la aceleración QAT es aproximadamente del 41%, y la CPU promedio sin aceleración QAT es alrededor del 48%, como se muestra en la siguiente figura:

En las mismas condiciones, la carga promedio del sistema después de activar la aceleración QAT es 12,09, y la carga promedio del sistema cuando se desactiva la aceleración QAT es 14,22, como se muestra en la siguiente figura:

En las mismas condiciones, después de activar y desactivar la aceleración QAT, las fluctuaciones de RT de respuesta no son las mismas hacia arriba y hacia abajo, como se muestra a continuación:

En las mismas condiciones, la comparación de los diagramas de funciones del punto de acceso de cada módulo es la siguiente, donde el círculo rojo es la función relacionada con Gzip

(Nota: el lado izquierdo está activado la aceleración QAT):

Después de usar la tarjeta aceleradora QAT para Tengine Gzip en condiciones interanuales, el consumo de CPU se redujo del 48% al 41%, la carga del sistema se redujo en 2 puntos y, de acuerdo con el mapa de funciones del punto de acceso del módulo En comparación, se descubrió que Gzip básicamente se ha desinstalado por completo.

Conclusión

Para resumir la comparación de datos, cuando el qps es de aproximadamente 10k, Tengine Gzip usa aceleración QAT para ahorrar aproximadamente el 15% de la CPU, y Gzip básicamente se desinstala por completo. Cuanto mayor sea el valor, mejor será el efecto de optimización.

5. Resumen

El proyecto de aceleración de hardware Tengine Gzip de la capa de acceso es producto de los esfuerzos conjuntos del equipo de tecnología de almacenamiento de Alibaba Tair&Tengine, el equipo de informática de I+D del servidor y el centro de datos de Intel. equipo de plataforma de red. Ha logrado mejoras de rendimiento y ha sentado una base sólida para la capa de acceso en el campo de la aceleración de hardware, allanando el camino para la integración de la arquitectura SSL+Gzip el próximo año. También llena el vacío en la capa de acceso de la industria. utilizando aceleración de hardware para Gzip, lo que tiene cierta influencia en el desarrollo de este campo.