Poniedzielnik: wieści ze świata OpenSource. Numer 31 17


Open SourceWieści ze świata Open Source: 3 – 9 stycznia 2012.

Kilka dni temu Linus Torvalds wydał stabilną wersję kernela 3.2. Zmiany? Sporo, w tym wiele rzeczy dla zwykłych użytkowników. Jak zwykle z okazji wydania nowego kernela, Poniedzielnik jest poświęcony większości tej tematyce.

Linux kernel 3.2 – zapis na klucze USB

Od bardzo długiego czasu znana jest sytuacja kiedy to podczas zapisywania dużej ilości danych na powolny nośnik (zazwyczaj klucz USB, powolna empetrójka czy coś w tym stylu) system niemalże zamarza. Wystarczy podłączyć pendrive’a z prędkości zapisu rzędu 3 MB/s albo mniej i próbować wgrać na niego duży plik, powiedzmy duży backup. Wszystko pięknie widać w monitorze systemu. Niby wszystko jest w porządku. Procek obciążony w normie, pamięć wolna, swap pusty. Ale wystarczy spojrzeć na wskaźnik ogólnego obciążenia systemu aby dojść do wniosku, że coś jest nie tak. W moim przypadku potrafi wskazywać nawet ponad 10 (oznacza to, że w przeciągu ostatniego czasu średnio 10 zadań czekało w kolejce na wykonanie, ponieważ system nie nadążał). Kopiowanie trwa, pulpit zamarza, filmy się tną. A muzyka jak leciała tak leci, tylko nie ma kontroli nad odtwarzaczem.

Przyczyna takiego stanu rzeczy leży u zarania dziejów Linuksa. Algorytm odpowiedzialny za alokację pamięci jest zoptymalizowany do pracy pod dużym ogólnym obciążeniem. Kopiowanie z dysku twardego na osobny nośnik odbywa się za pośrednictwem pamięci operacyjnej. Kopiowanie dużych plików wymaga wrzucenia do pamięci jednorazowo relatywnie dużej porcji danych. Dane te następnie są zapisywane na nośnik, który nie nadąża z przyjmowaniem – porównajcie wydajność zapisu do RAM-u a zapisu na nawet najszybszy klucz USB. Algorytm alokujący pamięć stara się nie dopuścić do sytuacji, kiedy w pamięci znajduje się zbyt wiele bardzo dużych i niepodzielnych danych (co prowadzi do szybkiej defragmentacji). Więc co robi? Odmawia zapisu innym procesom, preferując te co już pracują.

Problem oczywiście jest bardziej złożony i nie zależy tylko od alokatora pamięci. Do powiedzenia ma też parę słów planista wejścia/wyjścia, planista procesora i prawdopodobnie parę innych rzeczy. Dlatego tak długo nikt nie zajmował się rozwiązaniem tej przypadłości. Debugowanie kilku obszarów jądra na raz to nie jest rzecz, którą można wykonać w jedno popołudnie. Poza tym takie zachowanie jest preferowane na serwerach (gdzie fajnie jest mieć duże, niezdefragmentowane obszary pamięci, np. dla baz danych), tak więc wchodził tu nieco konflikt interesów.

Do najnowszego kernela trafiły poprawki, które powinny ulżyć przynajmniej części desktopowych użytkowników. Czy to coś dało ciężko mi jednoznacznie powiedzieć. Kopiując dzisiaj backup na pendrive’a obciążenie systemu doszło do 3  jednostek, w porywach 3,5. Mniej niż zazwyczaj (kiedy to potrafi sięgnąć 10-11), ale nie jestem wstanie po jednym teście powiedzieć czy to zasługa nowego kernela, czy po prostu jednorazowego szczęścia. Ale jeżeli to naprawdę działa to byłoby bardzo przyjemnie. Mój system przestaje być responsywny powyżej 6 jednostek obciążenia. Przy 3 można spokojnie pracować. 3 jednostki to mniej więcej obciążenie generowane podczas gry w Starcraft2.

Linux kernel 3.2 – nowe sterowniki do kart sieciowych

Do kernela 3.2 trafiła spora liczba nowych sterowników dla tego typu urządzeń wypuszczonych na rynek w ostatnim czasie. Dobrze się składa, bo kernel 3.2 będzie bazą dla nowego Ubuntu 12.04 Precise Pangolin. Nowe sterowniki obejmują układy bazujące na chipach:

  • Wi-FI
    1. Atheros AR946, 8x, 9580
    2. Marcell 88W8766P
    3. Intel 2000D 2×2 BGN
    4. Centrion Advanced 6205S AGN
  • Ethernet
    1. Realtek RTL8111F
    2. Intel 82599
    3. Brocade 1860
Linux kernel 3.2 – systemy plików

