Nadchodzące jądro Linux 7.2 może przynieść sporą poprawę wydajności dysków SSD. Nie chodzi jednak o wielomiesięczny projekt angażujący setki programistów ani o przełomową przebudowę kluczowych komponentów systemu. Tym razem wystarczyło przesunięcie zaledwie dwóch linijek kodu.
Odkrycie chińskiego inżyniera pracującego dla ByteDance, właściciela TikToka, już wzbudziło zainteresowanie społeczności Linuksa. W testach wydajności nowoczesnych nośników NVMe poprawka przyniosła nawet 5-procentowy wzrost liczby operacji wejścia i wyjścia na sekundę.
Nie przepisał kodu. Po prostu przeniósł dwie linijki
Autorem zmiany jest Fengnan Chang, programista związany z ByteDance. Podczas analizy działania jądra zauważył, że jeden z mechanizmów odpowiedzialnych za obsługę systemów plików wykonuje niepotrzebną operację czyszczenia pamięci nawet wtedy, gdy nie przynosi ona żadnych korzyści. Problem dotyczył komponentu iomap, wykorzystywanego przez dwa niezwykle popularne systemy plików: EXT4 oraz XFS. Mechanizm odpowiada za mapowanie danych zapisanych w plikach na ich fizyczne położenie na nośniku.
Chang odkrył, że w określonych scenariuszach jądro wykonuje zbędne operacje pamięciowe, które pochłaniają część dostępnej przepustowości. Zamiast tworzyć nowy algorytm lub przebudowywać fragment systemu, programista przesunął dwie istniejące linijki kodu w inne miejsce procesu wykonywania operacji. Efekt okazał się znacznie większy, niż mogłaby sugerować skala zmiany.
Programiści zajmujący się wydajnością systemów operacyjnych od dawna podkreślają, że współczesne procesory są tak szybkie, iż nawet drobne błędy organizacyjne mogą generować wymierne straty. W przypadku Linuksa wystarczyło przesunąć dwa wiersze kodu, by odzyskać część utraconej mocy obliczeniowej.
SSD NVMe odczują różnicę
Według testów przeprowadzonych przez autora poprawki wzrost wydajności sięga około 5 proc. podczas intensywnego obciążenia nowoczesnych dysków SSD NVMe. Chodzi przede wszystkim o scenariusze wykorzystujące bardzo dużą liczbę operacji wejścia i wyjścia wykonywanych równolegle.
Takie obciążenia pojawiają się między innymi w serwerach baz danych, środowiskach chmurowych, centrach danych oraz zaawansowanych stacjach roboczych. Szczególnie istotne znaczenie ma tutaj wykorzystanie technologii io_uring, która w ostatnich latach stała się jednym z najważniejszych elementów zwiększających wydajność Linuksa. Właśnie w takich warunkach niepotrzebne operacje memset zaczynały zużywać cenną przepustowość pamięci operacyjnej. Po usunięciu tego problemu liczba obsługiwanych operacji wzrosła zauważalnie.
Poprawka została zaakceptowana
Fengnan Chang nie mógł samodzielnie wprowadzić zmian do głównego drzewa rozwojowego jądra. Jak wygląda standardowa procedura, przygotował propozycję poprawki i przesłał ją do opiekunów odpowiednich podsystemów. Zmiana została zaakceptowana przez Christiana Braunera, jednego z kluczowych opiekunów odpowiedzialnych za rozwój systemu plików w Linuksie. Następnie trafiła do procesu integracji z jądrem 7.2.
Jeśli nie pojawią się nieprzewidziane problemy podczas dalszych testów, użytkownicy otrzymają optymalizację wraz z premierą Linuxa 7.2. Aktualny harmonogram zakłada debiut nowej wersji w sierpniu 2026 roku.
Spodobało Ci się? Podziel się ze znajomymi!

Pokaż / Dodaj komentarze do:
Dwie linijki kodu przyspieszyły Linuksa. Programista z TikToka znalazł sposób na szybsze SSD