[HOW-TO] Dysk I/O scheduler

Awatar użytkownika
dk75
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1142
Rejestracja: 07 mar 2007, 22:59
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64

[HOW-TO] Dysk I/O scheduler

Post autor: dk75 » 14 gru 2008, 20:17

Zapewne paru z was zauważyło, że 8.10 nie pracuje tak jak powinien. Jest wolniejszy niż 8.04 a nawet dużo wolniejszy niż 7.10

Jednym z powodów jest nowy CPU scheduler pod nazwą "PowerNow" - wbrew nazwie nie tylko dla procesorów AMD. Ale o tym innym razem.

Drugim z powodów jest nowy zarządca dostępu do dysku - CFQ
Dokładnie czy jest strasznie nowy czy nie nie wiem (być może był używany wcześniej już w 8.04 a nawet 7.10, 7.04 i 6.10 - sprawdzę jak tylko dorwę laptopa i zainstaluję na nim 7.10) jednak implementacja w 8.10 nie bardzo się sprawdza w systemach desktop (przynajmniej u mnie na 64bit się nie sprawdził).

Dość długo szukałem przyczyny nierównego odtwarzania filmów w MPlayerze i to nawet takich 320x240 co przy 2GB pamięci i procesorze AMD64 3500+ jest komicznie niezabawne (zwłaszcza, że na 7.10 32bit chodził jak burza), zmieniałem systemy plików (najlepiej wypadł na ReiserFS a próbowałem Ext3 i JFS), zmieniłem schedulera CPU który przy odtwarzaniu filmów nawet HD trzymał procesor cały czas na minimalnej częstotliwości ale nic do końca nie pomogło. Ciągle zdarzały się przycięcia co jakiś czas z niewiadomego powodu.

Przeszukując dziś ponownie Google pod kątem podobnych problemów (nigdy nie znalazłem niczego podobnego do moich problemów) natknąłem się na developerską dyskusję o powolności 8.10. Wśród tekstów o driverach nVidii było parę postów o schedulerze I/O dysków twardych. Przetestowałem i... mi pomogło.

Tymczasowe rozwiązanie dla przetestowania (trwa tylko w danej sesji):

Kod: Zaznacz cały

sudo su
echo -n deadline > /sys/block/sda/queue/scheduler
Gdy wydacie komendę "cat /sys/block/sda/queue/scheduler" powinniście zobaczyć coś takiego:

Kod: Zaznacz cały

$ cat /sys/block/sda/queue/scheduler
noop antiCEBULKAtory deadline [cfq]
Oznacza to, że standardowym zarządcą transferu dyskowego jest "CFQ"
CFQ nie jest zły, można powiedzieć nawet, że jest genialny... w serwerach. Sprawia, że jednoczesny dostęp do dysku przez ogromną ilość procesów jednocześnie jest możliwy jednak czy systemy desktop charakteryzują się aż takim obciążeniem pamięci masowej?
Chyba jednak ważniejsza jest ciągłość transferu pojedynczych strumieni, np. wideo niż możliwość jednoczesnego przeszukiwania 40GB bazy SQL przez 100 procesów na raz.


Teraz jeżeli podczas tymczasowych prób będziecie zadowoleni i zechcecie na stałe włączyć "deadline" na wszystkich swoich dyskach to wtedy:

Kod: Zaznacz cały

gksu gedit /boot/grub/menu.lst
szukacie linijki zaczynającej się na

Kod: Zaznacz cały

# defoptions=quiet splash locale=pl_PL
i dopisujecie na końcu

Kod: Zaznacz cały

elevator=deadline
Potem już tylko "niewinne"

Kod: Zaznacz cały

sudo update-grub
i po kłopocie.
Linux Mint Debian Edition x86_64/2.6.39, Conky 1.8.0, Xorg 7.6/1.10.4 - GNOME 2.30.2, nVidia 285.03
Lenovo T61p, HITACHI HTS722010K9SA00 100GB, ST9250827AS 250GB
http://linuxcounter.net/user/483055.html
ODPOWIEDZ

Wróć do „Hardware-Inne”