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

Índex

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:

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.

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.

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

Consells

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)