Nuevo método de gestión de memoria de Facebook

Uno de los miembros del equipo de desarrollo de la red social Facebook, Román Gushchin, propuso en el boletín de desarrolladores un conjunto de parches para el núcleo de Linux, destinados a mejorar el manejo de la memoria a través de la implementación de un nuevo controlador de gestión de la misma — slab (controlador de memoria slab).

La distribución de slab –– es un mecanismo de gestión de memoria diseñado para una distribución más eficiente de la memoria y para eliminar una considerable fragmentación. La base de este algoritmo es mantener la memoria asignada, que contiene un objeto de un tipo específico, y reutilizar esa memoria en la siguiente asignación para un objeto del mismo tipo. Este método fue introducido por primera vez en SunOS por Jeff Bonwick y ahora se utiliza ampliamente en los núcleos de muchos sistemas operativos Unix, incluidos FreeBSD y Linux.

La base del nuevo controlador es trasladar el seguimiento de slab del nivel de páginas de memoria al nivel de objetos del núcleo, lo que permite compartir una página de slab entre diferentes cgroup, en lugar de asignar un caché separado para cada cgroup.

Como resultado de las pruebas, se concluye que el método propuesto para la gestión de la memoria permite aumentar la eficiencia del uso de slab hasta 45%, así como disminuir el consumo total de memoria por parte del núcleo del sistema operativo. Además, al reducir la cantidad de páginas asignadas para slab, se disminuye la fragmentación de memoria en general, lo que no puede dejar de influir en el rendimiento del sistema.

El nuevo controlador ha estado siendo probado durante varios meses en los servidores de trabajo de Facebook, y hasta ahora se puede considerar que esta prueba ha sido exitosa: sin pérdida de rendimiento y aumento del número de errores, se ha notado una clara disminución en el consumo de memoria — en algunos servidores hasta 1 GB. Este número es bastante subjetivo, así que, por ejemplo, pruebas anteriores mostraron resultados ligeramente menores:

  • 650-700 MB en el frontend web
  • 750-800 MB en el servidor de caché de base de datos
  • 700 MB en el servidor DNS

>>> Página del autor en GitHub


>>> Resultados de pruebas tempranas

Fuente: linux.org.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster