Niedziałające skalowanie procesora w Ubuntu 9.10

Ta strona może zawierać nieaktualne już treści, możesz pomóc zgłaszając swoje uwagi na dole strony otwierając dyskusję dotyczącą tego artykułu.

Objawy

dmesg:

ondemand governor failed, too long transition latency of HW, fallback to performance governor

Problem

Niemożliwość automatycznego skalowania procesora, chociaż posiada zmianę częstotliwości.
Jest jednak tryb, który można wybrać, i działa. Jest to tryb powersave ma jednak tą wadę, że pozostaje na najniższej możliwej częstotliwości. A nam zależy na dynamicznym skalowaniu pomiędzy częstotliwościami.

Rozwiązanie

Przede wszystkim musimy załadować odpowiedni moduł, dopiero po tym zabiegu przechodzimy do tej strony ponownie.
Gdy już i ten krok mamy za sobą możemy stawić czoła przygodzie instalując pakiet powernowd. Będziemy musieli go tylko skonfigurować.

Plik konfiguracyjny:
/etc/default/powernowd

Powinien zawierać:

#default file for powernowd, see man 1 powernowd
#
# Options
OPTIONS="-q -m 0"

Tworzymy także plik w cron jako root:
/etc/cron.hourly/skalowanieProcesora.sh

#! /bin/bash
/etc/init.d/powernowd restart
date >>/tmp/skalowanieProcesora.log

chmod a+x /etc/cron.hourly/skalowanieProcesora.sh

Dlaczego

Z manuala (man powernowd):

-m
    Modes of operation, 0 = SINE, 1 = AGGRESSIVE (default), 2 = PASSIVE, 3 = LEAPS

Oraz:

MODES

There are 4 modes supported by this client:

Mode 0, SINE, changes the frequency as a sine wave function, raising the
frequency by "step" Hz every time the CPU usage goes over 80%,
and decreases it by "step" Hz when the CPU usage falls under 20%.

Wybrałem funkcję sinusoidalną, ponieważ jest najbardziej zrównoważona. Przyjmuje uczciwą regułę dla większego zapotrzebowania, jak i dla małego. Jeśli procesor był intensywnie używany, a następnie jego zużycie spadło drastycznie, to tryb wybrany przez powernowd będzie stopniowo obniżał częstotliwość.

Użyłem także skryptu cron, by okresowo odświeżać działanie demona powernowd. Ze względu na to, że nieznane mi jeszcze usługi zmieniają po pewnym czasie reguły rządzące częstotliwością na wydajnościowe (performance).

Zobacz także

O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją GNU Free Documentation License.