środa, 22 marca 2017

Linux Kernel 4.10 - jądro na 2017 rok

Podkręcanie Nvidii, wirtualizacja GPU Intela i sprawniejszy zapis na USB


Zimowy, wydany na przedwiośniu Linux 4.10 wydany dnia 19 lutego 2017 zgodnie z harmonogramem – i tym razem po dużym, ale nieciekawym dla zwykłego użytkownika wydaniu 4.9 z 16 tysiącami usprawnień, dostajemy kernel, który przynosi dużo dobrego. Wciąż jeszcze nie ma nowego mechanizmu komunikacji międzyprocesowej, wciąż linuksowego kernela nie zbudujemy łatwo za pomocą kompilatora LLVM/Clang, ale lista nowości sprawia, że niejeden użytkownik distro ze starszymi wersjami jądra czyli kernela linuksowego rozejrzy się za repozytorium zawierającym wersję najnowszą. W dystrybucji Linux Rosa Fresh jak zawsze nowe jądro wejdzie w dojrzalszej podwersji, około Linux 4.10.5, jako że najlepsza dystrybucja linuksowa dba o stabilność, bezawarayjność i wydajność kolejnych jąder Linuksa. 



Grafika na jądrze Linux 4.10 


Przegląd nowości zaczynamy od tego co widać czyli od grafiki. Opensource’owy sterownik nouveau potrafi już podkręcać częstotliwości zegara dla wspieranych kart graficznych (NvBoost). Wciąż robi się to ręcznie, ale efekt jest wart uwagi – wydajność nouveau zaczęła zbliżać się do wydajności własnościowych sterowników Nvidii, przynajmniej na GeForce z serii 600 i 700. Na kartach z serii 900 jest trochę gorzej, a z najnowszą serią 1000 lepiej się nie irytować – wciąż nie ma dobrej sprzętowej akceleracji. To katastrofalna polityka firmy Nvidia, która do tej pory nie udostępniła deweloperom podpisanych obrazów firmware kart.

Oprócz tego należy wspomnieć o takich nowościach w nouveau jak wsparcie trybu atomicznego dla rozdzielczości ekranowych (ułatwiające konfigurację trybu graficznego), możliwość podłączenia wielu monitorów przez jedno złącze DisplayPort (MST), a nawet sterowanie diodami LED na karcie graficznej. 

Zmiany w sterowniku AMDGPU są tym razem skromniejsze. Ulepszono zarządzanie energią, ujawniono informacje o pracy wentylatora dla monitora sprzętowego, dodano wsparcie dla urządzeń wirtualnych i dodano wsparcie dla architektury Polaris 12.

Sterowniki Intela doczekały się wreszcie obsługi modelu GVT-g, co oznacza, że będzie można udostępniać je bezpośrednio maszynom wirtualnym. Dobra wiadomość, jeśli np. udostępniamy Linuksowi np. kartę Nvidii, a zintegrowana grafika Intela leży sobie odłogiem. Do tego nowy planista pracy GPU powinien zapewnić sprawniejsze przechodzenie w tryb turbo. Pełna implementacja wirtualizacji grafiki Intela pojawi się jednak dopiero w jądrze Linuksa 4.11.

Pewne ulepszenia pojawiły się też w sterowniku grafiki Raspberry Pi (VC4) – to przede wszystkim kompresja tekstur i wsparcie dla wielowątkowego przetwarzania shaderów. 

Procesory dla jądra Linux 4.10 


Linux 4.10 przynosi dalsze wsparcie dla architektury Ryzen, która niebawem ma wywrócić rynek PC do góry nogami (jeśli wierzyć wyciekom z wynikami benchmarków i cenami detalicznymi). Teraz dodano wsparcie dla obsługi błędów sprzętowych. Trudno powiedzieć jednak, czy 4.10 w swoim obecnym stanie pozwoli na całkowite wykorzystanie wszystkich możliwości Ryzena – pamiętajmy, że to układy SoC, zawierające zintegrowany mostek południowy.

