Nowy Linux może gwałtownie przyspieszyć sieci i uruchamianie programów

Strona główna Aktualności
image

O autorze

Opiekunowie najważniejszych dystrybucji Linuksa od kilku dni intensywnie pracują nad wprowadzeniem do nich najnowszego kernela 4.18, zatwierdzonego przez Linusa Torvaldsa z tygodniowym opóźnieniem. To interesujące wydanie, wprowadzające m.in. bezpieczne montowanie systemów plików przez zwykłych użytkowników, kontrolę współbieżności bez blokad za pomocą mechanizmu restartowalnych sekwencji, aktywne zarządanie domenami zasilania czy nowy interfejs do superszybkiego odczytywania danych z połączenia sieciowego. Gracze dostali zaś pełne wsparcie dla kontrolera Steam, nie muszą już niczego instalować, by korzystać z niego jako standardowego urządzenia HID w systemie. A to oczywiście tylko wierzchołek góry lodowej – zapraszamy więc do zerknięcia na pozostałe nowości.

Sieci muszą działać szybciej

Oprócz wspomnianego już API do bezpośredniego odczytywania danych z połączeń TCP, oraz specjalnych łatek XDP, które pozwalają ominąć stos sieciowy przy bardzo dużych szybkościach sieci, nowy Linux przynosi nową technologię filtrowania pakietów dla zapór sieciowych. BPF (bpfilter), bo o nim mowa, ostatecznie ma zastąpić dotychczasowy podsystem Netfilter. Jest to w praktyce prosta maszyna wirtualna, wykonująca specjalny, wysoce zoptymalizowany kod, przetwarzający pakiety krótko po ich odebraniu przed sprzęt sieciowy. Efekty są spektakularne – benchmarki pokazują nawet czterokrotny wzrost wydajności w profesjonalnych zastosowaniach z wykorzystaniem interfejsów sieciowych Ethernet 40 Gb/s.

Administratorzy nie powinni się martwić, że będą musieli znów się uczyć nowego podsystemu filtrowania. Umiejętności korzystania z Iptables czy Nftables. BPF zastępuje jedynie podsystem kernela, na którym Iptables i Nftables działają. Stosowane w nich polecenia i listy pozostaną w pełni kompatybilne z nowym podsystemem. Więcej na temat tego, dlaczego linuksowa społeczność zastępuje Iptables przez BPF dowiecie się z wpisu na blogu firmy Cilium.

Zwykli użytkownicy będą mogli za to zauważyć przyspieszenie działania bezprzewodowych sieci lokalnych. Nowa kompresja SACK (Selective Acknowledgment) na stosie TCP obiecuje mniejsze korki w takich sieciach i ogólnie zwiększenie wydajności. Pakiety SACK muszą być wysyłane, gdy pakiet TCP jest odbierany poza kolejnością. Zdarza się tak często podczas zadławienia sieci – ale właśnie wtedy pakiety SACK to tylko dolanie oliwy do ognia. Kernel potrafi teraz opóźnić wysyłanie pakietów SACK, oraz wysyłać je w postaci skompresowanej, jeśli są nadal potrzebne. Ma to znacząco ograniczać zadławienia sieci.

Przyspieszenia oczekujmy też od programów

Po kilku latach rozwoju, kernel zaczął obsługiwać sekwencje restartowalne. To mechanizm zarządzania wielowątkowością, od jakiegoś czasu ewidentnie wykorzystywany przez Google. Pozwala on programiście zdefiniować specjalny region kodu, który miałby działać bez przerwy na określonej dla danego rdzenia procesora strukturze danych. Jeśli wątek zostałby wywłaszczony w trakcie pracy, to mógłby musieć walczyć z innym wątkiem pracującym na tej samej strukturze danych.

Sekwencja restartowalna zapewnia, że kernel zmusi wątek do przerwania w momencie ponownego uruchomienia, a następnie zrobienia porządku i ponownej próby (stąd restartowalna). Normalnie jednak do wywłaszczeń dochodzi rzadko, restartowalna sekwencja będzie więc wykonywała przypisany do procesora kod z dużą prędkością.

Wprowadzone w Linuksie 4.18 rozwiązanie wprowadza binarny interfejs (ABI) między każdym wątkiem w przestrzeni użytkownika a kernelem. Umożliwia to aktualizację danych przypisanych do procesora bez konieczności wykonywania kosztownych operacji atomowych. Dzięki takiemu rozwiązaniu znacznie przyspieszają takie operacje jak wyszukiwanie numeru bieżącego procesora, inkrementacja liczników przypisanych do procesora, modyfikacja danych chronionych przez blokady na procesor, zapis/odczyt na buforach procesora i wiele innych.

