Facebook public pegats que milloren el controlador de memòria Slab en Linux

Romà Guixchin (un enginyer de programari de Facebook) registrar en llista de desenvolupament del nucli de Linux, un conjunt de pegats a l'aplicació d'assignació de memòria del controlador slab (un controlador de memòria).

El nou controlador és notable per moure la comptabilitat de slab des del nivell de les pàgines de memòria al nivell dels objectes del nucli, cosa que fa possible compartir pàgines de slab en diferents grups c, en lloc d'assignar caixets de slab separades per a cada grup c.

Roman va trobar el que ell anomena un «defecte molt seriós» al controlador de memòria de slab existent que condueix a una baixa utilització en aquests dies amb cgroups.

«La veritable raó per la qual el disseny existent condueix a una baixa utilització de slab és simple: les pàgines de slab són utilitzades exclusivament per un grup de memòria.

Si només hi ha unes quantes assignacions de certa mida fetes per un cgroup, o si queden alguns objectes actius després que s'elimina el cgroup, o el cgroup conté una aplicació d'un sol subprocés que amb prou feines està assignant cap objecte del nucli, però cada vegada en una nova CPU: en tots aquests casos, la utilització de la slab resultant és molt baixa.

Si la comptabilitat de kmem està desactivada, el nucli pot utilitzar l'espai lliure a les pàgines de slab per a altres assignacions. «

El controlador de memòria Slab proposat per Romano Gushchin l'any passat va ser força prometedor doncs permet augmentar l'eficiència de l'ús de la slab, reduir la mida de la memòria utilitzada per a slab en un 30-45% i reduir significativament el consum total de memòria del nucli.

A més, els pegats implementats han assenyalat que Facebook ja està usant el codi en producció als seus servidors i estava estalviant ~ 650-700MB + per a servidors front-end web, emmagatzematge en memòria cau de bases de dades i servidors DNS, entre d'altres premis.

En reduir el nombre de slabs no mòbils, també s'observa un efecte positiu en el camp de la reducció de la fragmentació de la memòria. El nou controlador de memòria simplifica significativament el codi per comptabilitzar slab i no requereix algorismes complicats per a la creació dinàmica i l'eliminació de caixets de slab per a cada grup c.

Tots els cgroups per a memòria en la nova implementació usen un conjunt comú de caixets de slab, i la vida útil dels caixets de slab ja no està vinculada a la vida útil de les restriccions de memòria establertes a través de cgroup.

La comptabilitat de recursos més precisa implementada al nou controlador de slab teòricament hauria de carregar més la CPU, però a la pràctica les diferències van resultar ser insignificants.

En particular, el nou controlador de slab s'ha utilitzat durant diversos mesos a servidors de Facebook en funcionament que manegen diferents tipus de càrregues, i fins ara no s'han detectat regressions significatives.

El pegat conté un parell de parts semi-independents, que també poden trobar el seu ús fora del controlador de memòria de slab:

  • L'API de càrrega de subpàgina, que es pot utilitzar en el futur per comptabilitzar altres objectes que no són de la mida d'una pàgina, per exemple, assignacions percpu
  • L'API mem_cgroup_ptr, on els punters comptats a un memcg, es poden reutilitzar per al reparenting eficient d'altres objectes, per exemple, pagecache.

Alhora, hi ha una disminució significativa en el consum de memòria: en alguns hosts era possible estalviar fins a 1 GB de memòria, però aquest indicador depèn en gran mesura de la naturalesa de la càrrega, la mida total de RAM, la quantitat de CPU i les característiques de treballar amb memòria.

En lloc de crear un conjunt individual de kmem_caches per a cada cgroup de memòria, s'utilitzen dos conjunts globals: el conjunt arrel per a no comptabilitzat i el grup arrel cgroup assignacions i el segon conjunt per a totes les altres assignacions. Això permet simplificar la gestió de per vida de kmem_caches individuals.

Finalment, si estàs interessat en conèixer el nou conjunt de 19 pegats es pot trobar a la llista de correu del nucli.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.