Proponują nowy kontroler pamięci dla jądra Linuksa

Linux Kernel

Menedżer pamięci jest podzbiorem systemu operacyjny Współdzieli pamięć między systemem operacyjnym i różnymi aplikacjami. Termin pamięć odnosi się głównie do pamięci głównej (RAM), ale zarządzanie nią wymaga udziału pamięci pomocniczej i pamięci podręcznej.

Menedżer pamięci jest szczególnie odpowiedzialny za wydajne przydzielanie pamięci do procesów, co oznacza, że ​​musisz być w stanie wyświetlić listę wolnych lokalizacji dostępnej pamięci, przydzielić pamięć wymaganą dla nowych procesów i odzyskać pamięć z procesów, które się kończą. Dyspozytorem procesów w jądrze Linuksa jest dyspozytor SLAB.

PŁYTA opiera się na systemie blokowym i pamięci podręcznej, który optymalizuje żądania pamięci. Ten typ zarządzania pamięcią zmniejsza fragmentację spowodowaną operacjami alokacji i relokacji.

Alokacja bloków obejmuje implementację pamięci podręcznej dla określonego typu / rozmiaru obiektu, który ma kilka wstępnie przydzielonych bloków pamięci pociętych na elementy o stałym rozmiarze, które są odpowiednie dla określonych obiektów.

SLAB zarządza kawałkami tak, że gdy jądro jest proszone o przydzielenie pamięci do obiektu, Możesz zaspokoić to żądanie, używając części zamiennej z istniejącego bloku. SLAB zachowuje przydzieloną pamięć do ponownego wykorzystania podczas kolejnych alokacji podobnych obiektów, a tym samym zmniejsza koszty ogólne związane z inicjalizacją obiektów.

Zamierzają zastąpić SLAB

Roman Guszczin, Członek zespołu inżynierów jądra Linuksa na Facebooku, odkrył coś, co uważa za „poważną lukę” w obecnym menedżerze / kontrolerze pamięci. I rniedawno zaproponował nowy kontroler pamięci blok który obiecuje radykalnie poprawić wykorzystanie pamięci wśród wielu „grup cgroup” (lub grupy kontrolne) z pamięci.

Biorąc to pod uwagę, należy zauważyć, że cgroups odnosi się do funkcji jądra Linuksa, która umożliwia ograniczanie, liczenie i izolowanie wykorzystania zasobów systemu (procesor, pamięć, użycie dysku itp.) Oraz termin „strona płyty”. można by przyrównać do procesu alokacji pamięci przez SLAB.

Według Gushchina:

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

Jeśli istnieje tylko kilka alokacji o określonym rozmiarze utworzonych przez grupę cgroup lub jeśli po usunięciu grupy cgroup pozostało kilka aktywnych obiektów lub jeśli grupa cgroup zawiera aplikację z pojedynczym wątkiem, która praktycznie nie przydziela jądra, ale robi to za każdym razem w nowy procesor: We wszystkich tych przypadkach wynikowe użycie SLAB jest bardzo niskie.

Jeśli obliczanie kmem jest wyłączone, jądro może wykorzystać wolne miejsce na stronach kafelków do innych przydziałów «.

Gushchin twierdzi, że nie stanowiło to problemu, gdy sterownik kmem został wprowadzony jako opcjonalna funkcja, która musiała być włączona dla każdej puli pamięci.

Teraz jednak, sterownik kmem jest domyślnie włączony dla cgroup v1 i v2. A ponieważ nowoczesne systemy mają tendencję do tworzenia dużej liczby grup c, użycie SLAB jest mniej skuteczne.

Według niego, dzieląc strony płyty między różnymi grupami pamięci i używając przeprojektowanego systemu, w którym księgowanie odbywa się według obiektu, a nie strony, można by w jądrze Linuksa mieć zoptymalizowany kontroler pamięci który oferuje znacznie bardziej efektywny poziom wykorzystania.

Proponowana łatka Gushchina zawiera dwa pół-niezależne elementy: API ładowania podstron, które można w przyszłości wykorzystać do celów księgowych oraz mem_cgroup_ptr API.

Testy przeprowadzone z nowym kontrolerem pamięć o Guszczynie wykazali, że w Linuksie można uzyskać od 35% do 42% więcej pamięci w sieci Web frontonu, pamięci podręcznej bazy danych i serwerze DNS oraz wielu innych obciążeniach.

Propozycja Guszczina jest obecnie pod hasłem „prośba o komentarz”. Jeśli zostanie zaakceptowany, może zostać zintegrowany z wersją jądra Linuksa 2020.

źródło: https://lkml.org/


Zostaw swój komentarz

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

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  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.