Wraz z pracami nad nowym filtrem sieciowym poczyniono zmiany w infrastrukturze kernela, które mogą doprowadzić w przyszłości do ciekawych konsekwencji. Otóż w modułach kernela będą mogły znaleźć się pomocnicze programy, które kernel będzie mógł uruchamiać z niższymi uprawnieniami. Niektórzy eksperci mówią o tym jako o wprowadzeniu do monolitycznego przecież kernela rozwiązań kojarzonych z mikrokernelami.

Znacznie łatwiej będzie korzystać z aplikacji w kontenerach. Mechanizm nieuprzywilejowanego montowania systemów plików pozwala poprzez mechanizm FUSE montować w przestrzeni użytkownika systemy plików w bezpieczny sposób, bez narażania kernela na różne podatności, które mogłyby się w takim systemie kryć. Działa to ze wszystkimi wspieranymi przez kernel systemami plików, trzeba mieć tylko w swoim kontenerze uprawnienia roota.

Najciekawsze ulepszenia w sterownikach

Powody do świętowania mają użytkownicy nowych Radeonów. Kernel 4.18 wprowadza poprzez AMDGPU liczne ulepszenia dla architektury Vega, w tym kontrolę częstotliwości i sterowanie profilami zasilania. Sterownik AMDKFD pozwala zaś na wykorzystanie tych nowych GPU do obliczeń poprzez bibliotekę OpenCL – działa to w przestrzeni użytkownika, bez konieczności jakiejkolwiek konfiguracji. Wprowadzono też podstawowe wsparcie dla grafiki Vega M osadzonej w nowych procesorach Intela z serii Kaby Lake G oraz niewydanych jeszcze układów graficznych Vega 20.

Nowy kernel jest też pierwszą wersją jądra, zapewniającą pełne wsparcie dla Raspberry Pi 3B i 3B+. To jednak nie wszystko, pojawił się w nim sterownik V3D DRM, wcześniej znany jako Broadcom VC5. Przeznaczony on jest dla sprzętu z grafiką VideoCore V – która miejmy nadzieję znajdzie zastosowanie w przyszłości w Raspberry Pi 4.

Linux obsługuje teraz też dwukanałowy transfer danych zdefiniowany w USB 3.2, który podwaja maksymalną przepustowość po złączu USB-C do 20 Gb/s.

Należy też wspomnieć o obsłudze procesora Qualcomm Snapdragon 845. To czip wykorzystywany w tych nowych, modnych komputerkach typu Always Connected PC, sprzedawanych z Windowsem 10. Linus Torvalds osobiście jest zainteresowany takim sprzętem, który zapewniłby wydajność choć w połowie porównywalną do urządzeń x86, ekstremalnie długi czas pracy – i zarazem byłby całkowicie wspierany przez Linuksa.

NSA zadba o bezpieczeństwo Internetu Rzeczy

Szereg pomniejszych modyfikacji zwiększył ochronę przed atakami Spectre v1, zoptymalizowano również ochronę procesorów AMD przez Spectre v4. Linux wreszcie wprowadza metody mające na celu ochronę 32-bitowych procesorów ARM podatnych na Spectre v1 i v2 przed wykorzystaniem tych luk. Na zabezpieczenie czekaliśmy tak długo ze względu na problemy w dogadaniu się z opiekunem architektury ARM.

Do kernela trafiło w końcu wsparcie dla szyfrowania systemu plików za pomocą kontrowersyjnych algorytmów Speck128/Speck256. Czemu kontrowersyjnych? No cóż, stoi za nimi amerykańska Narodowa Agencja Bezpieczeństwa (NSA), utrzymująca, że zapewniają one „akceptowalny poziom szyfrowania” na mało wydajnych urządzeniach Internetu Rzeczy. Początkowo Google chciało korzystać z tych algorytmów w najtańszych urządzeniach z Androidem, ale ostatecznie odrzuciło ten plan.

Zainteresowanych szczegółową listą zmian w nowym kernelu zapraszamy do Phoronixa. Linuksa 4.19 spodziewajcie się w połowie października. Jest możliwe, że Linuksa 4.20 już nie będzie – jeśli Linus Torvalds spełni swoje groźby, to Linux 5.0 mógłby pojawić się na przełomie grudnia i stycznia.

© dobreprogramy