Szeregowanie zadań w Linux Kernel 2.6. Daniel Górski Przemysław Jakubowski

Podobne dokumenty
Szeregowanie zadań we współczesnych systemach operacyjnych. Szeregowanie zadań w Linux Kernel 2.6

Linux Adam Bułak Ha Nhat Viet Damian Klata

Przykłady implementacji planowania przydziału procesora

przydziału procesora Przykłady implementacji planowania przydziału procesora Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Zarządzanie w systemach i sieciach komputerowych. Dr inż. Robert Wójcik. Wykład 3. Zarządzanie przydziałami procesora w systemach komputerowych

Przykłady implementacji planowania przydziału procesora. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

J. Ułasiewicz Programowanie aplikacji współbieżnych 1

Szeregowanie procesów w Linuksie - trendy rozwojowe

Wykład 6 Planista procesora funkcja schedule. Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB

Planowanie przydziału procesora

Zarządzanie procesorem

Wykład 6. Planowanie (szeregowanie) procesów (ang. process scheduling) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Linux Scheduler Szeregowanie procesów w systemie Linux. Andrzej Ambroziewicz Piotr Marat Mieszko Michalski

Zarządzanie procesami i wątkami

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

BSD - alternatywa dla Linuksa

Planowanie przydziału procesora

Prezentacja systemu RTLinux

Planowanie przydziału procesora

Przełączanie kontekstu. Planista średnioterminowy. Diagram kolejek. Kolejki planowania procesów. Planiści

Procesy, wątki i zasoby

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

Planowanie przydziału procesora

Zarządzanie wieloserwerowym środowiskiem SAS z wykorzystaniem SAS Grid Managera. Katarzyna Wyszomierska

Ogólna koncepcja planowania. Planowanie przydziału procesora. Komponenty jądra w planowaniu. Tryb decyzji. Podejmowanie decyzji o wywłaszczeniu

projektowanie systemu

Systemy operacyjne III

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

4. Procesy pojęcia podstawowe

Planowanie przydziału procesora CPU scheduling. Koncepcja szeregowania. Planista przydziału procesora (planista krótkoterminowy) CPU Scheduler

Fazy procesora i wejścia-wyjścia. Planowanie przydziału procesora. Czasy faz procesora. Planowanie przydziału procesora

dr inż. Jarosław Forenc

Planowanie przydziału procesora

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

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

4. Procesy pojęcia podstawowe

Wątki jądra. Maciej Szwaja

Zarządzanie pamięcią w systemie operacyjnym

Informatyka, systemy, sieci komputerowe

Real-Time Linux. Wprowadzenie

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

Proces y i y w i ąt ą ki

4. Procesy pojęcia podstawowe

Porządek dostępu do zasobu: procesory obszary pamięci cykle procesora pliki urządzenia we/wy

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.3

Podstawowe zagadnienia

PROGRAMOWANIE SYSTEMÓW WBUDOWANYCH

Procesy, zasoby i wątki

Procesy, zasoby i wątki

Procesy, zasoby i wątki

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

Wielowątkowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Optymalizacja. Przeszukiwanie tabu

Simulator of Operating System

Mariusz Rudnicki PROGRAMOWANIE WSPÓŁBIEŻNE I SYSTEMY CZASU RZECZYWISTEGO CZ.3

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

Materiały pomocnicze 1

projekt akademicki w Institute for Mining and Technology of New Mexico. Autor Victor Yodaiken FSMLabs komercyjna odmiana RTLinuxPro

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

Notacja RPN. 28 kwietnia wyliczanie i transformacja wyrażeń. Opis został przygotowany przez: Bogdana Kreczmera.

Algorytm selekcji Hoare a. Łukasz Miemus

Architektura komputerów

- - Ocena wykonaniu zad3. Brak zad3

Administracja i programowanie pod Microsoft SQL Server 2000

SYSTEMY OPERACYJNE PROCESORÓW SYGNAŁOWYCH

Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++

Program jest więc strukturą statyczną zapisaną na jakimś nośniku. Natomiast proces jest wykonującym się programem.

1.1 Definicja procesu

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

... Ireneusz Mrozek. Wydział Informatyki

Wprowadzenie do systemu Minix

Podstawy Informatyki Systemy operacyjne

Kompletna dokumentacja kontenera C++ vector w -

Systemy operacyjne oparte na mikrojądrze na przykładzie Minix3. Maciej Łaszcz, Wojciech Łowiec, Patryk Spanily 2 XII 2008

Systemy operacyjne. wykład 11- Zakleszczenia. dr Marcin Ziółkowski. Instytut Matematyki i Informatyki Akademia im. Jana Długosza w Częstochowie

1. Szeregowanie w systemach czasu rzeczywistego

Informacje o wybranych funkcjach systemu klasy ERP Zarządzanie produkcją

Planowanie przydziału procesora

ZADANIE 1. Ważenie (14 pkt)

Język C zajęcia nr 5

SYSTEMY OPERACYJNE LABORATORIUM 2014/2015

Zarządzanie pamięcią operacyjną

E S - uniwersum struktury stosu

Lab 9 Podstawy Programowania

Metody obsługi zdarzeń

Układy VLSI Bramki 1.0

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

SOE Systemy Operacyjne Wykład 8 Pamięć wirtualna dr inż. Andrzej Wielgus

Systemy Operacyjne - zarządzanie procesami

Szpieg 2.0 Instrukcja użytkownika

Zwielokrotnianie wejścia wyjścia

Content Manager 2.0 podręcznik użytkownika

Temat: System zarządzania zadaniami i ich komunikacja (Scheduler, MessageBox).

Content Manager 2 podręcznik użytkownika

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu. Blok kontrolny procesu

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Transkrypt:

Szeregowanie zadań w Linux Kernel 2.6 Daniel Górski Przemysław Jakubowski

Plan prezentacji Szeregowanie procesów - Szeregowanie - Cele szeregowania - Scheduler 2.6 - Struktury danych używane w 2.6 - Multiprocesorowość - Tuning - 2.4 versus 2.6

Wstęp do szeregowania Sprawiedliwość - zapobieganie zagłodzeniu Kosztowność - czas na zmienę kontekstu Dokonywanie wyboru

Scheduler Cele: Duża inteakcyjność podczas obciążenia systemu Sprawiedliwość Priorytety

Cele... Procesy czasu rzeczywistego Pełne wykorzystanie multiprocesorowości - brak globalnych struktur Szeregowanie w czasie O(1)

Projekt schedulera 2.6 140 poziomów priorytetu - mniejsza wartość większy priorytet Dwie tablice priorytetów dla każdego procesora - tablica aktywnych: te którym zostały jakieś kwanty czasu - tablica zużytych - są dostępne poprzez wskaźniki Wskaźniki są zamieniane przy zmianie epoki

Kolejka dla jednego procesora

Algorytm O(1) Wybierany jest największy priorytet z co najmniej jednym zadaniem w kolejce - Pierwsza tablica w bitmapie zero jedynkowej (operacja bitowa szybka) Pierwszy proces z wybranej kolejki jest uruchamiany - Czas stały Niezależnie od ilości procesów, wybór nowego do wykonywania zajmuje czas stały Algorytm deterministyczny

O(1)... W momencie gdy proces kończy działanie jest przenoszony do kolejki zużytych (choć nie zawsze) Jest obliczany dla niego nowy priorytet dynamiczny i nowy kwant czasu Zamiast n operacji przy zmianie epoki, mamy jedno wyliczanie przy każdej zmianie kontekstu

Strategia szeregowania w 2.6 140 priorytetów 0-99 priorytety procesów czasu rzeczywistego 100-140 priorytety procesów użytkownika Trzy różne strategie szeregowania - Jedna dla normalnych zadań - Dwie dla procesów czasu rzeczywistego

Strategia szeregowania zwykłych procesów Każdy proces ma wartość Nice (static_priority) PRIO = MAX_RT_PRIO + NICE + 20 - bonus Procesy są wykonywane od najwyższych priorytetów (czyli najmniejsze wartości PRIO) Gdy wszystkie wykorzystają kwanty czasu, rozpoczyna się nowa epoka (tylko zmiana wskaźników)

Interakcyjność Priorytet dynamiczny procesu zależy od jego inteakcyjności Procesy korzystające głównie z procesora [+5] Procesy interakcyjne [-5] - często korzystające z I/O - często korzystające ze sleep Bonus = CURRENT_BONUS(p) MAX_BONUS/2 CURRENT_BONUS(p) = NS_TO_JIFFIES((p)->sleep_avg) * MAX_BONUS / MAX_SLEEP_AVG) Nie dotyczy procesów czasu rzeczywistego!!!

Interakcyjność... interactive_credit Rośnie gry proces śpi, maleje gdy proces korzysta z CPU Jeśli proces często zasypia na I/O, a czasami korzysta więcej z CPU dostaje mniejszą karę Jeśli proces często korzysta z CPU, a czasami zaśnie na dłużej dostanie mniejszy bonus

Ponowne umieszczanie w kolejce aktywnych Aby uniknąć przestojów procesy interakcyjne mogą być włożone ponownie do kolejki aktywnych po wykorzystaniu kwantu czasu Tylko w przypadku gdy zadania z kolejki zużytych działały ostatnio (best_expired_prio, STARVATION_LIMIT) - nie można ich zagłodzić Decyzja o ponownym włożeniu zależy od priorytetu

Obliczanie kwantów czasu Długość kwantu czasu zależy od priorytetu statycznego BASE_TIMESLICE(p) = MIN_TIMESLICE + (MAX_TIMESLICE MIN_TIMESLICE)* (MAX_PRIO-1 (p->static_prio) / (MAX_USER_PRIO-1)) Proces może jednak zużyc maksymalnie TIMESLICE_GRANULARITY ms czasu

Jak ma się fork() do priorytetów Statyczny priorytet pozostaje bez zmian Bierzący kwant czasu ojca jest dzielony na pół między jego i syna Zmniejszenie sleep_avg rodzica i dziecka - w ten sposób rodzic i dziecko bedą miały mniejszy priorytet dynamiczny

Strategie dla procesów czasu rzeczywistego SCHED_FIFO - proces dobrowolnie zrzeka się procesora - Priorytety są stałe SCHED_RR - Przydział kwantu czasu - Proces działa aż wykorzysta go - Po wykorzystaniu go, ma przyznawany nowy i jest ponownie umieszczany w kolejce aktywnych! Obydwie strategie mogą być niesprawiedliwe - możliwe zagłodzenie

Struktura Runqueue spinlock_t lock - tylko jeden proces może modyfikować kolejkę w danym czasie unsigned long nr_running - liczba gotowych procesów w kolejce unsigned long long nr_switches - liczba zmian kontekstu od momentu powstania kolejki (nigdzie nie używane) atomic_t nr_iowait - liczba procesów czekających na I/O

Runqueue... unsigned long nr_uninterruptible - liczba zadań w kolejce, które nieobsługują przerwań unsigned long expired_timestamp - czas ostatniej zmiany epoki int best_expired_prio - używane aby nie głodzić procesów

Runqueue... task_t *curr - wskaźnik do aktualnie działającego procesu task_t *idle - wskaźnik do procesu który działa wtedy, gdy nic innego nie działa prio_array_t *active prio_array_t *expired - wskaźniki do tabel

Struktura prio_array unsigned int nr_active - liczba gotowych zadań w kolejce unsigned long bitmap[bitmap_size] - do szukania najwyższego priorytetu struct list_head quene[max_prio] - tablica list procesów o danych priorytetach

SMP Wiele procesorów Posiadają wspólną pamięć Gdy któryś jest bardziej obciążony od innych następuje równoważenie ilości zadań

Równoważenie Co 1ms, gdy procesor jest bezczynny, co 200ms gdy pracuje wywoływana jest load_balance() Szuka najbardziej obciążonego procesora Jeśli różnica w ilości zadań mniejsza niż 25% - koniec

Równoważenie... Wybiera kolejkę z której będzie pobierał zadania (preferowana jest zużytych) Bierze listę zadań o najniższym priorytecie Sprawdza czy zadanie może zostać ściągnięte na dany procesor (mapa bitowa, cache) Powtarza dopóki nie są zrównoważone

NUMA Komputery podzielone są na węzły, w ramach węzła procesory dzielą pamięć i inne zasoby Mamy głównego schedulera i każdy węzeł ma swojego schedulera Scheduler węzła zajmuje się podziałem zadań wewnątrz węzła Scheduler główny przenosi zadania między węzłami (kosztowne) tylko gdy węzeł jest przeciążony

Tuning schedulera 2.6 Aby wprowadzić zmiany do schedulera konieczna jest rekomplilacja jądra Co można zmienić: - MIN_TIMESLICE, MAX_TIMESLICE przedział wielkości kwantu czasu, zwiększa się ogólna wydajność systemu, kosztem czasu reakcji

Tuning... PRIO_BONUS_RATIO - zakres bonusu jaki procesy dostają w zależności od ich interakcyjności (w % promienia nice() domyślnie 25% ). - zwiększając tą wartość zmiejszamy znaczenie priorytetu statycznego nice().

Tuning... MAX_SLEEP_AVG ograniczenie na parametr SLEEP_AVG - zwiększenie tej wartości bardziej wyrówna rozkład procesora pomiędzy interakcyjne i nieinterakcyjne

Tuning... STARVATION_LIMIT jeśli jakiś proces z kolejki zużytych czeka tyle czasu, nie jest możliwe ponowne wkładanie procesów inteakcyjnych do kolejki aktywnych - zwiększenie wspomaga procesy inteakcyjne

Możliwe zmiany Możliwość dynamicznej zmiany ustawień schedulera. Główny scheduler dzieli czas między użytkowników, użytkownik wybiera rodzaj schedulera dla własnych procesów

2.4 versus 2.6 Scheduler w jądrze 2.4: Globalna kolejka - wszystkie procesory muszą czekać aż inne skończą wybór Algorytm O(n) - przegląda całą listę, aby wybrać następne zadanie Zajmuje dużo czasu przy obciążonym systemie Nie można wywłaszczać RT

2.4 versus 2.6 Jak test był wykonany: - uruchomiona wielokrotność 25 par klient/serwer procesów - każdy klient wysyłał do każdego serwera 100 komunikatów, serwery nasłuchiwały - każdy test wykonywany był kilka razy, pod uwagę był brany średni czas wykonywania testu