W kodzie źródłowym jądra Linux, na podstawie którego powstaje wydanie 6.15, wprowadzono zestaw zmian optymalizacyjnych, które w niektórych sytuacjach znacznie zwiększają wydajność operacji sieciowych:
- Optymalizacja GRO (Generic Receive Offload), która łączy kilka małych pakietów w jeden duży, teraz działa podczas przenoszenia przetwarzania pakietu na inny CPU (do równoważenia obciążenia) przy użyciu podsystemu XDP (eXpress Data Path), który pozwala na przetwarzanie pakietów na poziomie sterownika sieciowego przed ich wysłaniem do stosu sieciowego. Wzrost wydajności przetwarzania strumieni TCP dzięki zastosowanej optymalizacji może sięgać dwóch razy.
- W warunkach dużego obciążenia wydajność funkcji connect() wzrosła dwukrotnie dzięki zastąpieniu spin-locka mechanizmem synchronizacji RCU (Read-Copy-Update) przy wyszukiwaniu wpisów z informacjami o stronach połączenia (źródłowe i docelowe) i porty. Dodatkowo przeprowadzono optymalizację hashowania, która zapewniła wzrost wydajności o kolejne 229%. adresy IP Przyspieszono realizację MPTCP (Multipath TCP), rozszerzenia protokołu TCP umożliwiającego dostarczanie pakietów jednocześnie różnymi trasami przez różne interfejsy sieciowe powiązane z różnymi adresami IP. MPTCP w trybie jednego strumienia przyspieszono o 29%.
- W netfilter w przypadku istnienia gniazda przerwano wykonywanie operacji wyszukiwania tras w FIB (Forwarding Information Base). Dzięki tej optymalizacji wydajność wzrosła o 20%.
- Wydajność UDP w warunkach flood zwiększono o 10% poprzez wyeliminowanie zbędnych operacji na strukturze sk_tsflags podczas odbierania pakietów.
- Wydajność UDP w warunkach flood została zwiększona o 10% dzięki wyeliminowaniu zbędnych operacji na strukturze sk_tsflags przy odbieraniu pakietów.
Ponadto, w rozwijanym jądrze Linux 6.15 wprowadzono zmianę dla sterownika systemu plików exFAT, przyspieszającą operacje usuwania plików. Wcześniej sterownik exFAT wysyłał do nośników osobne zapytania „discard” dla każdego zwalnianego klastra usuwanego pliku. Zoptymalizowana wersja grupuje te zapytania, co skraca czas usuwania testowego pliku o wielkości 80 GB z 286 sekund do 1,6 sekundy.
Źródło: opennet.ru
