El teu blog de Linux en català

Solució al consum de bateria dels nuclis nous

Fa unes setmanes us vam comentar que les noves versions del nucli Linux presenta una regressió que fa que les distribucions que utilitzen aquestes versions consumeixen més bateria de l’habitual i, per tant, aquesta es gasta més aviat. Això passa en els nuclis a partir del 2.6.38 (els que utilitzen les darreres versions de la majoria de distribucions, com Ubuntu 11.04, Fedora 15, etc.). Els desenvolupadors del nucli Linux encara estan treballant per solucionar-ho, però de moment Phoronix ens presenta una solució. En realitat, un workaround o solució temporal, perquè la solució definitiva l’ha de proporcionar el propi nucli de Linux.

Segons aquesta anotació de Phoronix, el problema es troba en el gestor ASPM (Active-State Power Management) del nucli. Més concretament, el nucli no engega aquest mòdul si la BIOS li diu que no el suporta. Però, en molts casos, l’activació d’aquest mòdul sí seria possible, i en aquest cas el consum de bateria es redueix moltíssim. Ull, també ens indiquen que en alguns casos (en aquells on realment no estigui suportat l’ASPM) pot provocar penjades del sistema. Jo he provat la solució i no he tingut cap problema, però si ho feu i detecteu que es provoquen penjades del sistema, desfeu el canvi.

Així doncs, per solucionar el problema amb la bateria, l’únic que cal fer és dir-li al gestor d’arrancada del sistema (Grub) que forci al nucli la utilització d’aquest mòdul. Per a fer-ho, cal editar amb permisos d’administrador (amb «sudo») el fitxer «/boot/grub/grub.cfg» i, en la línia on es carrega el nucli, afegir-hi el text «pcie_aspm=force». De tota manera, si ho fem així, quan hi hagi una actualització (menor o major) en el nucli perdrem aquesta modificació. Per això, us explicarem una forma una mica més llarga de fer-ho, però que es mantindrà si hi ha una actualització del nucli. Això també ens servirà per si tenim algun altre problema que requereixi la modificació del funcionament del Grub.

Ho farem tot des d’un terminal, o sigui que obriu-ne un des del menú «Aplicacions > Accessoris > Terminal». El primer que cal fer és editar amb permisos d’administrador el fitxer «/etc/default/grub». Ho podeu fer mitjançant aquesta ordre:

sudo gedit /etc/default/grub

En aquest fitxer, cerqueu una línia que comenci de la forma següent: «GRUB_CMDLINE_LINUX_DEFAULT=». En aquesta línia s’hi posen tots els paràmetres que volem que es carregui per defecte a les entrades «normals» del Grub. És a dir, no afectaria a les entrades de recuperació, a la del test de memòria, les de Windows (si en tenim), etc. Si no hem fet res abans, segurament aquesta línia la tindrem així:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Només cal que afegim darrere el paràmetre que us hem comentat, deixant la línia així:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pcie_aspm=force"

Si apart del «quiet splash» hi havia altres opcions, deixeu-les, i poseu el «pcie_aspm=force» a darrere de tot. Deseu els canvis i sortiu del fitxer. Ara provocarem una actualització del grub, que llegirà aquests canvis que hem fet i els actualitzarà en el menú d’entrada al sistema:

sudo update-grub

Un cop finalitzada aquesta ordre ja ho tindrem. Si voleu, podeu comprovar-ho visualitzant el fitxer de configuració del grub, per veure que a les entrades «normals» d’Ubuntu hi ha el paràmetre «pcie_aspm=force». Podeu visualitzar aquest fitxer amb l’ordre següent (no cal permisos d’administrador perquè no hi volem modificar res):

gedit /boot/grub/grub.cfg

Amb això, un cop reinicieu l’ordinador s’hauria de reduir el consum de bateria. En la següent gràfica, extreta de l’article de Phoronix, veiem com el consum amb aquesta modificació és molt semblant al que tenia en versions anteriors del nucli.

Consum de bateria del nucli amb aquesta modificació

Consum de bateria del nucli amb aquesta modificació

EDITO: Per a aquelles distribucions que encara funcionen amb Grub1 (les instruccions que hi ha a sobre són per a Grub2), caldria actuar de la forma següent. Primer, cal editar el fitxer menu.lst:

sudo gedit /boot/grub/menu.lst

En aquest fitxer, cal cercar la línia que posa «defoptions=». D’una banda, és possible que aquesta línia comenci amb un símbol «#». Cal treure’l. A més, a final de línia hem d’afegir el «pcie_aspm=force». Per tant, si en principi teníem aquesta línia:

# defoptions=quiet splash

Cal substituir-la per:

defoptions=quiet splash pcie_aspm=force

I, després, executar l’ordre:

sudo update-grub

    • logoff on 28 de juny de 2011 at 10:38

    Reply

    és una primera aproximació que apropa el consum, tanmateix continua essent superior. caldria indicar si aquestes configuracions són per GRUB o GRUB2.

    1. Reply

      Les instruccions són per al GRUB2, però el GRUB1 també permet afegir ordres d’aquest tipus, directament al fitxer /boot/grub/menu.lst

    • Pau on 28 de juny de 2011 at 19:13

    Reply

    Això és només per a Ubuntu… I per Fedora? 😛

      • Daniel on 28 de juny de 2011 at 22:25

      Reply

      En principi, gran part de les distribucions fan servir la mateixa versió de Grub (GRUB2), així que no hi hauria d’haver cap problema, no?

        • oriolsbd on 28 de juny de 2011 at 22:59
        • Author

        Reply

        En principi, són instruccions per a Grub2, i haurien de funcionar en qualsevol distribució. Però quan he vist la pregunta del Pau he dubtat si a les altres distribucions també hi ha el «update-grub». A Ubuntu, he vist que es distribueix amb el paquet «grub-common», o sigui que no sembla cap paquet específic per a Ubuntu. Podeu comprovar si a Fedora hi ha el programa «update-grub»?
        Salut!

    • kiakli on 28 de juny de 2011 at 23:52

    Reply

    Hola,
    Entenc que a fedora només caldria editar com root el fitxer “/boot/grub/menu.lst” i afegir “pcie_aspm=force” al final de la linea de kernel >> “kernel /vmlinuz-2.6.38.8-32.fc15.i686.PAE […] rhgb quiet pcie_aspm=force” i reiniciar l’equip.

    He llegit que aquest canvi només funcionarà en aquells equips que no tenen l’opció “aspm” ben configurada a la BIOS.

    Jo per ara he tingut sort i cap dels equips portàtils que tinc fedora 15 tenen problemes de batèria.

    Salut,
    @kiakli

    • Pau on 3 de juliol de 2011 at 15:00

    Reply

    Per Fedora 15:
    sudo sed -e 's/ ro / ro pcie_aspm=force/' -i /etc/grub.conf

Deixa un comentari

Your email address will not be published.