IncrementarAutonomiaPortatil

INFORMACIÓ IMPORTANT

Aquest tutorial no ofereix cap mena de garantia. De seguir el procediment aquí explicat ho feu sota la vostra única responsabilitat. Tot el que s'hi descriu s'ha provat, però en el món del programari no hi ha mai res perfecte

Introducció

És possible que us hageu trobat que sota Windows l'autonomia del vostre portàtil era superior a Ubuntu. En alguns casos, podem parlar de 15 minuts, però en d'altres la diferència és molt més considerable. En aquesta entrada al wiki, intentarem reduir la diferència respecte a Windows, arribant al punt que, en alguns casos, aconseguirem més autonomia.

Per què hem de fer coses especials a Ubuntu si en Windows funciona sense haver de tocar res? Si heu comprat el pc amb el Windows pre-instal·lat, el fabricant de la màquina ja s'ha encarregat d'optimitzar-ho tot; si per contra, l'heu instal·lat a part, heu pensat en els controlador que vau haver d'instal·lar? O que, fins i tot, el Windows està optimitzat?

Ubuntu ens permet canviar, activar i desactivar un munt d'opcions, i el més probable és que aconseguiu augmentar l'autonomia. Quant de temps? Això depèn del cas i podem estar parlant de fins a una hora en els casos més extrems, fins a res de res en els pitjors. La millor manera de saber-ho és provant-ho.

Reduir el voltatge del processador

En aquest apartat intentarem explicar la manera d'aconseguir reduir el voltatge d'alimentació del processador al nostre portàtil, de manera que aconseguirem reduir el consum energètic d'aquest component i, per tant, augmentar la duració de la bateria i reduir la calor dissipada.

Per aconseguir tot això, utilitzarem les extensions PHC, que ens permeten conèixer i modificar la tensió a la qual treballa el nostre processador.

És segur?

En principi, sí. Baixar la tensió d'alimentació és una cosa bastant comuna, fins al punt que fins i tot alguns fabricants de portàtil inclouen aplicacions que ho fan. A més a més, en el cas dels Intel Core 2 Duo (segurament també en els Core Duo), hi ha un voltatge mínim i segur de 0,95 V, per sota del qual no es pot baixar.

Tot i així, no hi ha res perfecte. Procediu amb cura i sota la vostra responsabilitat

Requisits

Per poder dur això a terme, necessitem complir una sèrie de requisits:

  • El primer i fonamental: el nostre sistema ha de fer ús del mòdul acpi-cpufreq. Per comprovar si el fem servir, en terminal:  lsmod | grep acpi_cpufreq. Hauríem d'obtenir una sortida similar a aquesta:

    acpi_cpufreq           13136  2 
    
    freq_table              6464  3 acpi_cpufreq,cpufreq_ondemand,cpufreq_stats
    
    processor              41448  4 acpi_cpufreq,thermal
    Si no és el vostre cas, ho sento, aquest tutorial no us farà servei.
  • Aquest tutorial està pensat pel nucli 2.6.24-19-generic, i funciona tant per a 32 com per a 64 bits. Segurament funcioni també amb versions anteriors (-18, -17, etc.). No es contemplen nuclis diferents al d'Ubuntu, encara que existeixen els pedaços a aplicar per a diferents versions del nucli.
  • Hem de fer servir una versió modificada del mòdul acpi_cpufreq. El que farem és aplicar un pedaç al codi font del kernel.
  • Cal tenir instal·lades algunes eines de desenvolupament, compiladors i el codi font del nucli: sudo apt-get install build-essential subversion linux-source-2.6.24

Configurar i instal·lar el mòdul modificat

Per tal de treballar més còmodament, copiarem el codi font del nucli a l'escriptori i el descomprimirem allà:

cp /usr/src/linux-source-2.6.24.tar.bz2 ~/Escriptori
cd ~/Escriptori
tar -xvf linux-source-2.6.24.tar.bz2

El següent pas serà obtenir el pedaç pel nucli

cd ~Escriptori
svn co http://phcpatches.googlecode.com/svn/trunk/acpi-cpufreq

i copiar-lo al directori del codi font del nostre nucli cp ~/Escriptori/acpi-cpufreq/patches/linux-phc-kernel-vanilla-2.6.24-rc1.patch ~/Escriptori/linux-source-2.6.24 A continuació apliquem el pedaç

cd ~/Escriptori/linux-source-2.6.24
patch -p1 < linux-phc-kernel-vanilla-2.6.24-rc1.patch

Hauríem de veure una sortida similar, si no igual, a aquesta:

