Jakie algorytmy planowania są używane w 15.04? Czy można to zmienić?

12

Chciałbym wiedzieć, jakie mechanizmy planowania stosuje się w 15.04, dzielenie czasu lub w czasie rzeczywistym, jestem prawie pewien, że to FIFO, Round Robin, SJF?

PS: Nowość w systemie Linux

leslie_lyj
źródło

Odpowiedzi:

14

Harmonogram procesów

Program do planowania procesów obsługuje alokację zasobów procesora do wykonywania procesów i ma na celu maksymalizację całkowitego wykorzystania procesora przy jednoczesnej maksymalizacji wydajności interaktywnej.

Od czasu jądra 2.6.23 (tak jak w Hardy 8.04 LTS) Całkowicie uczciwy program planujący (CFS) oparty na „Rotating Staircase Deadline”. Przegląd z kernel.org :

CFS oznacza „Całkowicie uczciwy program planujący” i jest nowym harmonogramem procesów „stacjonarnych” wdrożonym przez Ingo Molnar i połączonym z Linuksem 2.6.23. Jest to zamiennik poprzedniego kodu interaktywnego SCHED_OTHER planisty waniliowego.

80% konstrukcji CFS można podsumować jednym zdaniem: CFS zasadniczo modeluje „idealny, precyzyjny wielozadaniowy procesor” na prawdziwym sprzęcie.

„Idealny procesor wielozadaniowy” to (nieistniejący :-)) procesor, który ma 100% mocy fizycznej i który może wykonywać każde zadanie z dokładnie równą prędkością, równolegle, każde z prędkością 1 / nr_ biegania. Na przykład: jeśli uruchomione są 2 zadania, każde z nich działa przy 50% mocy fizycznej - tzn. Faktycznie równolegle.

Na prawdziwym sprzęcie możemy uruchomić tylko jedno zadanie na raz, dlatego musimy wprowadzić koncepcję „wirtualnego środowiska wykonawczego”. Wirtualny środowisko uruchomieniowe zadania określa, kiedy jego następny przedział czasu rozpocznie wykonywanie na idealnym wielozadaniowym procesorze opisanym powyżej. W praktyce wirtualny środowisko wykonawcze zadania to jego rzeczywisty czas wykonywania znormalizowany do całkowitej liczby uruchomionych zadań.


  • Jądro 2.4: program planujący O (n) ; z tym jądrem nie ma wydania Ubuntu.
  • Jądro 2.6.0 do 2.6.22: program planujący O (1) . Użyto Warty 4.10 (1. wydanie) 2.6.8. Gutsy 7.10 był ostatnim, który używał wersji 2.6.22 lub niższej.

Harmonogram we / wy

Planowanie wejścia / wyjścia jest metodą używaną przez system operacyjny do decydowania, w jakiej kolejności operacje we / wy bloku zostaną przesłane do woluminów pamięci.

Artykuł Phoronix na temat planowania : Linux 3.16: Terminowy harmonogram we / wy ogólnie prowadzi z dyskiem SSD.


Możesz zmienić harmonogram we / wy, dodając opcję „wind =” do „GRUB_CMDLINE_LINUX_DEFAULT =” w grub.

Prawdopodobnie łatwiej (przy założeniu sda i terminu) zrobić to w ten sposób:

  • Aby wyświetlić listę dostępnych harmonogramów:

    cat /sys/block/sda/queue/scheduler
    
  • Aby zmienić harmonogram (można to zrobić w locie):

    echo deadline > /sys/block/sda/queue/scheduler
    

Z jądra / git / torvalds / linux.git


Możesz sprawdzić, co jest używane (zakładając, że sda ​​jest pierwotne):

cat /sys/block/sda/queue/scheduler
Rinzwind
źródło
Czy to oznacza, że ​​mechanizmem planowania używanym domyślnie w Ubuntu 15.04 jest algorytm współdzielenia czasu, CFS? A może zawiera INNE, RR i FIFO? Dostałem informację tutaj: manpages.ubuntu.com/manpages/hardy/man2/...
leslie_lyj
Patrzysz na strony dla Hardy'ego. To jest trochę stare;) Domyślnym jest „cfq”. Zobacz dodany link do jądra / git / torvalds / linux.git.
Rinzwind,
1
... czy nie jest to mylące między harmonogramem dysku a procesorem ? Są to zupełnie różne bestie. Program planujący procesor decyduje, który proces zostanie uruchomiony w następnej kolejności, a program planujący dyski decyduje o sposobie dostępu do bloków danych na dyskach. Patrz na przykład wiki.archlinux.org/index.php/Maximizing_performance
Rmano
Cóż, niezupełnie, głównym celem tego pytania było wyjaśnienie, na jakim mechanizmie planowania procesów działa Ubuntu 15.04. (Przepraszam, jeśli nie byłem jasny)
leslie_lyj
2
@Rmano Zakładam, że chodzi tu o informacje, które nie są specjalnie przeznaczone do korzystania z nich. Ale neurotyk we mnie poszedł na całość>: - D Każdy, kto chce się tym bawić, powinien być ekspertem: X
Rinzwind