Dwa najpopularniejsze systemy plików – btrfs i ext4 – dostały solidną garść poprawek. Stabilny, szeroko wykorzystywany ext4 może teraz zapisywać dane w blokach po 1 megabajcie. Daje to wyraźny wzrost wydajności, ale kosztem zwiększonego zużycia powierzchni dysku. Benchmarki przeprowadzone przez autora poprawek na infrastrukturze Google dają całkiem niezłe rezultaty – zmniejszyła się liczba odczytów metadanych niezbędna do wykonania powierzonych zadań, a tym samym czas potrzebny na ich zakończenie. To jest oczywiście przykład typowego serwerowego zastosowania nowych funkcji, różnica raczej nie do zauważenia na przeciętnym desktopie. Bardziej mnie interesuje, czy na laptopach nie zmniejszyłoby to zużycia energii.

BTRFS, bardzo szybko rozwijający się system plików, dostał bardzo ciekawą porcję poprawek zmniejszających ryzyko utraty danych oraz ułatwiających ich odzyskiwanie (opcja montowania recovery). W przyszłości ma być domyślnym systemem plików w wielu dystrybucjach desktopowych, ale także jako serworowy system plików dla baz danych Oracle (Unbreakable Linux). Chociaż ten system plików jest wolniejszy od ext4, to dzięki migawkom ma szanse stać się najpopularniejszym systemem plików na desktopach (a przynajmniej dla partycji root). Dlaczego? Migawki zajmują bardzo niewiele miejsca i z łatwością można ich używać jako „punktu przywracania”. Narzędzie aż się prosi o jakieś fajne GUI i włączenie do głównych dystrybucji. Główny system plików (root) zajmuje stosunkowo niewiele miejsca (po wyrzuceniu /home na osobną partycję). Można użyć podpartycji (subvolume) dla każdego z głównych katalogów i robić migawki tylko tych rzeczywiście potrzebnych do odtworzenia systemu (/bin /sbin /boot /etc /lib /usr). Wszystkiego zapewne parę, paręnaście megabajtów na tygodniową migawkę. Przy 500gb dyskach twardych nie ma to znaczenia, a i sam plik z migawką można sobie skopiować jako backup w bezpieczne miejsce.

Ech, trochę się rozpisałem. Jak kogoś temat zainteresował, to zapraszam tutaj.

Linux kernel 3.2 – inne rzeczy

Deweloperzy popracowali nad assemblerową częścią kodu odpowiedzialnego za przetwarzanie algorytmów szyfrujących blowfish oraz sha1. Wszelkie operacje wymagające szyfrowania, przeprowadzane na wielordzeniowych platformach mają teraz około 25% większą wydajność.

Poprawiono obsługę procesorów AMD Bulldozer aby zapobiegać spadkom wydajności w określonych sytuacjach.

Sterowniki graficzne dla kart zawartych w układach Intel Sandy Bridge mogą teraz korzystać z zaawansowanych opcji zarządzania energią. Jednakże jak się okazało, kod za to odpowiedzialny nie jest do końca sprawny i dlatego domyślnie jest wyłączony.

Kernel 3.2 jest pierwszym kernelem, który obsługuje wszystkie nowsze karty graficzne Nvidii (seria 4xx i nowsze). Zmiany w sterowniku Nouveau pozwalają wykorzystywać podstawową akcelerację sprzętową w tych układach oraz dają dostęp do funkcji oszczędzania energii.

Kernel 3.2 otrzymał sterowniki do kamerek internetowych Topro, Pinnacle PCTV HDTV PRO, Technotrend Connect S2-3600, WinTVAero-M

Do kernela 3.2 trafiła pierwsza cześć patchów wyłączających ASPM. Problem szerzej znany jest pod nazwą „czemu moje Ubuntu żre tak dużo prądu” i był szeroko omawiany w kilku wydaniach Poniedzielnika. Kolejny kernel, oznaczony numerem 3.3, ma mieć już zintegrowane wszystkie niezbędne patche. Wiele dystrybucji Linuksa zrobiło to samodzielnie, włączając niezbędny kod do swoich własnych modyfikacji kernela.

Źródła, więcej informacji:
h-online (1,2,3,4,5,)
LWM – huge pages, slow drivers and long delays 

W skrócie

Jest nas więcej niż 1 procent! Według Netmarketshare w ciągu roku udział desktopowych użytkowników Linuksa wzrósł z 1% do 1,41%. HA! Który system operacyjny może się się pochwalić 40% wzrostem zasięgu w ciągu jednego roku? Wartości względne są piękne.

NASA otworzyła portal z własnym oprogramowaniem open source. Pod adresem http://code.nasa.gov/ można znaleźć kilkanaście projektów, głównie narzędzia do analizy danych, ale też takie perełki jak program do wyświetlania trójwymiarowych obrazów Ziemi.

