Jądro Linux: automatyczne grupowanie procesów

Jądro Linux: automatyczne grupowanie procesów
26.11.2010 16:12
Jądro Linux: automatyczne grupowanie procesów
Źródło zdjęć: © linux.org

Obecnie prowadzone są prace nad wersją 2.6.37 jądra Linux, a ponadto pojawiają się kolejne wydania stabilnej gałęzi kernela, które naprawiają błędy poprzedników. Tymczasem koniec cyklu życiowego osiągnęła wersja 2.6.35.

W ubiegłym tygodniu wśród programistów Linuksa rozgorzała dyskusja dotycząca łaty liczącej około 20. linii kodu. Niewielka zmiana związana z planistą systemu i automatycznym grupowaniem procesów znacznie skróciła czas odpowiedzi aplikacji w sytuacjach, w których następuje całkowite obciążenie CPU. Działanie poprawki najłatwiej zaobserwować, odtwarzając film wideo czy dokonując interakcji ze środowiskiem graficznym, w trakcie gdy procesor zostanie poważnie obciążony przez dużą liczbę procesów (np. kompilacją jądra). W systemie bez łaty w praktyce nie da się normalnie pracować przy przeciążeniu CPU.

288756175074506899

Warto odnotować, że dyskusja na temat zagadnienia szybkości odpowiedzi OS-u rozpoczęła się mniej więcej miesiąc temu. Natomiast poprawka zyskała rozgłos dopiero po pewnych zmianach i gdy w ubiegłym tygodniu pochwalił ją Linus Torvalds, który stwierdził, że jego system znacznie lepiej reagował na akcje użytkownika podczas kompilowania jądra.

Większa szybkość reakcji jest osiągana dzięki temu, że sesje założone za pomocą funkcji setsid() (np. demony, prawdziwe terminale czy też pseudoterminale takie jak Xterm) tworzą automatycznie własną, możliwą do zarządzania przez mechanizm Cgroups grupę procesów. Wpływa to na sposób, w jaki planista procesów przydziela dostępny czas CPU. Najlepiej zobrazuje to uproszczony przykład, w którym odtwarzacz multimedialny odgrywa klip wideo na komputerze z procesorem jednordzeniowym, podczas gdy jednocześnie w terminalu Xterm kompilowane jest jądro za pomocą dziewięciu równolegle wykonywanych zadań (make -j 9).

W normalnym przypadku planista przydzieliłby każdemu zadaniu po 1. procent czasu. To czasami za mało, aby zapewnić płynne odtwarzanie klipów wideo. Jeśli w tym samym czasie interfejs pulpitu ma przetwarzać wprowadzanie znaków z klawiatury oraz ruchy myszy, łącznie czas CPU musi być podzielony na jedenaście procesów.

Tymczasem dzięki opracowanej łacie uruchomione w pseudoterminalu procesy kompilatora są umieszczane w jednej, a procesy środowiska pulpitu i uruchomionego za jego pośrednictwem odtwarzacza multimedialnego w drugiej grupie. Jeśli w obu grupach działają procesy łącznie zajmujące wszystkie zasoby procesora, planista procesów przydziela każdej grupie po 5. procent czasu CPU. W ramach jednej grupy czas też jest dzielony sprawiedliwie – każde zadanie kompilatora otrzymuje wówczas nie 10, lecz około 5,6 procent czasu CPU. Dzięki temu grupa, w której działają pulpit i odtwarzacz multimedialny, ma do dyspozycji więcej czasu procesora, co powinno wystarczyć do płynnego odtworzenia klipu i jeszcze pozostawia rezerwę. Dzięki niej środowisko pulpitu szybko reaguje na znaki wprowadzane z klawiatury i sterowanie myszą.

W przypadku szybkich procesorów odtwarzacz multimedialny mógłby jednak nie wykorzystać w pełni przydzielonego mu czasu CPU i oddać kontrolę planiście w momencie, gdy nie miałby już nic więcej do roboty. Planista przydzieliłby wówczas czas innym procesom, a wtedy grupa kompilująca jądro ostatecznie otrzymałaby ponad 50 procent czasu CPU – kompilacja nie powinna zatem trwać znacznie dłużej niż bez automatycznego grupowania procesów.

