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
Kod: Zaznacz cały
$ cat /sys/block/sda/queue/scheduler
noop antiCEBULKAtory deadline [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
Kod: Zaznacz cały
# defoptions=quiet splash locale=pl_PL
Kod: Zaznacz cały
elevator=deadline
Kod: Zaznacz cały
sudo update-grub