Podczas targów CEF forma Lenovo zaprezentuje ciekawy ultrabook. Podstawowym system operacyjnym jest Windows, napędzany procesorem Intel Core i3/i5/i7 (do wyboru) oraz 8 gigabajtami RAMu. Co w tym takiego ciekawego? Otóż jednym kliknięciem z poziomu Windowsa można wejść w tryb oszczędzania energii, który jest niczym innym niż Linux pracujący na osobnym procesorze firmy Qualcomm. W trybie oszczędzania energii baterii ma wystarczyć na 10 godzin pracy, zaś zainstalowane oprogramowanie pozwala na podstawową pracę desktopową – oglądanie filmów, słuchanie muzyki, przeglądanie internetu. Rozwiązanie bardzo interesujące, ciekawe jak sprawdzi się w praktyce.

Wydano wersję 1.1 FreeDOS-a, otwartoźródłowej implementacji MS DOS. Nowa wersja dodaje podstawową obsługę dysków USB oraz uaktualnione sterowniki, umożliwiające uruchomienie systemu na nowszym sprzęcie. Czasem się przydaje, kiedy trzeba zrobić upgrade BIOS-u lub uruchomić jakieś naprawdę archaiczne aplikacje.

Microsoft wpuści Linuksa na swoją chmurę obliczeniową Azure. Cóż… Klient nasz pan.


Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

17 komentarzy do “Poniedzielnik: wieści ze świata OpenSource. Numer 31

  • PL_kolek

    „kiedy w pamięci znajduje się zbyt wiele bardzo dużych i niepodzielnych danych (co prowadzi do szybkiej defragmentacji). ”

    Jeśli dobrze rozumiem, to fragmentacji miało być ;). Fajny, długi poniedzielnik (długa niedziela?). A ten znany problem z pendrive’ami był u mnie znany – bo sam doświadczyłem „zmuleń”, ale nieznany, bo nie wiedziałem, że tak powszechny. Dobrze, że poprawili.

  • makson

    „Wydano wersję 1.1 FreeDOS-a, otwartoźródłowej implementacji MS DOS. Nowa wersja dodaje podstawową obsługę dysków USB oraz uaktualnione sterowniki, umożliwiające uruchomienie systemu na nowszym sprzęcie. Czasem się przydaje, kiedy trzeba zrobić upgrade BIOS-u lub uruchomić jakieś naprawdę archaiczne aplikacje.”

    Niestety nie można tego FreeDOS-a uruchomić jako liveCD i dlatego do upgrade-u BIOS-u średnio się nadaje. Do tego celu więc ciągle polecam FreeDOS 1.1 test3, póki nie wprowadzą opcji liveCD do stabilnej wersji systemu.

  • Walgard

    A czy ten problem z pendrive’ami to ten sam problem co z cdrom’ami, które też zamulają pracę kompa zwłaszcza podczas „rozpędzania” płyty?

  • Dwimenor Autor wpisu

    @Walgard
    Raczej nie…ale szczerze mówiąc po raz pierwszy spotykam się z takim problemem jak opisujesz, nigdy o czymś takim nie słyszałem ani nie doświadczyłem. Jakieś linki, co bym mógł pokopać za tematem?

  • chmurli

    tak, problem z wysokim loadem dotyczy chyba wszystkich urządzeń IO.
    „W moim przypadku potrafi wskazywać nawet ponad 10 (oznacza to, że w przeciągu ostatniego czasu średnio 10 zadań czekało w kolejce na wykonanie, ponieważ system nie nadążał). ”
    masz 1 rdzeniowy CPU? Wartości load’a są bardzo wzgledne, gdyż zależą od tego ilu masz rdzeniowy procesor. Load równy 10 to np. na kompie 16 rdzeniowym jest niska wartość, a load=2 na kompie jedno rdzeniowym to już tragedia 🙂

  • psokol

    Właśnie odkryłem poniedzielniki – czegoś takiego brakowało mi od dawna. Profesjonalne podejście do tematu no i lekki, swobodny styl. Czekam na więcej i pozdrawiam 🙂

  • Dwimenor Autor wpisu

    Dotyczyło to wszystkich dystrybucji, ale nie dotyczył wszystkich pendrivów. Podstawowym powodem jest to, jak kernel (źle) radził sobie z kopiowaniem na powolne urządzenia, Przy czym powolność mogła być spowodowane zarówno archaicznym urządzeniem (transmisja przez usb1), dużą defragmentacją systemu plików na urządzeniu, kiepskim wykonaniem urządzenia (firmy no_name) itp.

    Odsyłam do google dla zapytań:
    high cpu usage while copy on usb drive
    high system load while copy on usb drive

  • PL_kolek

    Jeśli się nie mylę to fragmentacja oznacza rozdrobnienie dużych plików po całym dysku, a defragmentacja to proces sklejania ich do kupy, żeby wszelkie operacje działały szybciej. Więc cały czas obstaje, że chodzi Ci o dużą fragmentację plików na urządzeniu (no i w tekście w pamięci RAM).

  • prezes19

    Yes Yes Yes nareszcie moja karta sieciowa (Centrion Advanced 6205S AGN) zacznie pracować normalnie. Aktualnie ma problem z łączeniem się z sieciami w standardzie N.