ULE
ULE – planista, stworzony na potrzeby systemu FreeBSD, który zastąpił poprzedni algorytm szeregowania, oparty na planiście systemu 4.3BSD. Jest to jeden z podprojektów SMPng.
Historia
[edytuj | edytuj kod]Prace nad planistą ULE[1] wymuszone zostały przez rozwój komputerów wieloprocesorowych oraz nieefektywność wykorzystywania wielu procesorów logicznych przez dotychczasowy algorytm szeregujący. Dotychczasowy planista (4BSD) nie umożliwiał rozkładania obciążenia na różne procesory (ang. load balancing), miał złożoność obliczeniową rzędu O(n) oraz nie był w stanie wykorzystać potencjału współczesnych maszyn wieloprocesorowych. Wszystkie te czynniki spowodowały rozpoczęcie prac przez Jeffa Robersona nad nowym planistą. Koncepcja nowego planisty nie była nowa. Systemy Linux oraz Solaris w tym okresie miały już działające algorytmy szeregujące o złożoności obliczeniowej rzędu O(1), co było źródłem dodatkowej motywacji dla programistów systemu FreeBSD.
Nowy planista pojawił się w drzewie CVS systemu 23 stycznia 2003 roku. Od tego czasu prowadzone są ciągłe prace, mające na celu optymalne ustawienie parametrów pracy algorytmów, wchodzących w skład planisty.
Informacje techniczne
[edytuj | edytuj kod]Nowy planista dla systemu FreeBSD łączy w sobie znane wcześniej z innych systemów idee, a także wprowadza nowe ulepszenia, mające podnieść wydajność na systemach wieloprocesorowych. Oto niektóre z nich:
Komputery wieloprocesorowe
[edytuj | edytuj kod]Nowy planista oferuje m.in. obsługę komputerów wieloprocesorowych. Osiągnięte to zostało dzięki utworzeniu niezależnych kolejek procesów dla poszczególnych procesorów[2]. Koncepcja ta została zaczerpnięta z jądra Linux. W przypadku nadmiernego obciążenia któregoś z procesorów planista automatycznie przenosi z jego kolejki procesy do kolejek innych procesorów, dzięki którym równoważy obciążenie procesorów systemu. Drugim mechanizmem jest wątek, który co pewien czas ocenia obciążenie procesora. Kombinacja tych technik zapewnia maksymalne wykorzystanie dostępnych mocy obliczeniowych. Ponadto ULE ma na celu efektywne wykorzystanie procesorów wielordzeniowych, dzięki wykorzystaniu nowoczesnych technik, wprowadzonych do nowych układów.
Priorytety procesów
[edytuj | edytuj kod]Zmieniło się także podejście do hierarchii procesów w systemie. Miało to na celu zwiększenie interaktywności nowego planisty. Dzięki temu szybciej obsługiwane będą procesy ograniczone przez wejście-wyjście niż procesy zużywające głównie moc obliczeniową procesora. Ponadto zadbano, aby nowy planista nie doprowadzał do głodzenia procesów o niskim priorytecie.
Wykorzystanie wielordzeniowości procesora
[edytuj | edytuj kod]Nowy planista potrafi lepiej wykorzystywać fakt obecności więcej niż jednego rdzenia w obrębie pojedynczego procesora. Cecha ta powoduje, że planista mając na uwadze wspólny cache dla wszystkich rdzeni może przenosić procesy między kolejkami dla poszczególnych rdzeni w obrębie jednego procesora, dzięki czemu nie zaburza on jego pamięci podręcznej.
Przyszłość
[edytuj | edytuj kod]ULE stał się domyślnym planistą w systemie FreeBSD począwszy od wersji 7.1[3].
Zobacz też
[edytuj | edytuj kod]Przypisy
[edytuj | edytuj kod]- ↑ ULE: A modern scheduler for FreeBSD - Jeff Roberson
- ↑ Strona manuala dla sched_ule.
- ↑ FreeBSD 7.1-RELEASE Release Announcement. [dostęp 2009-04-04]. [zarchiwizowane z tego adresu (2012-03-28)].