r   e   k   l   a   m   a
r   e   k   l   a   m   a

Cała prawda o kernelach eXt73: sprawdzamy, co może dać płatna optymalizacja (K)ubuntu

Strona główna AktualnościOPROGRAMOWANIE

Fani Linuksa niejednokrotnie twierdzą, że system ten pozwala na wyciśnięcie z maszyny znacznie więcej, niż jest to możliwe z Windows. Czy jednak faktycznie popularne desktopowe dystrybucje, takie jak Ubuntu, wyciskają więcej? Wspominamy o systemie Canonicala celowo, gdyż jest on nie tylko najpopularniejszym spośród desktopowych Linuksów, ale też jak pokazuje wiele testów, jednym z najlepiej zoptymalizowanych pod kątem pracy i zabawy na PC. Tomasz Miś, znany na naszych łamach jako ext73, jest jednak przekonany, że można znacznie lepiej. Optymalizowane przez niego jądra i sterowniki graficzne mają przynieść znaczny wzrost wydajności całego systemu, a specjalny instalator NeteXt'73 pozwolić niewtajemniczonym w konsolę użytkownikom na łatwe ich zainstalowanie. Czemu zatem wszyscy nie korzystamy z jąder od exta 73? Cóż, nie są one za darmo, a śmiałe twierdzenia autora przysporzyły mu jawnych wrogów, twierdzących, że to musi być jakiś przekręt. W tej sytuacji zdecydowaliśmy się sami bliż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 nich optymalizacje związane m.in. z pracą planistów (schedulerów) i zarządzaniem procesami. Kompilacje przygotowywane są na 64-bitowe architektury Intela i AMD – i rozpowszechniane jako binarne paczki dla ubuntupodobnych systemów. Roczna subskrypcja, dająca dostęp do wydawanych w tym czasie kerneli, kosztuje 50 zł. Wbrew temu, co niektórzy twierdzą, działanie takie nie jest niezgodne z licencją GNU GPL v2, na jakiej rozpowszechniany jest kod jądra Linuksa. Autor dostarcza za darmo kod źródłowy, a opłatę pobiera za dzieło budowy kodu wynikowego. Założenia licencji nie zmuszają go do ujawniania tego, co konkretnie robi z kompilatorem, jakich ustawień i flag 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 proces instalacji zoptymalizowanych jąder i towarzyszących im sterowników grafiki, a także zarządzać uruchomionymi usługami, skryptami i ustawieniami. Za darmo możemy za jego pomocą pobrać kernele dla Atomów Intela i procesorów zgodnych z architekturą K8 AMD, odpłatnie zaś mamy kernele dla architektur AMD takich jak Athlon II, Phenom II, Brazos, Bulldozer, Piledriver i Steamroller, oraz architektur Intela Sandy Bridge, Ivy Bridge i Haswell. Nad instalatorem nie będziemy się specjalnie rozwodzić – to nie jest szczyt sztuki projektowania interfejsów użytkownika, ale działa solidnie i robi co powinien.

r   e   k   l   a   m   a

Konfiguracja platformy testowej

Zdecydowaliśmy się przeprowadzić testy na jednej z najsłabszych pod względem mocy obliczeniowej kofiguracji sprzętowych, jakie można dziś złożyć z nowych części – a która zarazem jest najlepsza pod względem stosunku możliwości do ceny i świetnie się sprawdza w budowie 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 parametry dla czipsetu AM1)
Dysk: A-DATA SSD 120 GB, SATA-III.

Na tej maszynce zainstalowaliśmy jako system operacyjny Kubuntu 14.04 LTS, z domyślnym systemem plików ext4. Czemu Kubuntu, a nie Ubuntu? Cóż, najwyraźniej lubimy KDE. Innych podtekstów tu nie ma. Następnie zainstalowaliśmy nowy kernel 3.17 (generic), z oficjalnego repozytorium kernel-ppa oraz oficjalne sterowniki AMD fglrx z poziomu panelu sterowania systemu (kanał fglrx-updates). Domyślnym kernelem w tej wersji dystrybucji jest 3.13, ale chcieliśmy mieć też bezpośrednie porównanie z jądrem 3.17 (brazos) instalowanym przez NeteXta.

Taki system, można powiedzieć dość generyczny, posłużył jako podstawa do oceny możliwości kerneli ext73. Po przeprowadzeniu kompletu testów, zainstalowany został kernel Brazos, wraz z rekomendowanymi ustawieniami, a testy powtórzone – zarówno ze starszą 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 po pakiet phoronix-test-suite (5.4.0), wybierając z niego najbardziej adekwatne do zastosowań desktopowych benchmarki. W systemowej przeglądarce – Firefoksie – przeprowadziliśmy też testy wydajnoś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 to znane narzędzie mierzące wydajność RAM i cache dla uniksopodobnych systemów. Nie spodziewaliśmy się aż takiej różnicy. System z kernelem ext73 okazał się w niektórych operacjach niemal dwukrotnie szybszy, niż ten działający pod domyślnym kernelem od Canonicala. Dla uśrednionego testu na liczbach stałoprzecinkowych uzyskał niemal 4325 MB/s, podczas gdy „stockowe” jądro dało zaledwie 2405 MB/s.

W bezpośrednim dostępie do dysku różnic już takich nie było. Benchmark Flexible IO Tester (fio) symuluje różne obciążenia robocze dla pamięci masowych. W operacji losowego odczytu (bloki 4 KB) kernel ext73 uzyskał 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/s do 87 MB/s.

