cpu scaling aspire one

Prima che con il tempo mi dimentichi tutto, scrivo questo piccolissimo how-to sulla mia configurazione per lo scaling della cpu.

La configurazione prevede questo: quando accendo il portatilino, se l’alimentazione è presente viene settata la politica di performance, altrimenti powersave.

Inoltre durante l’uso del pc, se viene scollegato o ricollegato l’alimentatore, viene automaticamente settata la relativa politica.

  1. yaourt -S acpid pm-utils
  2. [~] grep DAEMONS /etc/rc.conf
    DAEMONS=(acpid !cpufreq ... )

    notate che ho disabilitato il demone cpufreq perchè quando uso l’alimentatore preferisco usare la politica performance, ma se usate la ondemand potete abilitarlo.

  3. [~] cat /etc/conf.d/cpufreq
    #configuration for cpufreq control
    
    # valid governors:
    #  ondemand, performance, powersave,
    #  conservative, userspace
    governor="ondemand"
    min_freq="800MHz"
    max_freq="1.60GHz"
  4. Modificate la sezione ac_adapter) del file /etc/acpi/handler.sh come segue:

    ac_adapter)
            case "$2" in
                ACAD)
                    case "$4" in
                        00000000)
                            echo "conservative" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
                            echo "conservative" >/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
                            echo -n $minspeed >$setspeed
                            #/etc/laptop-mode/laptop-mode start
                        ;;
                        00000001)
                            echo "performance" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
                            echo "performance" >/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
                            echo -n $maxspeed >$setspeed
                            #/etc/laptop-mode/laptop-mode stop
                        ;;
                    esac
                    ;;
                *)  logger "ACPI action undefined: $2" ;;
            esac
            ;;
    

    Comunque per sapere se quei codici e stringhe che ci sono nei vari case sono corretti, potete usare acpi_listen da shell, provando a scollegare e a ricollegare il cavo d’alimentazione.

  5. Infine questo script controlla lo stato della batteria al boot e setta la politica corrispondente, fate in modo che venga eseguito al boot ad esempio facendolo eseguire dall’rc.local:
    [~] cat /home/marinz/battery_governor.sh
    #!/bin/bash
    #
    # battery_governor.sh
    # marinz at email dot it
    
    ac_adapter="ACAD"         # check it with acpi_listen
    governor="powersave"
    
    # don't edit:
    #
    state=`sed "s/.*off-line.*/off-line/" /proc/acpi/ac_adapter/$ac_adapter/state`
    if [ "$state" = "off-line" ]; then
      cpufreq-set --governor $governor
    fi
    

Leave a Reply