$ patch -p1 < linux-phc-kernel-vanilla-2.6.24-rc1.patch

patching file arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c

Hunk #4 succeeded at 741 (offset -1 lines).

Hunk #5 succeeded at 760 (offset -1 lines).

Ara només resta compilar el nostre mòdul i reemplaçar l'original.

  • Per compilar-lo:

    cd ~/Escriptori/linux-source-2.6.24
    cp /boot/config-$(uname -r) ~/Escriptori/linux-source-2.6.24
    make oldconfig
    make prepare
    make scripts
    make M=./arch/x86/kernel/cpu/cpufreq 
  • Per reemplaçar el mòdul original amb el nostre:

    sudo mv /lib/modules/$(uname -r)/kernel/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.ko /lib/modules/$(uname -r)/kernel/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.ko.original
    sudo cp ~/Escriptori/linux-source-2.6.24/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.ko /lib/modules/$(uname -r)/kernel/arch/x86/kernel/cpu/cpufreq/ 

Bon punt tornem a engegar la màquina, començarem a fer ús del nou mòdul i, per tant, tindrem un kernel amb les extensions phc.

Instal·lar el programari necessari

Abans de res, comprovarem si el nostre nou mòdul funciona correctament llegint els voltatges per a cada freqüència que porta per defecte el processador. Per a fer-ho, en terminal: cat /sys/devices/system/cpu/cpu0/cpufreq/phc_controls. Si el mòdul funciona correctament la sortida serà similar a aquesta: 12:38 10:30 8:24 6:18. Aquestes parelles de números són les freqüències i els voltatges, respectivament, i el nostre objectiu és saber el voltatge mínim per a cada freqüència.

Per saber els paràmetres per configurar el voltatge del nostre processador utilitzarem un script que va reduint progressivament el voltatge d'alimentació del processador fins que es penja l'ordinador; l'haurem de fer córrer les vegades que faci falta, fins que ens digui que ja ha acabat. Per fer servir aquest script, el descomprimim i trobarem 2 arxius que marcarem com a executables (botó dret, propietats, pestanya permisos). L'executarem en terminal, amb l'ordre: sudo ./linux-phc-optimize.bash. Durant aquest procés, és normal que l'ordinador es pengi, de fet és el que es busca, ja que un cop es penja, l'script sabrà quin voltatge mínim és segur.

Els usuaris amb un processador de doble nucli hauran d'executar,en un altre terminal, l'ordre burnMMX, per tal que els 2 nuclis tinguin feina.

MOLT IMPORTANT: degut a què és molt possible que l'ordinador es pengi, al reiniciar-lo us pot aparèixer el comprovador fsck de la partició. Si és així, és important que no l'atureu, deixeu-lo fer fins que acabi. Per aquest mateix motiu, hi ha una possibilitat de pèrdua de dades i, per tant, es recomana fer una còpia de les dades sensibles prèviament.

Un cop l'script s'ha executat totes les vegades necessàries, trobareu els resultats en un fitxer de text a la mateixa carpeta de l'script. Si suposem que els valors obtinguts són 12:21 10:19 8:19 6:19 per aplicar-los farem, en terminal:

sudo -s #per un terminal com a root
echo "12:21 10:19 8:19 6:19" > /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
echo "12:21 10:19 8:19 6:19" > /sys/devices/system/cpu/cpu1/cpufreq/phc_controls #si tenim dos nuclis

Hi ha casos en que el PC no s'arriba a penjar. Si al executar l'script el primer cop no es penja, aquest donarà un error al tornar-lo a executar. En aquest cas, podem agafar el valor mínim de voltatge per a totes les freqüències, que és el 19. En el nostre exemple, les parelles de números quedarien 12:19 10:19 8:19 6:19.

Valors permanents

Hem d'editar l'arxiu /etc/rc.local: gksudo gedit /etc/rc.local i allà afegim, abans de la línia exit 0, les ordres

echo "12:21 10:19 8:19 6:19" > /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
echo "12:21 10:19 8:19 6:19" > /sys/devices/system/cpu/cpu1/cpufreq/phc_controls

Desem i tanquem. Ara els valors són permanents i al engegar el pc es tornaran a aplicar, de manera que no ens haurem de preocupar de tornar-los a posar cada cop.

L'eina PHC-tool

Existeix una eina, denominada phc-tool, que ens servirà per a verificar que els voltatges que hem passat s'estan aplicant correctament. A més, ens permetrà pujar-los i/o baixar-los des d'una interfície gràfica.

Per baixar i instal·lar el PHC-tool, fem el següent:

