Facebook hà liberatu patch chì migliuranu u controller di memoria Slab in Linux

Roman Gushchin (un ingegnere di software Facebook) rigistru in a lista di sviluppu di u kernel Linux, un inseme di patch à l'applicazione di mappatura di memoria di u controller di lastre (un cuntrollore di memoria).

U novu controller hè notevale spustendu a cuntabilità di lastre da u livellu di pagine di memoria à u livellu di l'uggetti di u kernel, ciò chì permette di sparte pagine di lastre in diversi gruppi c, invece di attribuisce cache di lastre separate per ogni gruppu c.

Roman hà trovu ciò ch'ellu chjama un "difettu assai seriu" in u controller di memoria esistenti chì porta à una bassa utilizzazione sti ghjorni cù cgroups.

«A vera ragione per a quale u cuncepimentu esistente porta à una bassa utilizazione di a lastra hè simplice: e pagine di lastra sò aduprate solu da un gruppu di memoria.

S'ellu ci hè solu qualchì allocazione di una certa dimensione fatta da un cgroup, o s'ellu ci hè qualchì ogettu attivu lasciatu dopu a rimozione di u cgroup, o u cgroup cuntene una sola applicazione filettata chì alloca à pena alcunu oggettu di u kernel, ma ogni volta nantu una nova CPU: in tutti questi casi, l'usu resultante di a lastra hè assai bassu.

Se a contabilità kmem hè disattivata, u kernel pò aduprà spaziu liberu nantu à e pagine di lastre per altre allocazioni. «

U controller di memoria di Slab prupostu da Romano Gushchin in l'annu passatu era abbastanza prometente cum'è aumenta l'efficienza di l'usu di a lastra, riduce a dimensione di memoria aduprata per a lastra da 30-45% è riduce significativamente u cunsumu totale di memoria di u kernel.

Inoltre, i patch implementati anu indicatu chì Facebook utilizza dighjà u codice in pruduzzione nantu à i so servitori è era risparmiu ~ 650-700MB + per servitori web front-end, cache di basa di dati è servitori DNS, frà altri premii.

Riducendu u numeru di lastre non mobili, si osserva ancu un effettu pusitivu in u campu di a riduzione di a frammentazione di a memoria. U novu controller di memoria simplifica significativamente u codice per a lastra contabile è ùn richiede micca algoritmi cumplicati per a creazione dinamica è l'eliminazione di cache di lastre per ogni gruppu c.

Tutti i cgroups per a memoria in a nova implementazione utilizanu un inseme cumunu di cache di lastre, è a durata di vita di cache di lastre ùn hè più ligata à a durata di vita di e limitazioni di memoria stabilite per cgroup.

A contabilità di risorse più precisa messa in opera in u novu controller di lastre deve teoricamente caricare a CPU di più, ma in pratica e differenze si sò rivelate insignificanti.

In particulare, u novu cunduttore di lastra hè statu adupratu dapoi parechji mesi nant'à i servori Facebook in opera chì trattanu sfarenti tippi di carichi, è finu à avà ùn sò state rilevate regressioni significative.

U patch cuntene un coppiu di parti semi-indipendenti, chì ponu ancu truvà u so usu fora di u controller di memoria di a lastra:

  • L'API Subpage Load, chì pò esse aduprata in u futuru per cuntà altri oggetti chì ùn anu micca a taglia di una pagina, per esempiu allocazioni percpu
  • L'API mem_cgroup_ptr, induve i puntatori contati per un memcg, ponu esse riutilizzati per riparazione efficiente di altri oggetti, per esempiu pagecache.

In listessu tempu, ci hè una diminuzione significativa di u cunsumu di memoria- In certi ospiti hè statu pussibule di risparmià finu à 1 GB di memoria, ma questu indicatore dipende largamente da a natura di a carica, a dimensione tutale di RAM, a quantità di CPU è e caratteristiche di travaglià cù memoria.

Invece di creà un inseme separatu di kmem_caches per ogni cgroup di memoria, sò aduprati dui inseme glubali: u settore di e radiche per incuntate è u gruppu di e radiche cgroup assignments è u secondu set per tutte l'altre assignazioni. Questu permette di simplificà a gestione di a vita di kmem_caches individuali.

Infine, se site interessatu à cunnosce u novu inseme di 19 patch, si pò truvà in a lista mail di kernel.


U cuntenutu di l'articulu aderisce à i nostri principii di etica edituriale. Per signalà un errore cliccate quì.

Sianu the first to comment

Lasciate u vostru cummentariu

U vostru indirizzu email ùn esse publicatu.

*

*

  1. Responsabile di i dati: Miguel Ángel Gatón
  2. Scopu di i dati: Cuntrolla SPAM, gestione di cumenti.
  3. Legitimazione: U vostru accunsentu
  4. Cumunicazione di i dati: I dati ùn seranu micca cumunicati à terzi, eccettu per obbligazione legale.
  5. Archiviazione di dati: Base di dati ospitata da Occentus Networks (UE)
  6. Diritti: In ogni mumentu pudete limità, recuperà è cancellà e vostre informazioni.