Novo método de xestión da memoria de Facebook

Un dos membros do equipo de desenvolvemento de redes sociais Facebook, Roman Gushchin, propuxo na lista de correo para desenvolvedores un conxunto de Parches do kernel de Linuxdestinado a mellorar a xestión da memoria mediante a implementación dun novo controlador de xestión de memoria - placa (controlador de memoria de placa).

distribución de lousa é un mecanismo de xestión de memoria deseñado para asignar memoria de forma máis eficiente e eliminar a fragmentación significativa. A base deste algoritmo é almacenar memoria asignada que contén un obxecto dun determinado tipo e reutilizar esa memoria a próxima vez que se asigne a un obxecto do mesmo tipo. Esta técnica foi introducida por primeira vez en SunOS por Jeff Bonwick e agora úsase amplamente nos núcleos de moitos sistemas operativos Unix, incluíndo FreeBSD e Linux.

O novo controlador baséase en mover a contabilidade de losas desde o nivel de páxina de memoria ata o nivel de obxectos do núcleo, o que fai posible compartir unha páxina de losas en diferentes cgroups, en lugar de asignar unha caché separada para cada cgroup.

En base aos resultados das probas, despréndese que o método de xestión de memoria proposto permite aumentar eficacia utilizando lousa para 45%, e tamén reducirá o consumo total de memoria do núcleo do sistema operativo. Ademais, ao reducir o número de páxinas asignadas para o forxado, redúcese a fragmentación da memoria no seu conxunto, o que non pode senón afectar o rendemento do sistema.

O novo controlador foi probado en servidores de produción de Facebook durante varios meses, e ata agora esta proba pódese calificar de exitosa: sen perda de rendemento e sen aumento do número de erros, notouse unha clara diminución do consumo de memoria, nalgúns casos. servidores de ata 1 GB. Este número é bastante subxectivo, por exemplo, as probas anteriores mostraron resultados lixeiramente inferiores:

  • 650-700 MB na interface web
  • 750-800 MB en servidor con caché de base de datos
  • 700 MB no servidor DNS

>>> Páxina do autor en GitHub


>>> Os primeiros resultados das probas

Fonte: linux.org.ru

Engadir un comentario