cd /opt
sudo -s
svn checkout http://phctool.googlecode.com/svn/trunk/ phctool
cd phctool
chmod +s phctool.sh
chmod +s phctray.sh
touch /usr/local/bin/phctool
touch /usr/local/bin/phctray
chmod +x /usr/local/bin/phctool
chmod +x /usr/local/bin/phctray
gedit /usr/local/bin/phctool /usr/local/bin/phctray

Ara tenim l'editor obert. A l'arxiu phctool hi enganxem això:

 #!/bin/sh
 /opt/phctool/phctool.sh 

Al phctray:

 #!/bin/sh
 /opt/phctool/phctray.sh 

Desem i tanquem. Ara podem obrir el phctool i el phctray amb les comandes phctool i phctray. Si volem una icona per executar-los, ho podem fer amb l'alacarte sota el menú adient que us sembli.

Ara que tenim instal·lat aquest útil programa, només ens queda fer una cosa: carregar el mòdul msr, que és el que ens permetrà analitzar i comprovar els voltatges que s'estan aplicant al processador. Per carregar-lo un cop:  sudo modprobe msr  i per fer que el mòdul es carregui a cada inici, nomes cal afegir-lo a l'arxiu /etc/modules:

sudo -s
echo msr >> /etc/modules 

Modes de baix consum del maquinari

A part de reduir el voltatge del nostre processador, podem optimitzar el consum d'altres components del pc, com ara la tarja de so, la tarja de xarxa sense fils o el disc dur. En el kernel 2.6.26 s'ha inclós el pcie_aspm, que permet fer entrar en baix consum els ports pci-express.

Per a fer això, crearem un script que s'executarà a cada inici de l'ordinador, així com quan desendollem o endollem l'ordinador a la xarxa elèctrica.

Quins components podem optimitzar?

Component

Arxiu/s de configuració

Valors

Tarja de so

/sys/module/snd_hda_intel/parameters/power_save

0-10

Controladora SATA

/sys/class/scsi_host/host*/link_power_management_policy

min_power, medium_power, max_performance

Tarja de xarxa sense fils (intel 3945 o 4965)

/sys/bus/pci/drivers/iwl????/0000\:??\:00.0/power_level

1-7

Optimització laptop mode

/proc/sys/vm/laptop_mode

0-5

Ports pci-express

/sys/module/pcie_aspm/parameters/policy

default performance powersave

En aquesta taula estan de manera resumida els components que podem optimitzar passant arguments al maquinari, així com els possibles valors a passar per a dur a terme l'optimització.

També podem dur a terme altres optimitzacions via programari, a base de reduir la funcionalitat de l'equip i retardar l'escriptura al disc dur.

  • Desactivar l'enquesta del lector/gravador de cd/dvd: el HAL fa una enquesta constant sobre el nostre lector/gravador, i serà l'encarregat de muntar el disc i preguntar què fer. Podem desactivar aquesta opció, de manera que ens estalviem l'enquesta a canvi d'haver de muntar manualment el cd un cop introduït. La comanda per desactivar l'enquesta és hal-disable-polling --device /dev/scd0 (o el dispositiu que toqui); per reactivar l'enquesta, hal-disable-polling --enable-polling --device /dev/scd0.

  • Desactivar la webcam i/o usb: podem estalviar energia si descarreguem el módul de la webcam, simplement fent un modprobe -r modul-pertinent per a descarregar i modprobe modul-pertinent per a carregar-lo. Podem fer el mateix amb tot el subsistema usb, descarregant els móduls hci_usb, usbhid, uhci_hcd i ehci_hcd. D'aquesta manera desactivarem els ports usb de l'equip.
  • Reduir l'activitat del disc dur: si tenim el sistema instal·lat en un sistema de fitxers ext3, podem fer que el "journalling" tingui lloc cada 10 minuts, en comptes de cada 5 segons. L'ordre a utilitzar seria mount -o remount,commit=60 / i mount -o remount,commit=60 /home (si el /home és a una partició diferent de /). També podem reduir l'escriptura amb les ordres

    echo 90 > /proc/sys/vm/dirty_ratio
    echo 1 > /proc/sys/vm/dirty_background_ratio
    echo 60000 > /proc/sys/vm/dirty_writeback_centisecs 

    A més, podem activar el "laptop mode" pel disc dur (echo 0 > /proc/sys/vm/laptop_mode).

Fer un script amb totes les optimitzacions

Ara que ja sabem què i, més o menys, com podem optimitzar, ens queda fer que aquest canvis s'apliquin cada cop que passem a funcionar amb bateria i es desfacin quan passem a funcionar amb l'adaptador.