Użytkownicy najnowszych procesorów Intela, takich jak Broadwell-E, mogą się cieszyć z dodania wsparcia dla technologii Turbo Boost Max 3.0, pozwalającej o nawet kilkanaście procent podbić wydajność pojedynczego rdzenia. Jest to o tyle interesujące, że początkowo Intel coś opowiadał o braku wsparcia dla TBM 3.0 na Linuksie, dostarczając ją tylko na Windowsa – najwyraźniej korporacyjni klienci Intela, korzystający z linuksowych stacji roboczych i superkomputerów szybko wyrazili swoje niezadowolenie.

Dodano też wsparcie dla Intel Cache Allocation Technology, która pozwala sterować politykami wykorzystania buforów L2/L3 w procesorze – ma to szczególne zastosowanie w aplikacjach czasu rzeczywistego, którym teraz można przyznać wydzielone miejsce w cache.

Trwają prace nad całkowicie uwolnioną architekturą OpenRISC, pojawiło się wsparcie dla nowych czipów Tegra Nvidii (Parker), architektury ARM i ARM64 wspierają zaś dziesiątki nowych platform, m.in. Snapdragona 808 i 810. Najciekawiej jest jednak w dziedzinie x86, gdzie mamy sporo zmian w wirtualizacji dla hiperwizora KVM – m.in. możliwość uruchamiania Hyper-V jako gościa, wsparcie dla wirtualnej infrastruktury zintegrowanego GPU Intela i obsługa rozszerzeń listy poleceń procesora AVX512.

Dyski i systemy plików z jądrem Linux 4.10 


Najważniejszą tu nowością jest obsługa mechanizmu ATA Command Priorities (póki co domyślnie wyłączonego), który obsługuje dyskowe polecenia NCQ. Możliwość ustawienia wysokiego priorytetu pozwala drastycznie obniżyć opóźnienia dla bardziej skolejkowanych obciążeń roboczych. W testach deweloperów udało się zejść z dwusekundowego opóźnienia do 72 milisekund – ucieszy to wszystkich użytkowników linuksowych dysków sieciowych.

Systemy plików EXT4 i XFS powinny teraz przyspieszyć operacje I/O dzięki nowym, prostszym ścieżkom mapowania. EXT4 wyłącza też teraz kronikę systemu plików jeśli dane są zaszyfrowane. Przyjazny dla pamięci flash F2FS, doczekał się możliwości podłączenia wielu urządzeń w jednym systemie plików oraz optymalizacji, które powinny zwiększyć jego wydajność.

Kilka dalszych nowości w Linuksie 4.10 


- wsparcie szyfrowania dla UBIFS, 
- szybszy WLAN, 
- nowe narzędzie perf c2c pozwoli mierzyć wydajność dostępu do pamięci cache w systemach wieloprocesorowych,
- Linux znacznie lepiej obsługiwać będzie bufor zapisu przy synchronizacji danych zapisanych z pamięci na dysk – ma to zakończyć koszmar, jakim bywa kopiowanie plików na pamięci USB, potrafiące zadławić inne aplikacje,
- zmniejszenie opóźnień w obsłudze urządzeń blokowych przy takim samym (a nawet mniejszym) obciążeniu procesora, co zauważymy przede wszystkim na tych nowych szybkich pamięciach NVMe,
- możliwość sterowania narzędziami do filtrowania sieci (eBPF) z poziomu cgroups – tak że można przypisać im wszystkie gniazdka i zadania umieszczone w danej cgrupie.

Nowy Linux 4.10 może zostać wykorzystany m.in. w najnowszym Ubuntu 17.04. Szczegółowy zestaw wszystkich zmian znajdziecie na KernelNewbies.com. Nam pozostaje czekać teraz na Linuksa 4.11, który być może przyniesie wsparcie dla heterogenicznego zarządzania pamięcią, otwierając drogę do współdzielenia obiektów w pamięci przez CPU i GPU. 

Bardziej szczegółowa lista usprawnień znajduje się także tutaj: 


1 komentarz: