Il problema dei consumi energetici sul kernel linux

Da qualche tempo in giro si leggono sempre più voci che si lamentano dell’aumento dei consumi energetici del kernel linux dovuti a qualche bug e a elucubrazioni varie dei bios. Dunque in questo post non vi proporrò una soluzione definitiva ai vostri consumi perché magari essi dipendo da altri fattori come ad esempio porno in HD sempre attivi, blututto sempre accesso, musica sempre in sottofondo, flash player a palla (aka youtube perennemente utilizzato) e altre amenità varie.

Dunque cominciamo col dire che la soluzione di cui sono venuto a conoscenza deriva da questo post che a sua volta cita come fonte il famoso phoronix. Il problema in particolare sembra derivare dal‘ASPM ovvero dall’Active-State Power Manager che in soldoni è un protocollo delle periferiche PCI-express per aumentare la durata della batteria dei nostri notebook. In pratica sembra che il kernel linux non riceva istruzioni di attivare tale protocollo dal bios il che ovviamente porta ad un aumento dei consumi.

Quindi dobbiamo essere noi stessi ad indicarlo al kernel, anche se avrei preferito prendere a sberle i produttori dei bios. Dunque cominciamo dal capire se il nostro pc usa l’ASPM, se nessuna periferica del nostro pc usa questo protocollo allora la guida è inutile e quindi l’aumento dei consumi deriva da altre cose e/o dalla batteria che sta invecchiando.

Per sapere il nostro hardware usa ASPM basta dare nel terminale questo comando: dmesg | grep -i aspm

Se ci esce un output vuoto allora non dobbiamo seguire i prossimi passi della guida

Se invece ci esce qualcosa allora dobbiamo andare a modificare una riga di grub2, ma prima è sempre meglio fare un backup: sudo cp -p /etc/default/grub /etc/default/grub_orig

e adesso modifichiamo il file: gksu gedit /etc/default/grub

e andiamo a cercare questa riga: GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”

una volta trovata dobbiamo modificarla in questo modo: GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash pcie_aspm=force”

Fate molte attenzione nel modificare la riga perché se sbagliate so cazzi vostri non vi si avvierà più il sistema e dovrete ripristinare il file usando il backup di poco fa.

In fine salviamo il file modificato e aggiorniamo grub dando nel terminale: sudo update-grub

Fatto questo riavviamo il pc,  preghiamo Odino perché ce la mandi buona e se la nostra distro si avvia correttamente facciamo anche un bel rito di sangue con un pollo nero in una notte di luna piena.

Tuttavia come dice lo stesso phoronix questo “fix” non funge per tutti infatti su una ristretta fascia di hardware pare non funzionare.

Io personalmente non ho hardware che usano ASPM nel mio piccino e ho una autonomia di 7 ore su 11 promesse quindi o asus spara cazzate oppure i mie consumi derivano da altro (cosa più plausibile). Dunque ora andate in pace la messa satanica è finita!

Update: Gente cercando un po in giro ho trovato anche questo post che ci da altre tre possibili soluzioni per l’eccessivo consumo energetico ma esse sono adatte solo a certi tipi di hardware quindi attenti a ciò che fate e vi raccomando di fare sempre un backup dei file che andate a modificare.

:# /dev/null/

25 pensieri riguardo “Il problema dei consumi energetici sul kernel linux”

  1. Conoscevo già questo fix ma per me non ha aiutato.
    Infatti sono fermo in maniera stabile alla 2.6.32 del kernel che non è affetta da bug del genere (sembra)

    Comunque picchio, scusami se mi permetto ma ci sono due orrori grammaticali nel post 😀

    “ha elucubrazioni” senza H
    “c’è la mandi buona” sarebbe ce

      1. Provato. Purtroppo il bios (ultima versione) dell’ E4300 non supporta ASPM. In effetti se lo forzo, linux lo disabilita seduta stante. (Arch 32 bit con kernel 3.0). Vabbè io 4h30 le riesco a fare (anche 5). Aspetteremo una fix da intel 🙂

  2. Il mio portatile hp, a due anni dal suo acquisto, mi garantisce una durata pari a poco più di un’ora, roba da matti! LOL
    Proverò questa tip, ma dubito che risolverà qualcosa…

    1. Dopo due anni dell’acquisto mi pare anche normale le batterie in media non campano più di 24-36 mesi xD

      Anche se il mio vecchio piccino anche esso HP dopo due anni ancora mi dava le 2 ore di autonomia 😀

      1. Dell mette una garanzia di 12 mesi sulle batterie. Quindi se all’11o mese di vita la batteria dovesse avere un’autonomia inferiore alle 2 ore chiamerò Dell e me la cambieranno. E quella nuova (e gratis) avrà altri 12 mesi di garanzia e via cosi 😀

      1. L’output del comando “dmesg | grep -i aspm” mi restituisce:
        [ 0.747376] ACPI _OSC control for PCIe not granted, disabling ASPM
        [ 0.750565] ACPI _OSC control for PCIe not granted, disabling ASPM

        Quindi presuppongo di si esatto?? 🙂 quindi mi basterebbe solo installare grub2 e inserire ciò che dice la guida giusto?

      2. Si esatto prova a seguire la guida, ma attento non è detto che la procedura funzioni quindi tieni sempre da parte un live cd per ripristinare il backup del file di grub che stai per editare.

  3. ciao picchio,
    sono stefano, ho regalato nu netbook come il tuo a mia sorella,
    che dopo una settimanella mi ha chiesto di installarci su un po di linux……
    io ovviamente non ho esitato un secondo e le ho piazzato su mint 12 con gnome.
    lei ci si trova bene ma sta batteria dura meno di 2 ore.
    Te come sei messo ad autonomia???
    qualche consiglio?

    1. Molto strano due ore sono troppo poche, sei sicuro che sia il modello con la batteria a 6 celle ? Io come autonomia raggiungo facilmente le 6 ore piene e quando non lo stresso molto anche di più. Comunque sia io non ho mai provato Mint12 per via di Gnome3 forse è colpa di Gnome Shell ma è solo una mia ipotesi. Sul mio io uso Arch+KDE 4.8.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...