Facebook zaproponował nowy mechanizm zarządzania pamięcią blokową dla jądra Linuksa

Roman Guszczyn (Roman Guszczin) z Facebooka opublikowany na liście mailingowej twórców jądra Linuksa zestaw poprawek z implementacją nowego kontrolera alokacji pamięci płyta (kontroler pamięci płyty). Nowy kontroler wyróżnia się możliwością przeniesienia rozliczania płyt z poziomu strony pamięci na poziom obiektu jądra, co umożliwia współdzielenie stron płyt w różnych grupach, zamiast przydzielania oddzielnych pamięci podręcznych płyt dla każdej grupy.

Proponowane podejście pozwala zwiększyć efektywność wykorzystania płyty, zmniejszyć rozmiar pamięci wykorzystywanej przez płytę o 30-45% i znacznie zmniejszyć całkowite zużycie pamięci przez jądro. Zmniejszenie liczby nieruchomych płyt ma również pozytywny wpływ na zmniejszenie fragmentacji pamięci. Nowy kontroler pamięci znacznie upraszcza kod rozliczania płyt i nie wymaga stosowania skomplikowanych algorytmów do dynamicznego tworzenia i usuwania pamięci podręcznej płyt dla każdej grupy. Wszystkie grupy pamięci typu cgroup w nowej implementacji korzystają ze wspólnego zestawu płytowych pamięci podręcznych, a czas życia płytowych pamięci podręcznych nie jest już powiązany z czasem życia pamięci podręcznych zainstalowanych za pośrednictwem grupy c ograniczenia na temat wykorzystania pamięci.

Dokładniejsze rozliczanie zasobów zaimplementowane w nowym kontrolerze płyty powinno teoretycznie bardziej obciążać procesor, jednak w praktyce różnice okazały się nieistotne. W szczególności nowy kontroler płyty był używany od kilku miesięcy na produkcyjnych serwerach Facebooka obsługujących różne typy obciążeń i nie stwierdzono jeszcze żadnych zauważalnych regresji. Jednocześnie następuje znaczne zmniejszenie zużycia pamięci - na niektórych hostach udało się zaoszczędzić do 1 GB pamięci, ale wskaźnik ten w dużym stopniu zależy od charakteru obciążenia, całkowitego rozmiaru pamięci RAM, liczby procesorów oraz cechy pracy z pamięcią. Poprzednie testy pokazał zmniejszenie zużycia pamięci o 650-700 MB (42% pamięci płytowej) na froncie WWW, 750-800 MB (35%) na serwerze z pamięcią podręczną DBMS i 700 MB (36%) na serwerze DNS.

Źródło: opennet.ru

Dodaj komentarz