Narzędzia systemowe

Taki tryb pracy można też skonfigurować w starszych kernelach i bez wspomnianej łaty. W tym celu – jeśli są skonfigurowane grupy kontrolne procesów (cgroups) – trzeba jedynie dodać dwa wywołania w plikach startowych basha, stwierdził Lennart Poettering, twórca programów Pulseaudio i Systemd. Porównywalną metodę zastosowaną bezpośrednio w Systemd uważa on za elegantszą i bardziej elastyczną niż automatyczne grupowanie procesów przez jądro. Poettering zaimplementował potrzebne funkcje i zintegrował ją w module Systemd, który wraz z odpowiednim rozszerzeniem dla terminala obecnego w środowisku GNOME zakłada grupy w podobny sposób, w jaki robi to opisana wyżej łata dla kernela. Ted Ts'o ('tytso') zauważył, że można by tak zmodyfikować specyfikację plików działających w środowisku pulpitu, aby także inne aplikacje automatycznie były uruchamiane w ramach
własnej grupy
.

Na temat zalet i wad obydwu rozwiązań wywiązała się długa dyskusja – i to dość gorąca. Także Torvalds nie szczędził miejscami ostrych słów, ale później uspokoił debatę, oświadczając, że nic nie stoi na przeszkodzie, aby stosować obydwie metody.

I właśnie do tego zdaje się zmierzać sytuacja, ponieważ opiekun planisty procesów poinformował, że zamierza zintegrować łatę grupującą procesy w wersji 2.6.38 jądra Linux; obecnie jednak pracuje on jeszcze nad rozwiązaniem jednego problemu w kodzie. Automatyczne grupowanie może być włączane i wyłączane za pomocą opcji konfiguracji, dzięki czemu dystrybucje, których twórcy chcą korzystać wyłącznie z mechanizmu w Systemd, mogą bez problemu zdezaktywować odpowiednie funkcje w kernelu.

Większości użytkowników powinno być raczej obojętne, która z metod grupowania będzie stosowana –. najważniejsze, aby pulpit reagował płynnie i klipy wideo się nie zacinały, nawet jeśli inne procesy generują spore obciążenie CPU.

Status jądra Linux

Na początku bieżącego tygodnia Linus Torvalds opublikował trzecią wersję przedwstępną jądra Linux 2.6.37, a w informacji o wydaniu wyraził zadowolenie, że tym razem prace przebiegały nad wyraz spokojnie –. co oznacza, że inni programiści kernela nadsyłali relatywnie niewiele zmian.

W poniedziałek wieczorem w jego ślady poszedł Greg Kroah-Hartman, który upublicznił cztery nowe wersje stabilnego jądra: 2.6.27.56, 2.6.32.26, 2.6.35.9 i 2.6.36.1. Pominął niektóre z poprawek z jądra 2.6.36, zostawiając je na wydanie 2.6.36.2. Z kolei seria 2.6.35 osiągnęła wraz z wersją 2.6.35.9 tak zwany koniec życia (end of life) i nie będzie otrzymywać dalszych aktualizacji; użytkownicy tej serii kernela powinni zatem przesiąść się na wersję 2.6.36, jak zaleca Kroah-Hartman w e-mailu do wydania tej wersji.

W skrócie

Jądro Linux

- Fundacja Linux Foundation zaprezentowała w Sieci internetowe seminarium pt. "Introduction to Btrfs with Chris Mason", które można pobrać za darmo po rejestracji. Tematem prezentacji jest Btrfs, który jest określany jako system plików następnej generacji dla Linuksa. Prowadzącym jest główny programista tego systemu Chris Mason. Przedstawia on przegląd najnowszych informacji związanych z pracami nad Btrfs i wyjaśnia bliżej możliwości obsługi macierzy RAID 5 i RAID 6.
- Christoph Hellwig opublikował październikowy przegląd informacji na temat systemu plików XFS, w którym wspominał m.in. o nowościach zintegrowanych w wersji 2.6.37 kernela.
- Na początku miesiąca na liście dyskusyjnej LKML znów wywiązała się dyskusja dotycząca zmian obecnych w jądrze systemu Android, a niewchodzących w skład oficjalnego jądra Linux. Długoletni programista jądra, pracujący obecnie w Google'u Ted 'tytso' Ts'o napisał, że również kernele w korporacyjnych dystrybucjach Linuksa takich jak Red Hat czy też Novell/SUSE zawierają liczne łaty, których nie ma w oficjalnym jądrze, i że nie wywołuje to dyskusji. Jego zdaniem to dziennikarze i blogerzy nadali toczącej się debacie otoczkę kontrowersyjności, zupełnie nieadekwatną do sytuacji.

