Planista całkowicie sprawiedliwy. Algorytm, śledzenie działania i strojenie

Podobne dokumenty
Szeregowanie procesów w Linuksie - trendy rozwojowe

Tworzenie i obsługa wirtualnego laboratorium komputerowego

Opracowanie dodatkowego rodzaju pytań dla systemu Moodle

Uniwersytet Mikołaja Kopernika w Toruniu Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Instytut Fizyki

System Clonezilla archiwizacja i odtwarzanie partycji dyskowych

Nadzorowanie stanu serwerów i ich wykorzystania przez użytkowników

Uniwersytet Mikołaja Kopernika w Toruniu. Profilowanie ruchu sieciowego w systemie GNU/Linux

Monitorowanie i zarządzanie urządzeniami sieciowymi przy pomocy narzędzi Net-SNMP

Webowy generator wykresów wykorzystujący program gnuplot

Międzyplatformowy interfejs systemu FOLANessus wykonany przy użyciu biblioteki Qt4

Zarządzanie certyfikatami w systemie OpenVPN

Tworzenie maszyn wirtualnych przy pomocy systemu FAI

Aplikacja webowa do zarządzania maszynami wirtualnymi

Zdalne monitorowanie i zarządzanie urządzeniami sieciowymi

Bezpieczeństwo systemów i lokalnej sieci komputerowej

Mechanizm szeregowania zadań w jądrach z serii 2.6 systemu GNU/Linux

Prezentacja systemu RTLinux

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Uniwersytet Mikołaja Kopernika. Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej

Usługi sieciowe w kontenerach systemu operacyjnego CoreOS

Jadro Linux 2.6. a zadania czasu rzeczywistego. Artur Lewandowski. Jądro Linux 2.6 p.1/14

Jednolite zarządzanie użytkownikami systemów Windows i Linux

Programowanie współbieżne Wykład 2. Iwona Kochańska

1.1 Definicja procesu

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

Systemy operacyjne. Paweł Pełczyński

Opis efektów kształcenia dla modułu zajęć

Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) Miejsce systemu operacyjnego w architekturze systemu komputerowego

Procesy, wątki i zasoby

Uniwersytet Mikołaja Kopernika. Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Instytut Fizyki

Rok akademicki: 2012/2013 Kod: EAR s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

4. Procesy pojęcia podstawowe

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

System zdalnego nadzoru i zarządzania małą elektrownią wodną

Podstawowe zagadnienia

WYKŁAD 3 Jądro systemu i procesy. Marcin Tomana Wyższa Szkoła Informatyki i Zarządzania

4. Procesy pojęcia podstawowe

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Czujniki obiektowe Sterowniki przemysłowe

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Zarządzanie procesorem

Podstawy Informatyki Systemy operacyjne

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Systemy operacyjne II

Systemy wbudowane. Systemy operacyjne czasu rzeczywistego

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią

System zarządzający grami programistycznymi Meridius

KARTA KURSU. Wstęp do programowania

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

Systemy operacyjne III

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Opisy efektów kształcenia dla modułu

4. Procesy pojęcia podstawowe

Karta Opisu Przedmiotu

wg rozdzielnika Wrocław, dnia r. TXU PG

E-1EZ1-03-s2. Elektrotechnika I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

Technologie informacyjne (2) Zdzisław Szyjewski

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1

Warstwy systemu Windows 2000

INSTRUKCJA I WSKAZÓWKI

Opis administracji terminali ABA-X3 v.1.5.0

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Opis efektów kształcenia dla modułu zajęć

Elektrotechnika I stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

Systemy operacyjne. wykład dr Marcin Czarnota laboratorium mgr Radosław Maj

Systemy operacyjne III

Informatyka, systemy, sieci komputerowe

Zarządzanie pamięcią operacyjną

Podstawy informatyki. Izabela Szczęch. Politechnika Poznańska

Przykłady implementacji planowania przydziału procesora

Uniwersytet Mikołaja Kopernika w Toruniu. Robert Ospara. Wizualizacja dopasowania wyrażeń regularnych Perla z użyciem biblioteki Gtk+

PRZEWODNIK PO PRZEDMIOCIE

Podstawy programowania. Wprowadzenie

INFORMATYKA PLAN STUDIÓW NIESTACJONARNYCH. Podstawy programowania Systemy operacyjne

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Budowa i zasada działania komputera. dr Artur Bartoszewski

PRZEWODNIK PO PRZEDMIOCIE

Projektowanie. Projektowanie mikroprocesorów

APD. Archiwum Prac Dyplomowych w USOS. Mariusz.Czerniak@umk.pl

Szeregowanie procesów w Linuksie - trendy rozwojowe

Kernel Kompilacja jądra

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Procesy, zasoby i wątki

Systemy operacyjne i sieci komputerowe. 1 SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Etapy uruchamiania systemu

Procesy, zasoby i wątki

Procesy, zasoby i wątki

KARTA KURSU. Systemy operacyjne

Podstawy Informatyki Systemy sterowane przepływem argumentów

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2010/2011

UNIX: architektura i implementacja mechanizmów bezpieczeństwa. Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci

Wstęp do Informatyki. Klasyfikacja oprogramowania

Virtual Grid Resource Management System with Virtualization Technology

Przykładowe sprawozdanie. Jan Pustelnik

ICD Wprowadzenie. Wprowadzenie. Czym jest In-Circuit Debugger? 2. O poradniku 3. Gdzie szukać dodatkowych informacji? 4

Gra-zabawka dla niemowląt przygotowana z użyciem w Unity 3D

Transkrypt:

Uniwersytet Mikołaja Kopernika Wydział Fizyki, Astronomii i Informatyki Stosowanej Katedra Informatyki Stosowanej Rafał Szklarski nr albumu: 189226 Praca magisterska na kierunku Fizyka Techniczna Planista całkowicie sprawiedliwy. Algorytm, śledzenie działania i strojenie Opiekun pracy dyplomowej dr hab. Jacek Kobus Zakład Mechaniki Kwantowej Toruń 2009 Pracę przyjmuję i akceptuję... data i podpis opiekuna pracy Potwierdzam złożenie pracy dyplomowej... data i podpis pracownika dziekanatu

Składam serdeczne podziękowania Panu dr hab. Jackowi Kobusowi za okazywaną cierpliwość i pomoc w trakcie przygotowywania niniejszej pracy, za cenne porady, a także za życzliwą i miłą atmosferę sprzyjającą pracy naukowej. Dziękuję również moim bliskim za cierpliwość oraz wiarę i wsparcie w dążeniu do celu. UMK zastrzega sobie prawo własności niniejszej pracy magisterskiej w celu udostępnienia dla potrzeb działalności naukowo-badawczej lub dydaktycznej

Spis treści 1 Wstęp 7 2 Planista systemu Linux 9 2.1 Podział czasu.................................. 9 2.2 Polityki planowania............................... 10 2.3 Priorytety dynamiczne i statyczne w O(1).................. 13 3 Planista CFS struktury danych 15 3.1 Deskryptor procesu............................... 15 3.1.1 Pole sched class............................ 16 3.1.2 Pola se i rt............................... 17 3.2 Kolejki zadań gotowych............................ 19 3.2.1 Pola cfs i rt.............................. 20 3.3 Struktura sched class............................. 21 3.4 Struktura sched entity............................ 26 3.5 Struktura rq................................... 30 3.6 Struktura cfs rq................................ 34 4 Planista CFS działanie i implementacja 36 4.1 Ogólny schemat algorytmu........................... 36 4.2 Sterowanie pracą planisty........................... 38 4.2.1 Parametry pracy planisty....................... 38 4.2.2 Cechy planisty............................. 40 4.3 Implementacja algorytmu CFS......................... 41 4.3.1 Funkcja scheduler tick()...................... 41 4.3.2 Funkcja schedule().......................... 42 4.3.3 Funkcja try to wake up()....................... 45 4.4 Funkcje pomocnicze planisty CFS....................... 48 4.4.1 Funkcja update curr()........................ 48 4.4.2 Funkcja calc delta fair()...................... 48 4.4.3 Funkcja update min vruntime()................... 49 4.4.4 Funkcja sched slice()........................ 50 4.4.5 Funkcja place entity()........................ 50 4.4.6 Funkcja wakeup gran()........................ 51 5 Moduł i program schedtrace 52 5.1 Moduły jądra.................................. 53 5.1.1 Budowa................................. 53 5.1.2 Kompilacja............................... 55 5.1.3 Ograniczenia.............................. 57 5.2 Pseudosystem plików proc........................... 57 5.3 Mechanizm punktów śledzenia......................... 63 5

5.4 Sterowanie pracą modułu schedtrace..................... 65 5.4.1 Plik /proc/schedtrace/available tracepoints.......... 65 5.4.2 Plik /proc/schedtrace/available fields.............. 67 5.4.3 Plik /proc/schedtrace/tracing enabled............. 70 5.4.4 Plik /proc/schedtrace/trace.................... 70 5.5 Program schedtrace............................... 71 6 Przykłady działania planisty CFS 73 Literatura 79 A Implementacja modułu schedtrace 80 A.1 Konstruktor modułu.............................. 80 A.2 Destruktor modułu............................... 85 A.3 Typy wyliczeniowe............................... 86 A.4 Zmienne globalne................................ 88 A.5 Struktura trace entry............................. 90 A.6 Zarządzanie listą................................ 91 A.7 Sondy...................................... 93 A.8 Pliki modułu w katalogu /proc/schedtrace................. 98 A.8.1 tracing enabled............................ 98 A.8.2 available fields............................ 99 A.8.3 available tracepoints......................... 101 A.8.4 trace.................................. 102 B Implementacja programu schedtrace 111 C Instalacja modułu i programu schedtrace 123 6

1 Wstęp Po włączeniu komputera do jego pamięci jest ładowane jądro systemu operacyjnego, czyli specjalny program odpowiedzialny za zarządzanie jego zasobami: pamięcią, jednostką centralną oraz urządzeniami wejścia-wyjścia. Współczesne systemy operacyjne są złożonymi programami, które pozwalają na realizację wieloprocesowości i tym samym na równoczesne korzystanie z systemu komputerowego wielu użytkownikom. W przypadku systemu komputerowego wyposażonego w pojedynczą jednostkę centralną w danej chwili może się wykonywać tylko kod jednego procesu może to być proces systemu operacyjnego, bądź proces użytkownika. Jądro musi zatem dysponować jakimś sposobem rozdziału cykli jednostki centralnej pomiędzy konkurujące ze sobą procesy. Przydziałem jednostki centralnej poszczególnym procesom zajmuje się podsystem jądra systemu operacyjnego zwany planistą. Celem niniejszej pracy jest omówienie działania nowego planisty jądra systemu Linux, tzw. planisty całkowicie sprawiedliwego (ang. Completely Fair Scheduler). Planista CFS został opracowany w 2007 r. przez Ingo Molnara i został włączony do jądra 2.6.23 zastępując dotychczasowego planistę O(1) [1]. Planista O(1) pojawił się w jądrze 2.5 w 1995 roku, więc był używany na tyle długo, aby ujawniły się wszystkie jego mocne i słabe strony. Podstawową jego wadą jest bardzo złożony kod, który utrudnia poprawianie wszelkich usterek i dodawanie nowych funkcji. Ponadto planista O(1) stosuje skomplikowane heurystyki do oceny stopnia interaktywności zadań, które w pewnych sytuacjach zawodziły. Skutkowało to przydzielaniem przez planistę nieadekwatnych kwantów czasu dla zadań, co powodowało pogorszenie ogólnej wydajności systemu. Nowy planista rezygnuje z heurystyk i ma całkowicie przebudowany mechanizm decyzyjny dla zadań zwykłego typu (zadań SCHED OTHER). Implementując ten typ zadań Molnar wykorzystał pomysł Cona Kolivasa [2] pozwalający na sprawiedliwy podział cykli jednostki centralnej między wszystkie zadania w systemie (z pominięciem zadań czasu rzeczywistego). Ta idea została zastosowana po raz pierwszy w napisanym przez Kolivasa planiście RSDL (ang. Rotating Staircase DeadLine) [2]. Ten planista traktuje wszystkie zadania jednakowo, tzn. zadania dostają tyle samo czasu niezależnie od swojego charakteru (znika rozróżnienie na zadania uzależnione od jednostki centralnej oraz od operacji wejścia-wyjścia). Planista RSDL sprawdził się doskonale i dlatego Molnar postanowił na nim oprzeć swoją implementację nowego planisty jądra systemu Linux. 1 Praca składa się z trzech zasadniczych części. Po pierwsze, w pracy omówiony został przydział czasu jednostki centralnej w systemach z podziałem czasu na przykładzie planisty O(1) oraz CFS. Szczególny nacisk położono na wskazanie kluczowych różnic w mechanizmie planowania stosowanym przez planistów O(1) i CFS. Po drugie, praca omawia najważniejsze zmiany związane z implementacje nowego planisty. Wyjaśnia na czym polega modularność planisty, która przyczyniła się do zasadni- 1 Informacje o kontrowersjach jakie to wywołało można znaleźć pod adresem http://kerneltrap. org/node/8059. 7

