Całkowicie uczciwa kolejka
Completely Fair Queuing ( CFQ ) to program planujący wejścia/wyjścia dla jądra Linuksa , który został napisany w 2003 roku przez Jensa Axboe .
Opis
CFQ umieszcza synchroniczne żądania przesłane przez procesy w wielu kolejkach dla każdego procesu , a następnie przydziela przedziały czasowe dla każdej z kolejek w celu uzyskania dostępu do dysku . Długość przedziału czasu i liczba żądań, które kolejka może przesłać, zależy od priorytetu we/wy danego procesu. Żądania asynchroniczne dla wszystkich procesów są grupowane razem w mniejszej liczbie kolejek, po jednej dla każdego priorytetu. Chociaż CFQ nie wykonuje jawnego przewidywania planowania we/wy, osiąga ten sam efekt, jakim jest dobra łączna przepustowość dla systemu jako całości, pozwalając kolejce procesu na bezczynność na końcu synchronicznego we/wy, a tym samym „przewidując” dalsze zamknięcie I/O z tego procesu. Można to uznać za naturalne rozszerzenie przydzielania procesom przedziałów czasowych we/wy.
Historia
Przed integracją
W lutym 2003 r. Andrea Arcangeli przedstawił Jensowi Axboe swój pomysł na harmonogram Stochastic Fair Queuing I/O, który następnie go wdrożył. Jens Axboe wprowadził ulepszenia do swojej pierwszej implementacji, nazywając nową wersję harmonogramem Completely Fair Queuing i stworzył łatkę, aby zastosować ją do jądra serii deweloperskiej 2.5.60.
Jądro 2.6.6 (10 maja 2004)
Harmonogram we/wy CFQ został po raz pierwszy zintegrowany z głównym jądrem jako opcjonalny harmonogram we/wy. Możliwa była zmiana harmonogramu w czasie rozruchu za pomocą parametru „windy” na jądro.
Jądro 2.6.9 (19 października 2004)
Red Hat Enterprise Linux 4 używał tego harmonogramu we/wy jako domyślnego, mimo że korzystał z jądra opartego na wersji 2.6.9.
Jądro 2.6.10 (24 grudnia 2004)
Druga wersja harmonogramu CFQ, nazwana CFQv2, jest zawarta w wersji 2.6.10, ulepszenia obejmują lepszą responsywność i eliminację niektórych problemów związanych z głodzeniem, które występowały we wcześniejszej wersji. Harmonogram można teraz przełączać również w czasie wykonywania, modyfikując zmienną /sys/block/<block_device>/queue/scheduler w systemie sysfs .
Jądro 2.6.13 (27 czerwca 2005)
Harmonogram CFQ został przeniesiony do nowego projektu z plasterkami czasu, nazwanego CFQv3. Między innymi implementuje ioprio_get(2) i ioprio_set(2) , które pozwalają użytkownikowi ustawić priorytety we/wy dla poszczególnych procesów, zwykle za pomocą polecenia ionice(1) (chociaż użycie nice(1) również nieco modyfikuje priorytety we/wy)
Jądro 2.6.18 (20 września 2006)
CFQ stał się domyślnym harmonogramem, zastępując planista przewidujący .
Jądro 5.0 (2019-03-03)
CFQ został usunięty.
Zobacz też
Źródła
- Krótkie szczegóły dotyczące CFQ (zarchiwizowane stąd )
- Już 2.6.10
Linki zewnętrzne
- Dokumentacja CFQ z kodu źródłowego Linuksa
- CFQ — przewodnik po tuningu z bazy wiedzy RedHat