Co zawdzięczamy EXT4?
Nowa linuksowa wunderwaffe wycelowana w desktopy, staje się czymś powszechnym – wszędzie widzimy masową migrację dystrybucji na system plików EXT4. Nowe Ubuntu (Jaunty Jackalope 9.04) które na masową skalę zastąpi na naszych komputerach ext3 nowym ext4, od jakiegoś czasu jest już dostępne. I skutek zamiany systemu plików jest widoczny, nawet okiem laika.
Ale co, poza inną nazwą, tak naprawdę dał nam EXT4?
Wszystkie zmiany jak zawsze sprowadzają się do jednego – aby było szybciej i sprawniej. Etatowego użytkownika nie interesują takie terminy jak poprawiające wydajność ekstenty, dynamicznie optymalizowane rozmieszczenie danych na dysku (allocate-on-flush), usprawnia obsługa księgowania (sumy kontrole) i parę innych. Co więcej, jego takie dociekania nad naturą powyższych, kompletnie nie obchodzą – jego komputer ma działać szybciej, sprawniej i ma mieć kolorowy pulpit. Natomiast testy lubimy My (określona grupa określonego kręgu społecznego). W przypadku wspomnianego wcześniej Ubuntu 9.04 warunek prędkości został spełniony – system uruchamia się sporo szybciej niż we wcześniejszych wersjach. Czy jest to jednak wynik sprawniejszego systemu plików, czy może zmieniły się skrypty startowe i ich wydajność?
Mój Jaunty którego testuję od wersji RC, natchnął mnie do sprawdzenia różnicy w wydajności pomiędzy ext3 a ext4 na moim dopieszczony Debianie. Dla partycji na tym samym dysku (jedna partycja ext3, druga ext4), zapuściłem w prostacki sposób Bonnie++ ($# bonnie++ -s 4128). A wyniki są takie:
EXT3
Size
4128M
------Sequential Output------
-Per Chr- --Block-- -Rewrite-
K/sec %CP K/sec %CP K/sec %CP
34740..71.35551..10.16804...3
--Sequential Input- --Random-
-Per Chr- --Block-- --Seeks--
K/sec %CP K/sec %CP /sec %CP
36828..83.37393...3.176,8..0
EXT4
------Sequential Output------
-Per Chr- --Block-- -Rewrite-
K/sec %CP K/sec %CP K/sec %CP
51493..96.56371..12.23641...4
--Sequential Input- --Random-
-Per Chr- --Block-- --Seeks--
K/sec %CP K/sec %CP /sec %CP
55680..96.57802...5.192,0..0
Jak się już tak człowiek wczyta w te cyferki, liczby i symbole (to nie moja wina, że to tak wygląda, Bonnie++ tak podaje wyniki), to nasuwają się oczywiste wnioski i konkluzje (dla uproszczenia tylko dla operacji na blokach):
– ext4 jest szybszy od ext3 – zarówno przy zapisywaniu (56371 K/sec vs 35551 K/sec) i odczytywaniu danych (57802 K/sec vs 37393 K/sec),
– ext4 jest szybszy od ext3 podczas nadpisywania plików (23641 K/sec vs 16804 K/sec),
– ext4 bardziej obciąża procesor (zapis – 12% vs 10%, odczyt 5% vs 3%).
Cóż można więcej rzec. Przy najbliższej sposobności muszę przeformatować swoją partycję / na nowy system plików. Podobne rozwiązanie polecam osobom aktualizującym swoje Ubuntu do nowszej wersji – optymalnie będzie uruchomić instalację z płytki, a partycję / potraktować jak wspomniałem. Oczywiście, tylko w przypadku, gdy ważne dane i /home mamy na osobnej partycji.
Można wcześniejszą partycję ext3 zamontować jako ext4, ale nie da to wielkiego przyrostu w wydajności – właśnie z powodu specyficznych i właściwych tylko ext4 rozwiązaniom.
Rzecz jasna, powyższy test jest taki bardziej ‘na oko’. Na Phoronixie i innych serwisach, testów i benchmarków EXT4 wykonano już całe multum, jednak nikt chyba nie zwrócił uwagę na śladowe, ale jednak większe, zużycie CPU. Ale przecież mamy coraz lepsze procesory, a różnica w obciążeniu jest akceptowalna, w stosunku do wzrostu wydajności zapisu i odczytu.
Testu dokonano na Debianie z kernelem 2.6.29, dysku WD (IDE), dwóch partycjach zamontowanych z parametrem ‘noatime’.