Dlaczego Ubuntu 16.04 ustawia wszystkie harmonogramy We / Wy dysku na „termin”?

17

Właśnie zainstalowałem Xubuntu 16.04-64bit na drugiej partycji na moim laptopie. Zauważyłem, że czasami wydawało się to trochę powolne, więc sprawdziłem, który harmonogram IO używał dla tego dysku, który okazał się być deadlinedla wszystkich dysków. Mam kilka dysków SSD i dysków twardych, więc wiem, że „termin” jest najlepszy w przypadku dysków SSD i cfqdysków twardych.

Uruchomiłem się do 14.04 na innej partycji i jest on używany cfqdo obracania dysków i deadlinedo SSD, tak jak powinien. Ja również /etc/udev/rules.dsprawdziłem, czy 14.04 używa reguły do ​​skonfigurowania typu napędu, ale go tam nie było, więc zakładam, że jądro to robi.

Zastanawiam się więc, czy to błąd, czy teraz używają „terminu” na wszystko?

Aktualizacja: Komentarz, który napisałem o /etc/udev/rules.d był błędem. W rzeczywistości używam reguły udev do zmiany harmonogramu (tak jak odpowiedź poniżej) zgodnie z rodzajem rotacji, odkąd zacząłem używać dysku SSD kilka lat temu. Chyba po prostu zapomniałem ... Starzeć się. Tak czy inaczej, jednym z odniesień, których użyłem, była wiki optymalizacji Debiana SSD .

Czy nie byłoby dobrym pomysłem, gdyby zostało uwzględnione? Tylko sugestia!

Curt54
źródło

Odpowiedzi:

6

Wraz z wydaniem 14.04 domyślny program planujący dla jądra 3.13 został zmieniony z CFQ na Deadline .

Nie ma już oddzielnego jądra serwera, a sheduler CFQ nie nadaje się do wielu scenariuszy użycia serwera, np. Przekroczenia limitu czasu zapisu KVM . Istnieją nawet regresje wydajności na pulpicie z urządzeniami USB .

NGRhodes
źródło
1
Dzięki za przeczytanie, bardzo pouczające! Problem z USB, który często miałem z kartami SD i majowym tabletem z Androidem w TWRP. W tym ostatnim wisiałby na samym końcu przez kilka minut. Problem KVM nigdy nie pojawia się u moich gości VB, ponieważ są oni na moim dysku SSD z terminem.
Curt54
32

Zespół jądra systemu Ubuntu regularnie przeprowadza wiele analiz różnych symulowanych obciążeń w różnych systemach plików i programach planujących operacje wejścia / wyjścia, aby dowiedzieć się, jaki jest najlepszy ogólny program do planowania operacji wejścia / wyjścia. Ogólna odpowiedź jest taka, że ​​nie ma idealnego wyboru harmonogramu we / wy dla ogólnej konfiguracji dla wszystkich różnych typów instalacji dla różnych rodzajów mediów. Istotne punkty do zapamiętania to:

  1. Systemy przechodzą na dyski SSD, więc najlepiej wybrać dla nich noop lub termin; Noop ma mniejsze obciążenie procesora niż termin.

  2. CFQ kontra ostateczny termin to trudna próba. CFQ pozwala na większą elastyczność. Stwierdziliśmy jednak, że w przypadku szerszego zakresu symulowanych operacji we / wy termin ten zapewniał mniejsze opóźnienia i nieco wyższą przepustowość niż CFQ.

  3. Regularnie testuję jądra (każdy test jądra trwa ponad 3 dni) dla różnych systemów plików i programów planujących We / Wy. Na podstawie tych i innych danych staramy się podjąć świadomą decyzję dotyczącą najlepszego wyboru, patrz:

http://kernel.ubuntu.com/~cking/fs-tests/

Istnieją wszystkie zalety / wady dla wszystkich programów planujących We / Wy, więc żadne domyślne ustawienie nie jest idealne, a zespół jądra Ubuntu jest zawsze gotowy do wprowadzenia domyślnego wyboru, jeśli przekonujące dane i powody wskazują, że powinniśmy to zmienić.

Colin Ian King
źródło
5
Przeszliśmy do korzystania z CFQ jako domyślnego dla jądra Ubuntu Zesty 4.10, a także włączyliśmy nowy CONFIG_BLK_WBT_MQ (ograniczanie zapisu zwrotnego w kolejce wielopunktowej), ponieważ rozwiązuje to problemy z zapisem w pamięci podręcznej z wolnymi urządzeniami, takimi jak urządzenia flash.
Colin Ian King
1
Czy może zobaczymy BFQ jako domyślny teraz, gdy znajduje się on w jądrze 4.12?
JauntyDoe
Będziemy oceniać to dla 4.12 / 4.13, zrobiłem też kilka wczesnych testów z Kyberem, ale wrócę do nich ponownie, gdy 4.12 będzie w tym tygodniu.
Colin Ian King,
Zasadniczo to pytanie dotyczy tylko jądra 16.04, ale wciąż pojawia się w poszukiwaniu :-). Oto nowsza aktualizacja: Ubuntu wrócił do CFQ, pasując do domyślnej wersji, w Ubuntu 17.04 (zesty) do 18.10 (kosmicznej) .
sourcejedi
1
Dalsza aktualizacja: Linux wyłączył WBT podczas korzystania z CFQ lub BFQ (przynajmniej domyślnie), ponieważ nie działa dobrze razem. 2) Jeśli chcesz ocenić problem rozwiązany przez WBT, myślę, że musisz zdawać sobie sprawę, że problem różni się w zależności od urządzenia (różne oprogramowanie układowe). W wynikach testu porównawczego nie mogę nawet znaleźć, jakiego typu urządzenia użyto. 3) Jestem ciekawy twojego opisu tego, co rozwiązuje WBT. Jeśli spojrzysz na list motywacyjny na v2 zestawu łatek WBT, WBT jest zaprojektowany do obsługi buforowanych zapisów w szybkim flashie, które mogą mieć bardzo głębokie kolejki i unikać głodujących czytelników na tym samym urządzeniu.
sourcejedi
9

Nie wiem, dlaczego programiści postanowili wybrać deadlinedomyślny harmonogram, być może dlatego, że większość nowych komputerów jest dostarczana z dyskiem SSD, na którym zwykle instalowane są systemy. W ten sposób możesz ustawić harmonogram ręcznie, jeśli jeszcze go nie zainstalowałeś ... zainstaluj gksu:

Otwórz terminal i wykonaj:

sudo apt install gksu  

Następnie wykonaj to polecenie:

gksudo gedit /etc/udev/rules.d/60-schedulers.rules  

Wklej następujący tekst do pustego pliku i zapisz zmieniony plik.

# set cfq scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"

# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"  

Uruchom ponownie system operacyjny, a teraz używasz optymalnych harmonogramów dla dysków HDD i SSD.

cl-netbox
źródło
Tak, tego właśnie używałem, zgodnie z moją aktualizacją w pytaniu. Sądzę jednak, że skoro dzisiaj oba dyski są powszechne, to we wszystkich dystrybucjach Linuksa obowiązywałaby ta zasada.
Curt54