Cała prawda o kernelach eXt73: sprawdzamy, co może dać płatna optymalizacja (K)ubuntu
Fani Linuksa niejednokrotnie twierdzą, że system ten pozwala nawyciśnięcie z maszyny znacznie więcej, niż jest to możliwe z Windows.Czy jednak faktycznie popularne desktopowe dystrybucje, takie jakUbuntu, wyciskają więcej? Wspominamy o systemie Canonicalacelowo, gdyż jest on nie tylko najpopularniejszym spośróddesktopowych Linuksów, ale też jak pokazuje wiele testów, jednym znajlepiej zoptymalizowanych pod kątem pracy i zabawy na PC. TomaszMiś, znany na naszych łamach jako ext73, jest jednak przekonany, żemożna znacznie lepiej. Optymalizowane przez niego jądra i sterownikigraficzne mają przynieść znaczny wzrost wydajności całego systemu, aspecjalny instalator NeteXt'73 pozwolić niewtajemniczonym w konsolęużytkownikom na łatwe ich zainstalowanie. Czemu zatem wszyscy niekorzystamy z jąder od exta 73? Cóż, nie są one za darmo, a śmiałetwierdzenia autora przysporzyły mu jawnych wrogów, twierdzących, żeto musi być jakiś przekręt. W tej sytuacji zdecydowaliśmy się samibliżej zbadać sytuację.
Jądra eXt73: o co chodzi?
Tomasz Miś do budowy swoich kerneli wykorzystuje czyste źródła(„vanilla”) od Linusa Torvaldsa, wprowadzając do nichoptymalizacje związane m.in. z pracą planistów (schedulerów) izarządzaniem procesami. Kompilacje przygotowywane są na 64-bitowearchitektury Intela i AMD – i rozpowszechniane jako binarnepaczki dla ubuntupodobnych systemów. Roczna subskrypcja, dającadostęp do wydawanych w tym czasie kerneli, kosztuje 50 zł. Wbrewtemu, co niektórzy twierdzą, działanie takie nie jest niezgodne zlicencją GNU GPL v2, na jakiej rozpowszechniany jest kod jądraLinuksa. Autor dostarcza za darmo kod źródłowy, a opłatę pobiera zadzieło budowy kodu wynikowego. Założenia licencji nie zmuszają go doujawniania tego, co konkretnie robi z kompilatorem, jakich ustawień iflag używa podczas kompilacji.
Binarnym kernelom towarzyszą optymalizacje na poziomie systemu,związane głównie z systemem zarządzania energią, modyfikacje ustawieńBIOS-u komputera i zmiany w programie rozruchowym GRUB. By udostępnićswoją pracę jak najszerszemu gronu użytkowników, autor przygotowałprosty w obsłudze instalator, który pozwala wyklikać cały procesinstalacji zoptymalizowanych jąder i towarzyszących im sterownikówgrafiki, a także zarządzać uruchomionymi usługami, skryptami iustawieniami. Za darmo możemy za jego pomocą pobrać kernele dlaAtomów Intela i procesorów zgodnych z architekturą K8 AMD, odpłatniezaś mamy kernele dla architektur AMD takich jak Athlon II, Phenom II,Brazos, Bulldozer, Piledriver i Steamroller, oraz architektur IntelaSandy Bridge, Ivy Bridge i Haswell. Nad instalatorem nie będziemy sięspecjalnie rozwodzić – to nie jest szczyt sztuki projektowaniainterfejsów użytkownika, ale działa solidnie i robi co powinien.
Konfiguracja platformy testowej
Zdecydowaliśmy się przeprowadzić testy na jednej z najsłabszychpod względem mocy obliczeniowej kofiguracji sprzętowych, jakie możnadziś złożyć z nowych części – a która zarazem jest najlepszapod względem stosunku możliwości do ceny i świetnie się sprawdza wbudowie komputerków „salonowych”, HTPC. Oto konfiguracja:
Procesor: APU Athlon 5350 Płyta główna: ASRock AM1H-ITX RAM:1x Hyper-X 4 GB (single channel), 1600 MHz (to maksymalne parametrydla czipsetu AM1) Dysk: A-DATA SSD 120 GB, SATA-III.
Na tej maszynce zainstalowaliśmy jako system operacyjny Kubuntu14.04 LTS, z domyślnym systemem plików ext4. Czemu Kubuntu, a nieUbuntu? Cóż, najwyraźniej lubimy KDE. Innych podtekstów tu nie ma.Następnie zainstalowaliśmy nowy kernel 3.17 (generic), z oficjalnegorepozytorium kernel-ppa oraz oficjalne sterowniki AMD fglrx z poziomupanelu sterowania systemu (kanał fglrx-updates). Domyślnym kernelem wtej wersji dystrybucji jest 3.13, ale chcieliśmy mieć teżbezpośrednie porównanie z jądrem 3.17 (brazos) instalowanym przezNeteXta.
Taki system, można powiedzieć dość generyczny, posłużył jakopodstawa do oceny możliwości kerneli ext73. Po przeprowadzeniukompletu testów, zainstalowany został kernel Brazos, wraz zrekomendowanymi ustawieniami, a testy powtórzone – zarówno zestarszą wersją sterowników graficznych AMD, jak i najnowszą, 14.12,która niedawno zadebiutowała na Linuksie.
Narzędzia testowe
Aby oszczędzić sobie pracy i ułatwić porównania, sięgnęliśmy popakiet phoronix-test-suite (5.4.0), wybierając z niego najbardziejadekwatne do zastosowań desktopowych benchmarki. W systemowejprzeglądarce – Firefoksie – przeprowadziliśmy też testywydajności aplikacji webowych za pomocą nowych benchmarków Apple'a.Przetestowaliśmy też kilka gier i odtworzyliśmy wideo 1080p i 4K.
Sprawy mniej ciekawe, lecz fundamentalne
Zaczęliśmy od testów mniej spektakularnych – pamięci, sieci,dysku, systemu plików i wydajności systemu.
RAMspeed toznane narzędzie mierzące wydajność RAM i cache dla uniksopodobnychsystemów. Nie spodziewaliśmy się aż takiej różnicy. System z kernelemext73 okazał się w niektórych operacjach niemal dwukrotnie szybszy,niż ten działający pod domyślnym kernelem od Canonicala. Dlauśrednionego testu na liczbach stałoprzecinkowych uzyskał niemal 4325MB/s, podczas gdy „stockowe” jądro dało zaledwie 2405MB/s.
W bezpośrednim dostępie do dysku różnic już takich nie było.Benchmark FlexibleIO Tester (fio) symuluje różne obciążenia robocze dla pamięcimasowych. W operacji losowego odczytu (bloki 4 KB) kernel ext73uzyskał nieco ponad 16 MB/s, podczas gdy stockowy kernel 13,5 MB/s.Przy losowym zapisie oba kernele szły łeb w łeb – ok. 88 MB/sdo 87 MB/s.
Wydajność systemu plików zmierzyliśmy za pomocą FS-Marka,przeznaczonego do symulowania obciążeń typowych dla synchronicznegozapisu. Można tu modyfikować liczbę plików, głębię katalogów itp.Wybraliśmy 1000 plików o wielkości 1 MB każdy. Ponownie kernel ext73pokazał pazury, osiągając wynik na poziomie 220 plików/s podczas gdystockowy kernel uzyskał tylko 160 plików/s. Jeszcze bardziej przewagaext73 była widoczna w PostMarku,symulatorze obciążeń roboczych charakterystycznych dla serwerapoczty, w którym pliki są zakładane, kasowane i odczytywane. Tuosiągnął wynik 1546 transakcji na sekundę, podczas gdy na stockowymkernelu tylko 760 transakcji na sekundę.
W typowym i wymagającym obciążeniu roboczym, jakim jestrozpakowanie jądra Linuksa, kernel ext73 okazał się minimalnieszybszy, kończąc pracę w niecałe 24 sekundy, podczas gdy stockowypotrzebował na to ponad 25 sekund.
Żadnego za to efektu optymalizacje nie przyniosły w kwestiiwydajności sieci. Transfer pliku 10 GB przez wewnętrzny interfejsloopback zajął w obu wypadkach niecałe 30 sekund.
O jądrze, co poważnej pracy się nie bało
Użytkowników niekoniecznie musi interesować wydajność systemuplików czy pamięci – najważniejsza jest wydajność uruchamianychaplikacji. Generalnie można powiedzieć, że cudów nie ma –optymalizacja kernela nie zrobi z naszego Athlona 5350 czegoś nakształt Core i3. Postęp jednak jest, choć jego wielkość bardzo zależyod rodzaju aplikacji.
Na pewno jądra ext73 nie przyspieszą znacząco pracy programisty.Testowe kompilacje Linuksa, Firefoksa czy Apache pokazały minimalnypostęp. Przykładowo kompilacja Linuksa 3.18 zajęła niecałe 494sekundy, podczas gdy na stockowym kernelu trwało to niespełna 499sekund. Różnic nie widać też dla ray-tracerów (C-Ray), gdzie kernelext73 był o sekundę szybszy od stockowego, czy transkodowanie mediów(LAME WAV do MP3), gdzie dla obu jąder wyniki były takie same,niespełna 36 sekund.
Swoje możliwości jądra ext73 pokazują szczególnie przyobciążeniach typowych dla serwerów WWW. Zarówno w teście Apache jak iNGINX, różnice są bardzo duże – na zoptymalizowanym jądrzeNGINX serwował niemal 8660 statycznych stron na sekundę, podczas gdyna stockowym kernelu już tylko 4664.
Aplikacjom przeglądarkowym niewiele można pomóc, dla nich tobrowser jest wąskim gardłem, nie system. Nie dziwią więc wyniki wJetStreamie (55756 do 55305) i Speedometrze (9,1 do 8,64) –różnice znikome, choć na korzyść ext73.
Czas na szybszą roz(g)rywkę
Czy można grać na takim maleńkim Athlonie 5350, z jego słabymzintegrowanym Radeonem R3? Finalnie przyjrzeliśmy się kwestiiwydajności grafiki, zarówno w testach syntetycznych jak i kilkuprostych grach 3D.
Wyniki są dość ciekawe. W syntetycznych benchmarkach GPU zasługęwzrostu wydajności można przypisać przede wszystkim nowym sterownikomod AMD. Widać to zarówno w Furmarku jak i Tessmarku - przy stockowymsterowniku 13.35 zmiana jądra nie przyniosła różnic, za tozastosowanie sterownika 14.12 pozwoliło uzyskać te kilka punktówwięcej.
Z drugiej jednak strony test QGears, dość dobrze demonstrującywydajność podsystemu OpenGL, pokazuje, że to właśnie nowe jądropozwala zwiększyć wydajność – i to ponad dwukrotnie!Analogiczną zależność widać w benchmarkach dla grafiki 2D w Javie iX11:
To samo można powiedzieć o wynikach w sprawdzonych przez nas grach OpenArena, SuperTuxCart i Xonotic– te kilkanaście procent więcej, jakie można uzyskać dziękikernelom ext73 oznaczać może różnicę między klatkowaniem a płynnągrą. Warto jednak sprawdzić współpracę kernela z daną wersjąsterowników – nie zawsze najnowsze będzie zarazem najszybsze.
Finalnie wspomnijmy o wideo. Odczuwalne różnice widać jednak przyodtwarzaniu wideo H.264, gdzie odtwarzanie klipu 1080p H.264(klasyczny gruby królik z Blendera) z jądrem ext73 przyniosłoobciążenie procesora średnio na poziomie 12%, podczas gdy na jądrzestockowym wynosiło ono średnio 35%. Jeszcze lepiej było przyodtwarzaniu klipu 4k (testowa sekwencja Mobile od ElementalTechnologies). Z ext73 udało się go płynnie odtworzyć (w VLC) przyobciążeniu procesora na poziomie 77%, na stockowym kernelu okazałosię to niemożliwe – wideo klatkowało, cały system zamierał.
Płacić za jądra?
Nie mamy wątpliwości co do tego, że Kubuntu z jądrem ext73odczuwalnie przyspieszyło. Czy to przyspieszenie jest warte 50złotych? Wszystko zależy od potrzeb i zastosowań. W wypadkutestowanego komputerka z Athlonem 5350 nowe jądro pozwoliło naprzyspieszenie gier i zwiększenie płynności wideo do poziomuwcześniej nieosiągalnego. Można myśleć o wykorzystaniu go doodtwarzania filmów 4K. Wiele wskazuje na to, że zoptymalizowane jądramogą przysłużyć się użytkownikom laptopów, wydłużając czas pracy nabaterii. Sprawdzimy to (i nie tylko to) podczas testów Thinkpada W510z procesorem Core i5 oraz GPU Nvidii.
Nasz werdykt jest pozytywny dla jąder ext73. Bez względu na to,jakie to zaklęcia Tomasz Miś wznosił nad kompilatorem, zbudowaneprzez niego kernele są pod wieloma względami wydajniejsze niż kernelestockowe, dostarczane z Ubuntu – a co za tym idzie,wydajniejsze niż większość innych dystrybucji. Nie tylko przynoszą wzrost wydajności dla wielu typów obciążeń roboczych, ale też odczuwalnie poprawiają responsywność interfejsu użytkownika, sprawiając, że nawet na relatywnie słabym sprzęcie nabiera on płynności działania.
To jeszcze nie koniec
W drugiej części tegomateriału (w której przetestujemy ext73 na Intelu), postaramy sięwypróbować rosyjskie jądra nrji nrjQL, przygotowane dla ROSA Linuksa i OpenMandrivy. Uzyskanewyniki powinny pozwolić lepiej zrozumieć to, co dzieje się wzoptymalizowanym Ubuntu.