X serwer

- Firma AMD opublikowała w ubiegłym tygodniu wersję 10.11 znanego jako Catalyst lub Fglrx własnościowego sterownika graficznego, nie publikując tym razem dokumentu Release Notes.
- Jeden z pracowników Nvidii wyjaśnił ostatnio na łamach oficjalnego forum pomocy technicznej dla Linuksa nvnews.net, że jego firma nie planuje wprowadzenia obsługi dla alternatywnego wobec X serwera podsystemu graficznego Wayland.
- Programista Waylanda Kristian Høgsberg wydał na licencji LGPLv2 publikowany do tej pory na licencji MIT kod modułów libwayland-server i libwayland-client.

Narzędzia systemowe, sterowniki, narzędzia programistyczne

- Thomas Gleixner i Ingo Molnar zaprezentowali program do śledzenia kodu trace, który umożliwia lepszą analizę procesów zachodzących w systemie w porównaniu z innych istniejącymi narzędziami.
- Lennart Poettering opublikował na łamach bloga informacje na temat aktualnego stanu rozwoju Systemd, wymieniając sporo z wprowadzonych ostatnio zmian. Mechanizm ten, będący alternatywą dla SysV-Init i Upstartu, zawiera teraz m.in. własną implementację mechanizmu Readahead i obsługuje defragmentację systemu Btrfs, co powinno skrócić czas bootowania systemu, szczególnie na starszych komputerach. Poettering przygotował ponadto czwartą część serii "Systemd for administrators".
- Michael Kerrisk wydał wersję 3.31 podręcznika systemowego man-pages, w którym pojawił się opis kolejnego wywołania systemowego funkcji getrlimit oraz flagi programu Inotify; elementy te zostały wprowadzone w jądrze Linux 2.6.36. Ponadto na łamach bloga Kerrisk zareklamował wydaną niedawno książkę własnego autorstwa "The Linux Programming Interface (TLPI)"; kod źródłowy programów wykorzystanych w książce w charakterze przykładów został opublikowany w blogu autora.
- Douglas Gilbert przygotował wersję 1.06 określanego jako hdparm for SCSI disks programu Sdparm.
- W serwisie IBM Developerworks ukazał się artykuł M. Tima Jonesa "Virtual networking in Linux", w którym znajdziey przegląd możliwości konfiguracji sieci w środowisku wirtualnym.
- Na stronie internetowej konferencji Linux Plumbers Conference umieszczono slajdy z wielu wykładów.
- W artykule "Kernel-Report" założyciel i szef serwisu LWN.net Jonathan Corbet zaprezentował przegląd najświeższych i oczekiwanych w najbliższej przyszłości zmian w jądrze Linux.
- Najnowsze ulepszenia w obecnych w jądrze narzędziach do śledzenia kodu zostały podsumowane przez Arnaldo Melo w artykule "Perf Tools: Recent Improvements".
- Tekst Runtime Power Management in the PCI Subsystem Rafała Wysockiego objaśnia funkcjonalność wprowadzonych w ostatnim czasie zmian w kernelu, które pozwalają korzystać z możliwych do stosowania w czasie działania systemu mechanizmów oszczędzania energii obecnych w urządzeniach podłączanych za pośrednictwem magistrali PCI.

wydanie internetowe www.heise-online.pl

Oceń jakość naszego artykułuTwoja opinia pozwala nam tworzyć lepsze treści.
Udostępnij:
Wybrane dla Ciebie
Komentarze (4)