Wnioski

Porównanie wyników wszystkich badanych algorytmów szeregowania prowadzi do kilku wniosków.

Narzut systemowy związany z zastosowaniem modułów jest niewielki. Uzyskujemy przy tym elastyczny mechanizm ustalania strategii szeregowania. Można sobie np. wyobrazić sytuację, gdy serwer w ciągu dnia używa innego algorytmu szeregowania niż podczas godzin nocnych.

Największą wadą algorytmu Linuksa jest znaczny wzrost czasu odpowiedzi procesów zorientowanych na wejście-wyjście już przy obciążeniu kilkoma procesami zorientowanymi na obliczenia. Algorytm Linuksa jest podobny do algorytmu rotacyjnego, ale jednak potrafi promować, w ograniczonym zakresie, procesy często zasypiające.

Algorytmy wzorowane na klasycznym algorytmie Uniksa (p-bsd2 i p-unix2) okazywały się zwykle gorsze niż linux-s. Dobrym pomysłem okazało się zaimplementowanie nieco zmodyfikowanego algorytmu uniksowego -- algorytmu "`najpierw najkrótsze zadanie'' (p-sjf2). Potrafi on promować procesy zorientowane na wejście-wyjście znacznie lepiej niż dwa poprzednie algorytmy.

Największe możliwości tkwią w module opartym na algorytmie SVR4. Rozszerzenie tablicy parametrów sterujących pozwoliło testować różne strategie przydziału procesora bez zmiany kodu. Okazało się, że dobór właściwych parametrów nie jest łatwy. Z sześciu tablic parametrów najsprawniejsze okazały się p-qnx2 i p-sv2. Wydawało się, że tablica p-sv3 będzie lepiej radziła sobie w systemie przeciążonym, tymczasem wypadła gorzej od p-sv2.

Tablice p-nt i p-nt2 okazały się niezdatne do praktycznego zastosowania. Na powyższym przykładzie widać, jak ważne są szczegóły implementacji algorytmu, w tym przypadku: dobór odpowiednich parametrów. Algorytmy szeregowania NT i QNX dotyczące procesów zwykłych są oparte na tej samej idei, lecz różna interpretacja szczegółów prowadzi do znacznych różnic wydajności badanych algorytmów.


Tomek Blaszczyk
1999-05-21