Facebook vydal opravy, které vylepšují řadič paměti Slab v Linuxu

Roman Gushchin (softwarový inženýr Facebooku) registr v seznamu vývoje jádra Linuxu, sada oprav do aplikace mapování paměti řadiče desky (řadič paměti).

Nový řadič je pozoruhodný přesunutím účtování desek z úrovně paměťové stránky na úroveň objektu jádra, což umožňuje sdílet stránky desek napříč různými skupinami c, a nikoli přidělovat samostatné mezipaměti desek pro každou skupinu c.

Roman našel to, co nazývá „velmi vážnou chybou“ ve stávajícím řadiči pamětí desky, což dnes vede k nízkému využití cgroups.

"Skutečný důvod, proč stávající design vede k nízkému využití desky, je jednoduchý: stránky desky jsou používány výhradně fondem paměti."

Pokud existuje pouze několik alokací určité velikosti provedených cgroup, nebo pokud po odebrání cgroup zbývají nějaké aktivní objekty, nebo cgroup obsahuje jednu aplikaci se závitem, která stěží přiděluje jakékoli objekty jádra, ale pokaždé na novém CPU: ve všech těchto případech je výsledné využití desky velmi nízké.

Pokud je zakázáno účtování kmem, může jádro použít volné místo na stránkách slab pro další alokace. «

Navrhovaný řadič paměti Slab Romano Gushchin v minulém roce byl docela slibný jako zvyšuje účinnost použití desky, zmenšit velikost použité paměti pro desku o 30-45% a výrazně snížit celkovou spotřebu paměti jádra.

Také, implementované opravy označily že Facebook již používá kód ve výrobě na svých serverech a byl úspora ~ 650–700 MB + pro front-end webové servery, ukládání do mezipaměti databází a servery DNS, mimo jiné ocenění.

Snížením počtu nemobilních desek je pozitivní účinek pozorován také v oblasti snižování fragmentace paměti. Nový řadič paměti výrazně zjednodušuje kód pro účetní desku a nevyžaduje složité algoritmy pro dynamické vytváření a mazání mezipamětí desek pro každou skupinu c.

Všechny cgroups pro paměť v nové implementaci používají společnou sadu mezipamětí desek a životnost mezipamětí desek již není vázána na životnost omezení paměti nastavených prostřednictvím cgroup.

Přesnější účtování zdrojů implementované v novém řadiči desky by mělo teoreticky načíst CPU více, ale v praxi se rozdíly ukázaly jako zanedbatelné.

Zejména nový ovladač slab se používá několik měsíců na serverech Facebook v provozu, které zpracovávají různé typy zátěží, a zatím nebyly zjištěny žádné významné regrese.

Patch obsahuje několik polonezávislých částí, které lze najít i mimo řadič paměti desky:

  • Subpage Load API, které lze v budoucnu použít k počítání dalších objektů, které nemají velikost stránky, například přidělení percpu
  • Rozhraní mem_cgroup_ptr API, kde se ukazatele počítají do memcg, lze znovu použít k efektivnímu opětovnému vytvořeníparentu dalších objektů, například pagecache.

Současně dochází k výraznému snížení spotřeby paměti- Na některých hostitelích bylo možné ušetřit až 1 GB paměti, ale tento indikátor do značné míry závisí na povaze nákladu, celková velikost RAM, množství CPU a charakteristiky práce s pamětí.

Místo vytváření samostatné sady kmem_caches pro každou paměťovou cgroup se používají dvě globální sady: kořenová sada pro nepočítané a kořenová přiřazení cgroup a druhá sada pro všechna ostatní přiřazení. To umožňuje zjednodušit celoživotní správu jednotlivých kmem_caches.

A konečně, pokud vás zajímá nová sada 19 oprav, najdete ji v seznamu pošta jádra.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.