Per fer-ho, primer crearem l'script i després l'instal·larem. Per a fer-ho: gedit ~/99-estalvi, on enganxarem el següent:

if on_ac_power; then

  mount -o remount,commit=5 /
  mount -o remount,commit=5 /home

  echo 0 > /proc/sys/vm/laptop_mode

  echo 6 > /sys/bus/pci/drivers/iwl????/0000\:??\:00.0/power_level  

  echo 10 > /proc/sys/vm/dirty_ratio
  echo 5 > /proc/sys/vm/dirty_background_ratio
  echo 6000 > /proc/sys/vm/dirty_writeback_centisecs

  echo 0 > /sys/module/snd_hda_intel/parameters/power_save
  
  echo max_performance > /sys/class/scsi_host/host0/link_power_management_policy
  echo max_performance > /sys/class/scsi_host/host1/link_power_management_policy

  modprobe uvcvideo

  hal-disable-polling --enable-polling --device /dev/scd0

else

  mount -o remount,commit=600 /
  mount -o remount,commit=600 /home

  echo 5 > /proc/sys/vm/laptop_mode

  echo 5 > /sys/bus/pci/drivers/iwl????/0000\:??\:00.0/power_level  

  echo 90 > /proc/sys/vm/dirty_ratio
  echo 1 > /proc/sys/vm/dirty_background_ratio
  echo 60000 > /proc/sys/vm/dirty_writeback_centisecs

  echo 10 > /sys/module/snd_hda_intel/parameters/power_save

  echo min_power > /sys/class/scsi_host/host0/link_power_management_policy
  echo min_power > /sys/class/scsi_host/host1/link_power_management_policy

  modprobe -r uvcvideo

  hal-disable-polling --device /dev/scd0
fi

Aquest seria un script típic. Òbviament, podeu treure'n el que us sembli prescindible o no sigui del vostre gust, o afegir qualsevol cosa que us sembli adient. D'altra banda, en aquest script hi ha coses que primer haureu de comprovar si funcionen de la mateixa manera al vostre sistema i, per tant, modificar-lo en conseqüència. Per exemple, el link_power_management_policy: potser ho teniu a host0, host1, a tots dos o a d'altres nombres. Comproveu sota quins host existeix aquesta entrada i editeu l'script segons el que n'hagueu tret.

També existeix la possibilitat de què alguna d'aquestes entrades existeixi però no en pugueu modificar el contingut. Cada màquina és un món.

Altres eines i consells

Eines

  • Powertop: ens dóna informació interessant sobre els processos que desperten el nostre processador de l'estat de més baix consum. Utilitzant aquest programa podrem veure quins processos desperten més cops el processador i actuar segons ens convingui. Aquest programa es troba als repositoris oficials i el podrem instal·lar normalment. En podem trobar més informació al seu lloc web oficial.

  • lm-profiler: s'executa des d'un terminal amb l'ordre lm-profiler i ens permetrà desactivar alguns serveis quan estem funcionant amb la bateria, cosa que ens reportarà un petit benefici. Es troba instal·lat per defecte, ja que forma part del paquet laptop-mode.

Consells

  • Desactivar els efectes d'escriptori quan estem funcionant utilitzant l'energia de la bateria. Per a fer això, podem fer un petit script i posar una icona a la barra d'eines, a mode d'accés directe. Per a fer l'script: gksudo gedit /usr/local/bin/canvi-wm i hi enganxem el següent:

    if ( ps -A | grep compiz.real )
    then {
            metacity --replace &
    }
    else {
            compiz --replace &
    }
    
    fi

    Després el fem executable sudo chmod +x /usr/local/bin/canvi-wm i ja podem crear un llançador nou en una barra d'eines amb la icona que més ens agradi.

  • Evitar en la mesura que es pugui els llocs web que facin servir flash. Fer servir la extensió flashblock pot ser una bona idea.

  • Moderar la brillantor de la pantalla. Sempre que estem en bateria, hauríem d'intentar reduir la brillantor de la pantalla al mínim possible, sense que ens resulti molt incòmode.
  • Desactivar a nivell de BIOS tot el que no utilitzem: en alguns portàtils es possible desactivar elements com el bluetooth, la webcam, les targetes de xarxa o les controladores IDE/SATA. Si no fem servir el bluetooth i/o la webcam, pot ser una bona idea desactivar-les.

Agraïments

Per redactar aquesta entrada al wiki, han estat molt útils aquests fils:


CategoryTutorialsEnCatala

CatalanTeam/Recursos/IncrementarAutonomiaPortatil (last edited 2008-09-29 18:45:14 by 38)