La nouvelle méthode de gestion de la mémoire de Facebook

Un des membres de l'équipe de développement des réseaux sociaux Facebook, Romain Gouchtchine, a proposé dans la mailing list des développeurs un ensemble de Correctifs du noyau Linuxvisant à améliorer la gestion de la mémoire grâce à la mise en œuvre d'un nouveau contrôleur de gestion de la mémoire - dalle (contrôleur de mémoire dalle).

répartition des dalles est un mécanisme de gestion de la mémoire conçu pour allouer la mémoire plus efficacement et éliminer une fragmentation importante. La base de cet algorithme est de stocker la mémoire allouée contenant un objet d'un certain type et de réutiliser cette mémoire la prochaine fois qu'elle sera allouée à un objet du même type. Cette technique a été introduite pour la première fois dans SunOS par Jeff Bonwick et est désormais largement utilisée dans les noyaux de nombreux systèmes d'exploitation Unix, notamment FreeBSD et Linux.

Le nouveau contrôleur est basé sur le déplacement de la comptabilité des dalles du niveau de la page mémoire vers le niveau des objets du noyau, ce qui permet de partager une page de dalle dans différents groupes de contrôle, au lieu d'allouer un cache distinct pour chaque groupe de contrôle.

Sur la base des résultats des tests, il s'ensuit que la méthode de gestion de la mémoire proposée permet d'augmenter efficacité en utilisant une dalle à 45%, et réduira également la consommation globale de mémoire du noyau du système d'exploitation. De plus, en réduisant le nombre de pages allouées à la dalle, la fragmentation de la mémoire dans son ensemble est réduite, ce qui ne peut qu'affecter les performances du système.

Le nouveau contrôleur a été testé sur les serveurs de production de Facebook pendant plusieurs mois, et jusqu'à présent, ces tests peuvent être qualifiés de réussis : sans perte de performances ni augmentation du nombre d'erreurs, une nette diminution de la consommation de mémoire a été constatée - sur certains serveurs jusqu'à 1 Go. Ce chiffre est assez subjectif, par exemple, des tests antérieurs ont montré des résultats légèrement inférieurs :

  • 650-700 Mo sur l'interface Web
  • 750-800 Mo sur serveur avec cache de base de données
  • 700 Mo sur le serveur DNS

>>> Page de l'auteur sur GitHub


>>> Résultats des premiers tests

Source: linux.org.ru

Ajouter un commentaire