RSS

Zysk z dwurdzeniowców dzięki niedostatkom oprogramowania

Liczba odsłon: 16

Mikroprocesory dwurdzeniowe w Windows zapewniają zauważalnie lepszy komfort pracy w środowisku wielozadaniowym. Przy kilku jednocześnie pracujących programach (szczególnie, gdy niektóre z nich prowadzą długotrwałe obliczenia), komputer z układem jednordzeniowym często reaguje z opóźnieniem lub jest ślamazarny — nawet, jeżeli pierwszoplanowa aplikacja nie wymaga wcale wiele mocy procesora. Dołożenie drugiego rdzenia zazwyczaj rozwiązuje problem.

Kłopot w tym, że nie powinno być tak źle. Owszem, programy działające na jednym rdzeniu mają prawo działać odpowiednio wolniej (wliczając w to dodatkowo narzut przełączania wątków i obsługi przerwań), jednak system powinien w sprytny sposób dzielić czas procesora tak, aby programy nie mogły nawzajem się spowalniać, a szczególnie by zadanie pierwszoplanowe nie było traktowane gorzej niż wątki pracujące w tle. Drugi rdzeń ma znacząco zwiększać wydajność, lecz nie powinien tak wyraźnie wpływać na komfort.

Niestety, moduł przełączania wątków w Windows nie jest najwyższej klasy. Bazuje on na prostych listach wątków gotowych do wykonania na danym poziomie priorytetu, opróżniając kolejne listy w kierunku rosnących priorytetów i przyznając kolejnym wątkom zmienne kwanty czasu. W efekcie wystarczą czasem drobne różnice priorytetu wątku połączone z różnicą charakteru wykonywanej pracy, by znacząco zróżnicować ilość czasu procesora dla dwóch prawie równoprawnych wątków.

Zdecydowanie lepiej radzi sobie w tym zakresie moduł CFS zastosowany w systemie Linux. Dzieli on czas każdego procesora między wątki, uwzględniając proporcje wynikające z różnic priorytetów i licząc czas pracy każdego wątku, a nie liczbę przyznanych mu kwantów czasu. Na procesorze jednordzeniowym Linux z CFS zapewnia zdecydowanie lepszą płynność pracy, niż Windows — bez regulowania priorytetów.