Meta usprawnia Linuxa: koniec niepotrzebnego ograniczania TCP

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.

About the author

Autor "BIELI" to zapalony entuzjasta otwartego oprogramowania, który dzieli się swoją pasją na blogu poznajlinuxa.pl. Jego wpisy są skarbnicą wiedzy na temat Linuxa, programowania oraz najnowszych trendów w świecie technologii. Autor "BIELI" wierzy w siłę społeczności Open Source i zawsze stara się inspirować swoich czytelników do eksplorowania i eksperymentowania z kodem.