Facebook introdujo un mecanismo TMO que le permite ahorrar entre un 20 y un 32% de memoria en los servidores

Los ingenieros de Facebook (prohibido en la Federación de Rusia) publicaron un informe sobre la implementación el año pasado de la tecnología TMO (Transparent Memory Offloading), que permite ahorros significativos de RAM en los servidores al desplazar datos secundarios no necesarios para el trabajo a unidades más económicas, como NVMe. Discos SSD. Facebook estima que usar TMO puede ahorrar entre un 20 y un 32% de RAM en cada servidor. La solución está diseñada para su uso en infraestructuras donde las aplicaciones se ejecutan en contenedores aislados. Los componentes del lado del kernel de TMO ya están incluidos en el kernel de Linux.

En el lado del kernel de Linux, la tecnología es compatible con el subsistema PSI (Pressure Stall Information), disponible a partir de la versión 4.20. PSI ya se utiliza en varios controladores de poca memoria y le permite analizar información sobre el tiempo de espera para obtener diversos recursos (CPU, memoria, E/S). Con PSI, los procesadores del espacio de usuario pueden evaluar con mayor precisión los niveles de carga del sistema y los patrones de desaceleración, lo que permite identificar anomalías tempranamente, antes de que tengan un impacto notable en el rendimiento.

En el espacio de usuario, TMO lo proporciona el componente Senpai, que, a través de cgroup2, ajusta dinámicamente el límite de memoria para los contenedores de aplicaciones en función de los datos recibidos de PSI. Senpai analiza los signos de la aparición de escasez de recursos a través de PSI, evalúa la sensibilidad de las aplicaciones a la desaceleración en el acceso a la memoria e intenta determinar el tamaño mínimo de memoria requerido por el contenedor, en el que los datos necesarios para el funcionamiento permanecen en la RAM, y el correspondiente los datos almacenados en el caché de archivos o que no se utilizan directamente en este momento, se fuerzan a salir a la partición de intercambio.

Facebook introdujo un mecanismo TMO que le permite ahorrar entre un 20 y un 32% de memoria en los servidores

Por lo tanto, la esencia de TMO es mantener los procesos en una dieta estricta en términos de consumo de memoria, forzando el intercambio de páginas de memoria no utilizadas cuyo desalojo no afecta significativamente el rendimiento (por ejemplo, páginas con código usado sólo durante la inicialización y páginas de un solo uso). datos en la caché del disco). A diferencia de desalojar información a la partición de intercambio en respuesta a la presión de la memoria, en TMO los datos se desalojan en función de una predicción proactiva.

Uno de los criterios de desalojo es la falta de acceso a la página de memoria durante 5 minutos. Estas páginas se denominan páginas de memoria fría y, en promedio, representan alrededor del 35% de la memoria de la aplicación (dependiendo del tipo de aplicación, hay un rango del 19% al 65%). La preferencia tiene en cuenta la actividad asociada con páginas de memoria anónimas (memoria asignada por la aplicación) y la memoria utilizada para el almacenamiento en caché de archivos (asignada por el kernel). En algunas aplicaciones el principal consumo es la memoria anónima, pero en otras la caché de archivos también es importante. Para evitar desequilibrios en el desalojo de la caché, TMO utiliza un nuevo algoritmo de paginación que desaloja proporcionalmente páginas anónimas y páginas asociadas con la caché de archivos.

Enviar páginas utilizadas con poca frecuencia a una memoria más lenta no tiene un impacto significativo en el rendimiento, pero puede reducir significativamente los costos de hardware. Los datos se descargan en unidades SSD o en un área de intercambio comprimida en la RAM. En términos del coste de almacenar un byte de datos, utilizar un SSD NVMe es hasta 10 veces más económico que utilizar compresión en la RAM.

Facebook introdujo un mecanismo TMO que le permite ahorrar entre un 20 y un 32% de memoria en los servidores


Fuente: opennet.ru

Añadir un comentario