Wydajność systemu plików zmierzyliśmy za pomocą FS-Marka, przeznaczonego do symulowania obciążeń typowych dla synchronicznego zapisu. 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 ext73 pokazał pazury, osiągając wynik na poziomie 220 plików/s podczas gdy stockowy kernel uzyskał tylko 160 plików/s. Jeszcze bardziej przewaga ext73 była widoczna w PostMarku, symulatorze obciążeń roboczych charakterystycznych dla serwera poczty, w którym pliki są zakładane, kasowane i odczytywane. Tu osiągnął wynik 1546 transakcji na sekundę, podczas gdy na stockowym kernelu tylko 760 transakcji na sekundę.

W typowym i wymagającym obciążeniu roboczym, jakim jest rozpakowanie jądra Linuksa, kernel ext73 okazał się minimalnie szybszy, kończąc pracę w niecałe 24 sekundy, podczas gdy stockowy potrzebował na to ponad 25 sekund.

Żadnego za to efektu optymalizacje nie przyniosły w kwestii wydajności sieci. Transfer pliku 10 GB przez wewnętrzny interfejs loopback 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ść systemu plików czy pamięci – najważniejsza jest wydajność uruchamianych aplikacji. Generalnie można powiedzieć, że cudów nie ma – optymalizacja kernela nie zrobi z naszego Athlona 5350 czegoś na kształt Core i3. Postęp jednak jest, choć jego wielkość bardzo zależy od rodzaju aplikacji.

Na pewno jądra ext73 nie przyspieszą znacząco pracy programisty. Testowe kompilacje Linuksa, Firefoksa czy Apache pokazały minimalny postęp. Przykładowo kompilacja Linuksa 3.18 zajęła niecałe 494 sekundy, podczas gdy na stockowym kernelu trwało to niespełna 499 sekund. Różnic nie widać też dla ray-tracerów (C-Ray), gdzie kernel ext73 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 przy obciążeniach typowych dla serwerów WWW. Zarówno w teście Apache jak i NGINX, różnice są bardzo duże – na zoptymalizowanym jądrze NGINX serwował niemal 8660 statycznych stron na sekundę, podczas gdy na stockowym kernelu już tylko 4664.

Aplikacjom przeglądarkowym niewiele można pomóc, dla nich to browser jest wąskim gardłem, nie system. Nie dziwią więc wyniki w JetStreamie (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łabym zintegrowanym Radeonem R3? Finalnie przyjrzeliśmy się kwestii wydajności grafiki, zarówno w testach syntetycznych jak i kilku prostych grach 3D.

Wyniki są dość ciekawe. W syntetycznych benchmarkach GPU zasługę wzrostu wydajności można przypisać przede wszystkim nowym sterownikom od AMD. Widać to zarówno w Furmarku jak i Tessmarku - przy stockowym sterowniku 13.35 zmiana jądra nie przyniosła różnic, za to zastosowanie sterownika 14.12 pozwoliło uzyskać te kilka punktów więcej.

Z drugiej jednak strony test QGears, dość dobrze demonstrujący wydajność podsystemu OpenGL, pokazuje, że to właśnie nowe jądro pozwala zwiększyć wydajność – i to ponad dwukrotnie! Analogiczną zależność widać w benchmarkach dla grafiki 2D w Javie i X11:

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ęki kernelom 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 przy odtwarzaniu wideo H.264, gdzie odtwarzanie klipu 1080p H.264 (klasyczny gruby królik z Blendera) z jądrem ext73 przyniosło obciążenie procesora średnio na poziomie 12%, podczas gdy na jądrze stockowym wynosiło ono średnio 35%. Jeszcze lepiej było przy odtwarzaniu klipu 4k (testowa sekwencja Mobile od Elemental Technologies). Z ext73 udało się go płynnie odtworzyć (w VLC) przy obciążeniu procesora na poziomie 77%, na stockowym kernelu okazało się 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 ext73 odczuwalnie przyspieszyło. Czy to przyspieszenie jest warte 50 złotych? Wszystko zależy od potrzeb i zastosowań. W wypadku testowanego komputerka z Athlonem 5350 nowe jądro pozwoliło na przyspieszenie gier i zwiększenie płynności wideo do poziomu wcześniej nieosiągalnego. Można myśleć o wykorzystaniu go do odtwarzania filmów 4K. Wiele wskazuje na to, że zoptymalizowane jądra mogą przysłużyć się użytkownikom laptopów, wydłużając czas pracy na baterii. Sprawdzimy to (i nie tylko to) podczas testów Thinkpada W510 z 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, zbudowane przez niego kernele są pod wieloma względami wydajniejsze niż kernele stockowe, 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 tego materiału (w której przetestujemy ext73 na Intelu), postaramy się wypróbować rosyjskie jądra nrj i nrjQL, przygotowane dla ROSA Linuksa i OpenMandrivy. Uzyskane wyniki powinny pozwolić lepiej zrozumieć to, co dzieje się w zoptymalizowanym Ubuntu.

© dobreprogramy
r   e   k   l   a   m   a
r   e   k   l   a   m   a

Komentarze

r   e   k   l   a   m   a
r   e   k   l   a   m   a
Czy wiesz, że używamy cookies (ciasteczek)? Dowiedz się więcej o celu ich używania i zmianach ustawień.
Korzystając ze strony i asystenta pobierania wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.