El nuevo método de administración de memoria de Facebook

Uno de los miembros del equipo de desarrollo de redes sociales. Facebook, Gushchin romano, propuso en la lista de correo de desarrolladores un conjunto de Parches del kernel de Linuxdestinado a mejorar la gestión de la memoria mediante la implementación de un nuevo controlador de gestión de memoria - losa (controlador de memoria losa).

distribución de losa es un mecanismo de administración de memoria diseñado para asignar memoria de manera más eficiente y eliminar una fragmentación significativa. La base de este algoritmo es guardar la memoria asignada que contiene un objeto de cierto tipo y reutilizar esa memoria la próxima vez que se asigne para un objeto del mismo tipo. Esta técnica fue introducida 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.

El nuevo controlador se basa en mover la contabilidad de losa desde el nivel de la página de memoria al nivel de objeto del kernel, lo que hace posible compartir una página de losa en diferentes cgroups, en lugar de asignar un caché separado para cada cgroup.

Según los resultados de la prueba, se deduce que el método de gestión de memoria propuesto permite aumentar eficacia usando losa a 45%y también reducirá el consumo general de memoria del kernel del sistema operativo. Además, al reducir el número de páginas asignadas para losa, se reduce la fragmentación de la memoria en su conjunto, lo que no puede dejar de afectar el rendimiento del sistema.

El nuevo controlador se ha probado durante varios meses en servidores de producción de Facebook y, hasta ahora, esta prueba se puede considerar exitosa: sin pérdida de rendimiento ni aumento en el número de errores, se ha observado una clara disminución en el consumo de memoria, en algunos Servidores de hasta 1GB. Este número es bastante subjetivo; por ejemplo, pruebas anteriores mostraron resultados ligeramente más bajos:

  • 650-700 MB en la interfaz web
  • 750-800 MB en servidor con caché de base de datos
  • 700 MB en servidor DNS

>>> Página del autor en GitHub


>>> Resultados tempranos de las pruebas

Fuente: linux.org.ru

Añadir un comentario