2007-06-06
Revision History | ||
---|---|---|
Revision 1.2.3 | 2007-06-06 | Revised by: dn |
applicate correzioni da 1.2.3 (grazie a Rajeev V. Pillai) | ||
Revision 1.2.2 | 2007-05-30 | Revised by: dn |
corretto refuso nel comando disable nforce | ||
Revision 1.2.1 | 2007-05-13 | Revised by: dn |
correzioni per il nuovo copyright, correzione della liberatoria | ||
Revision 1.2 | 2007-05-10 | Revised by: dn |
aggiunto coolrun, nuovo URL per la versione Portoghese (Brasiliano), cambio di Licenza (da GNU FDL a GNU GPL), alcuni cambi minori relativi all'accessibilità | ||
Revision 1.1.12 | 2006-04-06 | Revised by: dn |
corretti refusi |
Come abilitare la funzionalità per il risparmio energetico del processore Athlon/Duron/AthlonXP su certe schede madri/chipset. Questo è utile per risparmiare elettricità ed abbassare la temperatura della CPU e del sistema. (Diminuirà anche il rumore, se si usano le ventole a controllo termico presenti nella cassa/sul dissipatore della CPU).
Traduzione a cura di Giancarlo Contrafatto. Revisione a cura di Antonio Colombo. Per versioni aggiornate di questo documento e per trovare altra documentazione in italiano sul software libero visitare il sito dell'ILDP
Il segnale HLT usato dal normale ciclo inattivo del kernel Linux, normalmente non conduce ad alcun significativo risparmio di energia sui processori della famiglia Athlon/Duron (d'ora in poi riferiti come processori Athlon). Per ottenere un risparmio energetico reale con un processore Athlon, bisogna mettere il processore in modalità STPGNT (Stop Grant Mode). Usando questa modalità, il processore è disconnesso dal front-side bus (FSB) e può spegnere alcune parti della CPU come pure ridurre il clock per risparmiare energia.
Certe schede madri/chipset moderni supportano anche una funzione che crea un STPGNT quando viene individuato un segnale HLT.
This document, Athlon Powersaving HOWTO, is copyrighted (c) 2003-2007 by Daniel Nofftz.
This work is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as published by the Free Software Foundation.
A copy of the license is available at http://www.daniel.nofftz.net/linux/gpl_v2.txt.
Linux is a registered trademark of Linus Torvalds.
Questo lavoro è distribuito nella speranza che sia utile, ma SENZA ALCUNA GARANZIA; senza neppure la garanzia implicata di VENDIBILITÀ o IDONEITÀ A USI PARTICOLARI. Si veda la Licenza Pubblica Generica GNU per maggiori dettagli.
Tutti i diritti d'autore appartengono ai rispettivi proprietari, se non altrimenti specificato. Non si deve considerare l'uso di un termine in questo documento come influenzante la validità di alcun marchio o marchio di servizio. La citazione di specifici prodotti o marche non deve essere interpretata come approvazione.
Ricevere reazioni a questo documento è estremamente essenziale. Soluzioni nuove per chipset nuovi sono specialmente necessarie, come lo sono i commenti, sia che le soluzioni proposte funzionino oppure no. Si prega di inviare aggiunte, commenti, critiche e domande al seguente indirizzo e-mail: <daniel@nofftz.net.NOSPAM>>
È possibile scrivermi sia in Inglese che in Tedesco.
Se si vuole sostenermi, è possibile fare donazioni usando Paypal (allo stesso indirizzo email) oppure inviarmi qualche nuovo pezzo di hardware con cui io possa giocare. ;)
La versione più recente di questo HOWTO sarà sempre rese disponibili nel sito: http://www.daniel.nofftz.net/linux/
Il codice sorgente di questo HOWTO è ospitato al Linux Documentation Project oppure può essere richiesto a me.
Nella seguente sezione presento diversi approcci per ottenere lo stesso obbiettivo: risparmiare energia in un sistema basato sul Athlon/Athlon-XP. L'approccio che consiglio al momento, è quello di usare "il metodo della riga di comando" o il programma Athcool (la patch al kernel è ormai obsoleta e non verrà più aggiornata, e la patch LVCool supporta solo una famiglia di chipset).
Quasi tutti questi approcci assegneranno, nel north bridge del chipset, il bit "disconnessione abilitata quando si individua un STPGNT". Il resto del lavoro viene sostenuto dal sottosistema ACPI del kernel, che invia un segnale STPGNT al processore quando entra in modalità inattiva acpi-c2.
Se il kernel in uso non ha ancora supporto per ACPI, bisogna abilitarlo nell'impostazione del kernel e ricompilare nuovamente il kernel. Le opzioni-ACPI si trovano sotto
+ -> . Devono essere impostate almeno le seguenti scelte: , e .Oppure per il kernel 2.4.22:
+ . Deve essere impostata almeno la seguente scelta: .Kernel 2.6.x:
+ . Deve essere impostata almeno la scelta . Non si dovrebbe abilitare Zona Termica !!Alcuni chipset supportano anche un STPGNT se un segnale HLT è rilevato. Queste schede madri/chipset non hanno bisogno che sia abilitato ACPI! Al momento mi servono riscontri su quali chipset funzionano senza ACPI e quali lo necessitano. Forse potreste provarlo sulla vostra scheda madre ed inviarmi un email. (vedere Section 3.1)
Per usare la linea di comando è normalmente necessario abilitare ACPI nel kernel, altrimenti se ne viene avvisati. Non è necessario riavviare il computer per abilitare il risparmio energetico. Lo si può abilitare/disabilitare dalla riga di comando, con il comando seguente:
abilitare: setpci -v -H1 -s 0:0.0 52=$(printf %x $((0x$(setpci -H1 -s 0:0.0 52) | 0x80)))
disabilitare: setpci -v -H1 -s 0:0.0 52=$(printf %x $((0x$(setpci -H1 -s 0:0.0 52) & 0x7f)))
abilitare:
setpci -v -H1 -s 0:0.0 92=$(printf %x $((0x$(setpci -H1 -s 0:0.0 92) | 0x80)))
setpci -v -H1 -s 0:0.0 95=$(printf %x $((0x$(setpci -H1 -s 0:0.0 95) | 0x02)))
disabilitare:
setpci -v -H1 -s 0:0.0 92=$(printf %x $((0x$(setpci -H1 -s 0:0.0 92) & 0x7f)))
setpci -v -H1 -s 0:0.0 95=$(printf %x $((0x$(setpci -H1 -s 0:0.0 95) & 0xfd)))
abilitare:
setpci -v -H1 -s 0:0.0 D2=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D2) | 0x80)))
setpci -v -H1 -s 0:0.0 D5=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D5) | 0x02)))
disabilitare:
setpci -v -H1 -s 0:0.0 D2=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D2) & 0x7f)))
setpci -v -H1 -s 0:0.0 D5=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D5) & 0xfd)))
abilitare:
setpci -v -H1 -s 0:0.0 82=$(printf %x $((0x$(setpci -H1 -s 0:0.0 82) | 0x80)))
setpci -v -H1 -s 0:0.0 85=$(printf %x $((0x$(setpci -H1 -s 0:0.0 85) | 0x02)))
disabilitare:
setpci -v -H1 -s 0:0.0 82=$(printf %x $((0x$(setpci -H1 -s 0:0.0 82) & 0x7f)))
setpci -v -H1 -s 0:0.0 85=$(printf %x $((0x$(setpci -H1 -s 0:0.0 85) & 0xfd)))
abilitare: setpci -v -H1 -s 0:0.0 6B=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6B) | 0x01)))
disabilitare: setpci -v -H1 -s 0:0.0 6B=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6B) & 0xfe)))
abilitare: setpci -v -H1 -s 0:0.0 6A=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6A) | 0x0003)))
disabilitare: setpci -v -H1 -s 0:0.0 6A=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6A) & 0xfffc)))
abilitare:setpci -v -H1 -s 0:0.0 6C=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6C) | 0x0003)))
disabilitare:
setpci -v -H1 -s 0:0.0 6C=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6C) & 0xfffc)))
abilitare:
setpci -v -H1 -s 0:0.0 E7=$(printf %x $((0x$(setpci -H1 -s 0:0.0 E7) | 0x06)))
disabilitare:
setpci -v -H1 -s 0:0.0 E7=$(printf %x $((0x$(setpci -H1 -s 0:0.0 E7) & 0xf9)))
abilitare: setpci -v -H1 -s 0:0.0 6F=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6F) | 0x10)))
disabilitare: setpci -v -H1 -s 0:0.0 6F=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6F) & 0xef)))
abilitare: setpci -v -s 0:0.0 0x62=$(printf %x $((0x$(setpci -H1 -s 0:0.0 62) | 0x06)))
disabilitare: setpci -v -s 0:0.0 0x62=$(printf %x $((0x$(setpci -H1 -s 0:0.0 62) & 0xf9)))
Coolrun è un breve shell script che fa risparmiare lavoro usando il metodo della riga di comando. È sviluppato/mantenuto da Grozdan Nikolov ed è basato su questo HOWTO.
Si possono avere più informazioni (e scaricarlo) qui: https://sourceforge.net/projects/coolrun/
Athcool è un breve programma che esegue lo stesso compito del comando setpci visto sopra. Supporta gli stessi chipset, rileva qual è il vostro chipset e sceglie le impostazioni adatte per far funzionare il risparmio-energia.
Si possono avere più informazioni (e scaricarlo) qui: http://members.jcom.home.ne.jp/jacobi/linux/softwares.html Non sono io l'autore di questo programma!
Su alcune schede più recenti i fabbricanti forniscono un aggiornamento del BIOS che predispone il bit o i bit necessari nel chipset della scheda (oppure offre la scelta di abilitare o no, nell'impostazione del BIOS). Riferirsi alla homepage del fabbricante della scheda madre per accertarsi se tale aggiornamento è disponibile.
La patch si basa su un'altra patch (di Jan Niehusmann) che ho trovato su Newsnet. Ho modificato la patch in modo da aggiungere supporto anche per il chipset KT266/266A. Incidentalmente, la mia patch fa lo stesso lavoro del metodo della riga di comando, tranne che lo fa dall'interno del kernel. Ecco perchè raccomando l'utilizzo del metodo della riga di comando, che è veramente semplice da usare e non richiede di modificare il kernel.
Allora... adesso, passo per passo, ecco come applicare la patch:
Per prima cosa, scaricare la patch:
Patch per il Kernel 2.4.21 (grazie a Thomas Reinhardt per aver fatto il porting a 2.4.21)
Patch per il Kernel 2.6.5 con supporto per tutti i chipset Via fino al KT600 (grazie a Sebastian Droege per aver fatto il porting a 2.6.5 ed aggiunto gli altri Chipsets)
Patch per il Kernel 2.6.9 che supporta tutti i chipset Via fino al KT600 (grazie a Alexander Hug per aver fatto il porting da 2.6.5 a 2.6.9)
Fare login come root
cd /usr/src
Applicare la patch: cat $path-to-patch/amd_cool.diff | patch -p0 (Per la nuova patch 2.6.5: cd linux e patch -p1)
cd linux
Eseguire Make per il nuovo kernel
Riavviare e, al prompt d'avvio del kernel, digitare l'istruzione amd_disconnect=yes . Ciò perchè si sa che ci sono dei bachi nel processore Athlon, che potrebbero causare problemi su parecchie schede madre. Provare la patch e se funziona, accodare l'istruzione amd_disconnect=yes al file /etc/lilo.conf.
LVCool è un piccolo porting del programma Vcool per Windows. Supporta solamente i chipsets KT133/133A e KX133 ed io non posso fornire supporto. Può essere scaricato qui. Questa soluzione non ha bisogno di avere ACPI compilata nel kernel.
Qui c'è un altro programma per risparmio energetico che dà supporto a parecchi chipset. Io non l'ho provato ma ho sentito dire che funziona. Dategli un'occhiata ... è anche accompagnato da un programma che potrebbe essere usato per controllare i chip di monitoraggio presenti su certe schede madri (come il pacchetto lm-sensors).
C'è un modulo del kernel che abilita il risparmio di energia sul chipset del multiprocessore 76MP. Potreste trovarlo qui;. Non so se funziona bene, ma ho ricevuto almeno un'email da qualcuno che diceva che funzionava. Perciò, dategli un'occhiata.
Bene ... state usando una delle impostazioni risparmia-energia descritte e volete verificare se funziona. Ecco due modi per controllare:
Se il diffusore della vostra CPU ha una ventola a controllo termico, sarebbe possibile controllare il livello di rumore della ventola per vedere se funziona o no. Dopo qualche minuto di inattività, date qualcosa da fare alla CPU.
Normalmente lo faccio così :
|
La stessa procedura descritta qui sopra funziona anche con un programma di monitoraggio della temperatura della CPU (come lm-sensors, xmbmon e rtsensors).
Ci sono due bachi noti nel processore Athlon/Duron. Questi sono i numeri 11 e 14 nella AMD Athlon Processor Revision Guide. Sembra che l'Athlon XP sia molto meno affetto da questi bachi. Così se si possiede un Athlon XP (come me) si è fortunati.
Ci possono essere i problemi seguenti (causati dai bachi):
salti nell'audio durante l'ascolto
salti e rallentamenti video durante la visione
trasferimenti ultra-DMA a disco rigido rallentati
blocco del sistema
problemi con l'USB
pigolio acuto riportato da alcuni
A volte un aggiornamento BIOS aiuta (questo è un modo per aggirare il baco 11, che si può fare tramite BIOS). Ma, per quanto ne so io, ci sono solo poche schede che hanno questa possibilità di soluzione nel BIOS).
Per l'Asus A7V133-C, si sa che abilitare la scelta-BIOS PCI master read caching
risolverà la maggior parte dei problemi. Dunque, si dovrebbe cercare tale funzionalità nel proprio BIOS.
Si sa anche che su certe schede, la scelta-BIOS Delayed Transaction
risolve alcuni problemi. Si può tentare anche questa opzione.
ATTENZIONE: su schede con il KT133A, ciò potrebbe introdurre il famoso baco VIA-Southbridge!
Da un messaggio su Newsnet, riguardante l'Asus A7V:
senza delayed transaction: salti nell'audio e nella visualizzazione TV
con delayed transaction: niente salti nell'audio e solo leggeri problemi di TV
con delayed transaction e master read caching: quasi nessun problema di TV e nessun salto nell'audio.
Esistono altre cause di problemi:
l'alimentazione non è abbastanza forte da soddisfare le fluttuazioni nel consumo di energia del processore/scheda madre
i regolatori di voltaggio di certe schede madri potrebbero avere problemi simili a quello dell'alimentatore ;)
state usando un K7S5A (per quanto ne so, questa scheda potrebbe avere un comportamento davvero strambo con il risparmio-energia abilitato)
Se si riscontrano problemi minori col risparmio-energia abilitato ma, ciò nonostante si vuole usare il risparmio-energia, si può abilitare il risparmio di energia per default, e disabilitarlo quando si vuole ascoltare musica, guardare la TV, ...
Grazie a Michael Hamilton per avermi dato l'idea di come funziona.
Il funzionamento di questa riparazione è stato confermato da due persone, quindi sembra che funzioni, ma potrebbe non funzionare per tutti. Siete gentilmente invitati a comunicarmi ulteriori esperienze!
Allora: sembra che almeno i salti nell'audio siano curabili massimizzando il timer di latenza PCI del dispositivo.
Per prima cosa bisogna trovare il "pci-address" della scheda-audio. Questo si potrebbe fare con lspci. Si deve cercare qualcosa come "Multimedia audio controller" oppure "AudioPCI". Annotate il "PCI-address" del dispositivo (qualcosa come: 01:06.0 -> che sta per: bus:slot,function) e impostare al massimo il suo timer di latenza. Questo viene fatto usando il comando setpci:
setpci -v -s "pci-address" latency_timer=ff
Per maggiori informazioni sul timer di latenza si può vedere qui.
Forse questo può servire anche a risolvere altri problemi come i problemi con l'USB e i rallentamenti nei trasferimenti al disco rigido, ma per ora questo non è stato verificato. Consideratevi liberi di provare (ma non date la colpa a me se non funziona o se la situazione peggiora) e fatemi sapere se funziona. il fatto è che io non ho nessuno di questi problemi per cui, non mi è possibile provare.
Se funziona, sarà necessario eseguire questo comando setpci ad ogni avviamento/ri-avviamento del computer. Quindi sarebbe cosa saggia metterlo in uno degli init-script (dopo il caricamento del modulo driver!).
Grazie a Wijatmoko Prayitno per queste informazioni!
Il funzionamento di questa riparazione è stato confermato per i chipset KT266, KT/KM333 e KT/KM400. Potrebbe anche funzionare su altri chipset Via. Per cortesia fatemi sapere se funziona su altri chipset Via!
Questo è abbastanza facile, e funziona come il metodo dalla riga di comando per abilitare il risparmio di energia:
abilitare: setpci -v -H1 -s 0:0.0 70=$(printf %x $((0x$(setpci -H1 -s 0:0.0 70) | 0x08)))
disabilitare: setpci -v -H1 -s 0:0.0 70=$(printf %x $((0x$(setpci -H1 -s 0:0.0 70) & 0xf7)))
Se funziona, sarà necessario eseguire questo comando setpci ad ogni avviamento/ri-avviamento del computer. Quindi sarebbe bene metterlo in uno degli init-script (dopo il caricamento del modulo driver!).
Aggiungere più chipset e più informazioni a questo documento.
Aggiungere qualche informazione sul sistema a risparmio energetico delle CPU Athlon64 e Opteron.
Aggiungere qualche informazione sui Notebook e il risparmio energetico.
Esistono anche traduzioni nelle lingue seguenti. Al momento, alcune non sono aggiornate.
Unghereseda Zsolt Mocza
Spagnolo da Carlos Mayo (very out-dated)
Portoghese Brasiliano/Portoghese da Bruno Buys
Francese da Mathieu Pillard (very out-dated)
Italiano da Giancarlo Contrafatto
Tedesco (solo in parte) da Fabian Mohren
Giapponese da Seiji Kaneko