Linux · 6 aprile 2010 0

Cpufreq ed il governor “ondemand (ArchLinux)

Il mio processore (un Pentium-D a 3,40 GHz) ha 2 core integrati e supporta lo scaling della frequenza di lavoro.

Dal wiki della mia distro, ArchLinux, si legge che per impostare il governor “Ondemand” (che regola la frequenza in base al carico del sistema) fin dall’avvio basta inserire questo codice nel file /etc/rc.local:

cpufreq-set -g ondemand &
sleep 2 && echo xx > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold &
sleep 2 && echo xx > /sys/devices/system/cpu/cpu1/cpufreq/ondemand/up_threshold &

Dove xx rappresenta la percentuale di carico del sistema oltre la quale far variare la frequenza. Il wiki riporta che il comando cpufreq-set -q ondemand & varia la frequenza del primo core e che il secondo viene variato in automatico dal sistema. Mi sono accorto che questa affermazione non è vera perché il secondo viene regolato in base all’ultimo modulo di governor caricato nella sezione MODULES del file /etc/rc.conf.

Per far sì che entrambi i core siano impostate sul corretto governore, il codice va modificato come segue:

cpufreq-set -c 0 -g ondemand &
cpufreq-set -c 1 -g ondemand &
sleep 2 && echo 60 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold &
sleep 2 && echo 60 > /sys/devices/system/cpu/cpu1/cpufreq/ondemand/up_threshold &

Solo così entrambi i core (identificati dal parametro “-c”) saranno impostati con il governor corretto (nell’esempio precedente ho impostato il comando affinché esegua lo scaling dopo che il carico di lavoro oltrepassa il 60%).