Facebook wydał poprawki, które ulepszają kontroler pamięci Slab w systemie Linux

Roman Gushchin (inżynier oprogramowania Facebooka) rejestr na liście rozwoju jądra Linuksa, zestaw poprawek do aplikacji mapującej pamięć kontrolera płyty (kontroler pamięci).

Nowy kontroler jest niezwykły przenosząc rozliczanie slabów z poziomu stron pamięci na poziom obiektów jądra, co umożliwia współdzielenie stron slabów w różnych grupach c, zamiast przydzielania oddzielnych pamięci podręcznych slabów dla każdej grupy c.

Roman znalazł coś, co nazywa „bardzo poważną wadą” w istniejącym kontrolerze pamięci typu slab, która prowadzi obecnie do niskiego wykorzystania w cgroups.

„Prawdziwy powód, dla którego istniejący projekt prowadzi do niskiego wykorzystania płyty, jest prosty: strony płyty są używane wyłącznie przez pulę pamięci.

Jeśli istnieje tylko kilka alokacji określonego rozmiaru utworzonych przez grupę cgroup lub jeśli po usunięciu grupy cgroup pozostało kilka aktywnych obiektów, lub jeśli grupa cgroup zawiera pojedynczą aplikację wielowątkową, która ledwo przydziela jakiekolwiek obiekty jądra, ale za każdym razem jest włączona nowy procesor: we wszystkich tych przypadkach wynikające z tego wykorzystanie płyty jest bardzo niskie.

Jeśli rozliczanie kmem jest wyłączone, jądro może wykorzystywać wolne miejsce na stronach płyty do innych przydziałów. «

Proponowany kontroler pamięci Slab Romano Gushchin w zeszłym roku był całkiem obiecujący, ponieważ zwiększa wydajność użytkowania płyty, zmniejszyć rozmiar używanej pamięci dla płyty o 30-45% i znacznie zmniejszają całkowite zużycie pamięci jądra.

Oprócz, zaimplementowane łaty wskazywały że Facebook już używa kodu w produkcji na swoich serwerach i był oszczędność ~ 650-700 MB + dla serwerów WWW typu front-end, buforowanie baz danych i serwery DNS, między innymi.

Zmniejszając liczbę niemobilnych płyt, pozytywny efekt obserwuje się również w zakresie zmniejszenia fragmentacji pamięci. Nowy kontroler pamięci znacznie upraszcza kod dla płyty rozliczeniowej i nie wymaga skomplikowanych algorytmów do dynamicznego tworzenia i usuwania pamięci podręcznych płyt dla każdej grupy c.

Wszystkie grupy cgroup pamięci w nowej implementacji używają wspólnego zestawu pamięci podręcznych slab, a żywotność pamięci podręcznych slab nie jest już związana z czasem życia ograniczeń pamięci ustawionych przez cgroup.

Bardziej precyzyjne rozliczanie zasobów zaimplementowane w nowym kontrolerze slabowym powinno teoretycznie bardziej obciążać procesor, ale w praktyce różnice okazały się nieistotne.

W szczególności nowy sterownik płyty był używany przez kilka miesięcy na serwerach Facebooka w eksploatacji, które obsługują różne typy ładunków i jak dotąd nie wykryto żadnych znaczących regresji.

Łatka zawiera kilka częściowo niezależnych części, które mogą również znaleźć zastosowanie poza kontrolerem pamięci płyty:

  • Subpage Load API, które można wykorzystać w przyszłości do zliczania innych obiektów, które nie mają rozmiaru strony, np. Alokacje percpu
  • Interfejs API mem_cgroup_ptr, w którym liczone wskaźniki do memcg, może być ponownie wykorzystany do wydajnego ponownego rodzicielstwa innych obiektów, np. Pagecache.

W tym samym czasie następuje znaczny spadek zużycia pamięci- Na niektórych hostach można było zaoszczędzić do 1 GB pamięci, ale ten wskaźnik w dużej mierze zależy od rodzaju ładunku, całkowity rozmiar pamięci RAM, ilość procesora i charakterystyka pracy z pamięcią.

Zamiast tworzenia oddzielnego zestawu kmem_cache dla każdej grupy cgroup pamięci, używane są dwa zestawy globalne: zestaw główny dla przypisań nieuwzględnionych i przypisania cgroup grupy głównej oraz drugi zestaw dla wszystkich innych przypisań. Pozwala to na uproszczenie zarządzania okresem życia poszczególnych kmem_cache.

Wreszcie, jeśli chcesz poznać nowy zestaw 19 łatek, możesz go znaleźć na liście poczta jądra.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.