czego uporządkowania i uproszczenia kodu zarządzającego poszczególnymi klasami zadań. Praca opisuje także główne zmiany jakie Molnar wprowadził do mechanizmu planowania zadań typu SCHED OTHER. W opisie implementacji najważniejszą kwestią jest prezentacja mechanizmu wyboru nowego zadanie do uruchomienia oraz charakterystyka tych momentów działania systemu operacyjnego, kiedy ten wybór jest dokonywany. Kwestie związane z realizacją przełączenia procesora od jednego zadania do drugiego są pomijane. Warto podkreślić, że w planiście CFS zadbano o to, aby planowanie na serwerach mogło przebiegać równie sprawnie jak na komputerach biurkowych i przenośnych. Osiągnięto to udostępniając w nowym planiście szereg parametrów, poprzez które można wpływać w czasie rzeczywistym na jego działanie i tym samym na działanie całego systemu. Praca zawiera szczegółowe omówienie znaczenia tych parametrów, dzięki czemu administrator uzyskuje możliwość strojenia działania planisty CFS. Po trzecie wreszcie, praca zawiera opis architektury, implementacji oraz działania modułu schedtrace służącego do śledzenia pracy planisty. Dzięki niemu administrator ma możliwość oceny wpływu wybranych parametrów planisty na jego działanie. Moduł ten pobiera dane z wewnętrznych struktur jądra wykorzystując mechanizm tracepoints, który umożliwia śledzenie działania wybranych funkcji jądra. Te dane są udostępniane programom z przestrzeni użytkownika poprzez pseudosystem plików proc, a także możliwe jest wpływanie z tego poziomu na rodzaj danych gromadzonych przez moduł. W ten sposób uzyskano możliwość drobiazgowego śledzenia pracy planisty. Dodatkowy program schedtrace pozwala na uruchamianie programów testowych i jednoczesne włączanie rejestrowania wybranych danych. W ten sposób użytkownik może obserwować jak zmiana parametrów pracy planisty oraz priorytetów zadań i polityki ich przetwarzania wpływa na sposób traktowania tych zadań przez system. Zarówno moduł jak i program są udostępniane (w formie paczki tgz) w ramach licencji GNU GPL [3]. Pracę zamykają dodatki, w których opisano implementację modułu i programu oraz instalację tych narzędzi. 8