Jądro Linuksa 3.2 wydane

Wydane zostało jądro Linuksa w wersji 3.2.

Grzegorz Niemirowski

Nowością w systemie plików ext4 jest obsługa większych bloków. Dotychczas na systemach x86 blok mógł mieć maksymalnie 4 kB. Ponieważ obecnie tak mała wielkość jest często nieefektywna, limit rozmiaru bloku został podniesiony do 1 MB. Dzięki większym blokom krótsza jest alokacja bloków, mniejsza jest też fragmentacja plików. Ulepszenia wprowadzono także w systemie plików Btrfs. W funkcji scrubbingu, czyli sprawdzania wszystkich sum kontrolnych w systemie plików, zastosowano odczytywanie z wyprzedzeniem. Dzięki temu średnie wykorzystanie pasma na testowym woluminie wzrosło z 70% do 90%. Na innym woluminie czas testu spadł z 89 sekund do 43 sekund. Dodano zapisywanie do superbloku informacji o większości korzeni drzew, informacje te są przydatne przy odtwarzaniu uszkodzonego systemu plików. Ulepszono pobieranie o tym, jakiego pliku dotyczy dany blok. Dzięki temu przy uszkodzeniu bloku użytkownik widzi, który plik został uszkodzony. Ulepszona została inspekcja systemu plików z poziomu narzędzi przestrzeni użytkownika. Poprawiono także wydajność, m.in. przy losowych zapisach.

Dodana została nowa funkcja do planisty, która ma kontrolować wykorzystanie procesora. Dotychczas procesy dostawały tyle czasu, ile było to możliwe. Nie zawsze jednak jest to pożądane, m.in. firma Google zgłosiła scenariusze, gdy brak ograniczeń powodował zbyt duże obciążenie procesora lub nieprzewidywalne opóźnienia. Wprowadzono więc ograniczenia bazujące na okresie (period) i limicie (quota). W obrębie danego okresu, mierzonego w mikrosekundach, dana grupa procesów może wykorzystać tylko określony limit czasu procesora, także mierzony w mikrosekundach. W przypadku gdyby proces chciał wykorzystać więcej czasu, jego wykonanie zostanie wstrzymane do następnego okresu.

Ulepszono provisioning przestrzeni dyskowej w Device Mapperze. Wykorzystując fakt, że wielu użytkowników wykorzystuje tylko małą część przyznanej przestrzeni dyskowej, pozwala przydzielić użytkownikom w sumie więcej przestrzeni niż jest faktycznie dostępne. Funkcja ta to tzw. thin provisioning. Device Mapper wzbogacił się też o nielimitowaną głębokość rekurencyjnych snapshotów (snapshoty snapshotów snapshotów...). Bardziej inteligentnie działa też funkcja writeback, czyli zapis buforowanych danych z RAMu na dysk. Obecnie zapis ten może być wstrzymywany, aby mogło się uzbierać więcej danych do zapisu. Dzięki temu zapisy mogą być rzadsze, co zwiększa wydajność. Powinna być zauważalna większa responsywność systemu przy dużym obciążeniu operacjami writeback a komenda killall dd powinna dawać natychmiastowy efekt. Wprowadzono także inne poprawki do funkcji writeback.

Pojawiła się interesująca poprawka w TCP od firmy Google. Aby dostosować prędkość transmisji pakietów, jest ona zwiększana aż do momentu, gdy zaczyna się utrata pakietów. Wtedy następuje zmniejszenie prędkości a potem ponowna próba jej zwiększenia. Nieraz następuje to zbyt wolno i Google opracowało w związku z tym algorytm Proportional Rate Reduction, który ma zmniejszyć czas wzrastania prędkości. Wprowadzono poprawki do narzędzia profilującego perf top. Możliwa jest teraz nawigacja w czasie przechwytywania danych oraz przeglądanie zadań i bibliotek. Można także śledzić funkcje CALLQ przeskakując do wywoływanych miejsc w kodzie. Pojawiły się dwa nowe wywołania systemowe: process_vm_readv i process_vm_writev, które pozwalają na dostęp do pamięci innego procesu. Jest to funkcja przydatna w programach MPI (Message Passing Interface). Nowe jądro to także obsługa nowej architektury: Hexagon. Są to procesory sygnałowe, pozwalające na wydajne cyfrowe przetwarzanie sygnałów przy małym poborze mocy. Pojawiło się też wiele innych zmian oraz poprawek.

Jądro Linuksa można pobrać z witryny kernel.org, pojawi się też w paczkach dystrybucyjnych.

Programy

Zobacz więcej
Źródło artykułu:www.dobreprogramy.pl
Wybrane dla Ciebie
Komentarze (64)