Zespół inżynierów Meta ponownie pokazuje, że aktywnie rozwija wydajność jądra Linuxa. Najnowsza propozycja zmian skupia się na optymalizacji zarządzania pamięcią, która może przełożyć się na lepszą przepustowość sieciową.

Problem: niepotrzebne ograniczanie TCP
Autor poprawki, JP Kobryn, zwrócił uwagę na sytuację, w której mechanizm vmpressure() błędnie interpretuje stan pamięci.
W skrócie:
- podczas pracy demona
kswapd(ang. Kernel Swap Daemon) system może próbować odzyskać pamięć w tzw. wysokich rzędach (ang. high-order reclaim) - pomimo, że pamięci fizycznej nie brakuje, system skanuje wiele stron
- ponieważ strony są aktywnie używane, niewiele z nich można zwolnić
- to prowadzi do złego wskaźnika „scan:reclaim”.
Efekt?
Kernel uznaje sytuację za krytyczną i uruchamia tzw. socket pressure, co skutkuje niepotrzebnym ograniczeniem przepustowości TCP.
Rozwiązanie: świadomość „order” w vmpressure
Nowa poprawka wprowadza prostą, ale skuteczną zmianę:
vmpressure() staje się „świadome” parametru order- socket pressure jest aktywowane tylko dla niższych rzędów alokacji (<=
PAGE_ALLOC_COSTLY_ORDER) - problemy z odzyskiwaniem pamięci przy wysokich rzędach nie będą już wpływać na TCP.
Dlaczego to ważne?
- alokacje sieciowe i tak nie przekraczają rzędu 3
- powyżej tego poziomu jądro Linuxa i tak zakłada, że reclaim może się nie udać i stosuje inne mechanizmy (np. kompaktowanie pamięci).
Co pozostaje bez zmian?
Poprawka nie wpływa na:
- reclaim w ramach cgroups (memcg)
- krytyczne sytuacje niskiego priorytetu odzyskiwania pamięci.
Dzięki temu zmiana jest bezpieczna i dobrze izolowana.
Brak benchmarków, ale potencjał jest duży
Na razie nie opublikowano konkretnych wyników wydajnościowych, jednak:
- eliminacja fałszywego socket pressure,
- brak sztucznego throttlingu TCP,
mogą przynieść realne korzyści szczególnie w środowiskach serwerowych i chmurowych.
Status
Łatka (ang. patch) została wysłana na listę mailingową Linux Kernel Mailing List i obecnie przechodzi proces review.
Podsumowanie
To kolejny przykład, jak drobna zmiana w jądrze może mieć duży wpływ na wydajność – tym razem poprzez usunięcie nieintuicyjnego ograniczenia przepustowości sieci.