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

romà Gushchin (Un enginyer de programari de Facebook) registrar en llista de desenvolupament de l'nucli de Linux, un conjunt de pegats a l'aplicació d'assignació de memòria de l'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 a el nivell dels objectes de l'nucli, el 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.

Novel·la 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 poques assignacions de certa grandària 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 tot just està assignant cap objecte de el 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 fer servir 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 bastant prometedor doncs permet augmentar l'eficiència de l'ús de la slab, reduir la mida de la memòria utilitzada per slab en un 30-45% i reduir significativament el consum total de memòria de l'nucli.

A més, els pegats implementats han assenyalat que Facebook ja està utilitzant el codi en producció en els 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 altres premis.

A l'reduir el nombre de slab 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 algoritmes complicats per a la creació dinàmica i l'eliminació de caixets de slab per a cada grup c.

Tots els cgroups per 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 en el 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 en 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 de el controlador de memòria de slab:

  • L'API de càrrega de subpágina, que es pot usar 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 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 de l'nucli.


El contingut d'l'article s'adhereix als nostres principis de ètica editorial. Per notificar un error punxa http://secbcaixabank.info/SECB-COVIDXNUMX-DENUNCIA-INSPECCION-PROTOCOLO-.pdf.

Sigues el primer a comentar

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ó.