Nou mètode de gestió de memòria de Facebook

Un dels membres de l'equip de desenvolupament de xarxes socials Facebook, Roman Gushchin, va proposar a la llista de correu del desenvolupador un conjunt de Pedaços del nucli de Linuxdestinada a millorar la gestió de la memòria mitjançant la implementació d'un nou controlador de gestió de memòria - llosa (controlador de memòria llosa).

distribució de lloses és un mecanisme de gestió de memòria dissenyat per assignar la memòria de manera més eficient i eliminar una fragmentació significativa. La base d'aquest algorisme és emmagatzemar memòria assignada que conté un objecte d'un determinat tipus i reutilitzar aquesta memòria la propera vegada que s'assigni per a un objecte del mateix tipus. Aquesta tècnica va ser introduïda per primera vegada a SunOS per Jeff Bonwick i ara s'utilitza àmpliament en els nuclis de molts sistemes operatius Unix, inclosos FreeBSD i Linux.

El nou controlador es basa en moure la comptabilitat de lloses del nivell de la pàgina de memòria al nivell de l'objecte del nucli, la qual cosa permet compartir una pàgina de lloses en diferents cgroups, en lloc d'assignar una memòria cau separada per a cada cgroup.

A partir dels resultats de la prova, es dedueix que el mètode de gestió de memòria proposat permet augmentar efectivitat utilitzant llosa a 45%, i també reduirà el consum total de memòria del nucli del sistema operatiu. A més, en reduir el nombre de pàgines assignades per a la llosa, es redueix la fragmentació de la memòria en el seu conjunt, la qual cosa no pot deixar d'afectar el rendiment del sistema.

El nou controlador s'ha provat als servidors de producció de Facebook durant diversos mesos i, fins ara, aquesta prova es pot qualificar d'èxit: sense pèrdua de rendiment ni augment del nombre d'errors, s'ha observat una clara disminució del consum de memòria, en alguns casos. servidors de fins a 1 GB. Aquest nombre és bastant subjectiu, per exemple, les proves anteriors van mostrar resultats lleugerament inferiors:

  • 650-700 MB a la interfície web
  • 750-800 MB al servidor amb memòria cau de la base de dades
  • 700 MB al servidor DNS

>>> Pàgina de l'autor a GitHub


>>> Resultats primerencs de les proves

Font: linux.org.ru

Afegeix comentari