Ghid pentru Gestionarea Consumului de Energie
1.
Introducere
Capacitatea şi durata de viaţă a acumulatorilor portabilelor s-a
îmbunătăţit mult în ultimii ani. La fel de adevărat, procesoarele
moderne consumă mult mai multă energie decât cele vechi şi fiecare
generaţie de laptop-uri introduce mai multe dispozitive mari consumatoare de
energie. De aceea Gestionarea Consumului de Energie este mai importantă ca
niciodată. Creşterea duratei de folosire a acumulatorului nu înseamnă
neapărat cumpărarea altuia. Multe pot fi obţinute prin utilizarea
inteligentelor metode referitoare la gestionarea consumului de energie.
O trecere în revistă
Luaţi aminte că acest ghid descrie Gestionarea Consumului de Energie pentru
portabile. În timp ce unele secţiuni s-ar putea potrivi şi pentru
server-e, altele nu, şi chiar pot provoca distrugeri sistemului dvs.
Nu aplicaţi nimic din acest ghid pe un server, doar dacă ştiţi cu
adevărat ce faceţi.
Pentru că acest ghid a devenit destul de lung, iată o scurtă trecere în
revistă care să vă ajute să-l parcurgeţi mai uşor.
Capitolul Condiţii esenţiale cuprinde cerinţe ce trebuie îndeplinite
înainte ca oricare informaţii din secţiunile următoare, referitoare la
dispozitive să fie aplicate. Acestea includ setări în BIOS, configurarea
kernel-ului şi unele lămuriri în partea aplicaţii utilizator.
Următoarele trei capitole se referă la dispozitive care în mod obişnuit
consumă cel mai mult din energie - procesorul, monitorul şi hard-disc-ul.
Fiecare poate fi configurat separat. Gestionarea Consumului de Energie al
Procesorului descrie cum să ajustaţi frecvenţa procesorului pentru a
salva maximum de energie fără a afecta prea mult performanţa. Câteva
diferite metode previn hard-disc-ul dvs. să funcţioneze atunci când nu este
cazul în Gestionarea Consumului de Energie pentru disc (reducerea
nivelului de zgomot ca un interesant efect secundar). Câteva cuvinte
referitoare la reţelele LAN şi USB încheie secţiunea referitoare la
dispozitive hardware în Gestionarea consumului de energie pentru alte
dispozitive în timp ce un alt capitol este dedicat (deşi experimental)
pentru stările sleep. Şi nu în ultimul rând Rezolvare
Probleme arată problemele comune.
Consumul de energie pentru fiecare componentă
Figura 1.1: Consumul de energie pentru fiecare componentă |
 |
Aproape fiecare componentă poate funcţiona în diferite stări - oprit,
adormit, pasiv, activ pentru a numi câteva - consumând o diferită cantitate
de energie. Mare parte este consumată de ecranele LCD, procesor, chipset şi
discuri. Deseori o componentă este capabilă de a activa Gestionarea
Consumului de Energie în BIOS, independent de sistemul de operare, dar o
configurare inteligentă în sistemul de operare adaptată unor situaţii
diferite poate aduce mult mai mult.
2.
Condiţii esenţiale
Înainte de a discuta detaliile despre pregătirea dispozitivelor individuale
pentru Gestionarea Consumului de Energie, asiguraţi-vă că sunt
îndeplinite cerinţele obligatorii. După controlul parametrilor în BIOS,
unele opţiuni din kernel trebuie activate + acestea sunt pe scurt ACPI,
"stările de adormire" şi scalarea (baleierea) frecvenţei procesorului.
Întrucât economisirea de energie de cele mai multe ori este însoţită de
pierderi de performanţă ori latenţă crescută, opţiunile ar trebui
activate în momentul funcţionării pe acumulatori. Chiar acolo intervine un
nou nivel de rulare, acumulator.
Partea legată de BIOS
Pentru început aruncaţi o privire în setările dvs. referitoare la
Gestionarea Consumului de Energie în BIOS. Cea mai bună cale este combinarea
metodelor referitoare la BIOS şi sistemul de operare, dar pentru moment este
mai bine să dezactivăm mare parte din opţiunile specifice din BIOS.
Aceasta ne asigură că nu va interfera cu metodele proprii dvs. Nu uitaţi
să reverificaţi setările BIOS după ce aţi configurat restul.
Setarea indicatorilor USE
Trebuie să verificaţi că indicatorul USE acpi este setat în
/etc/make.conf. Alţi indicatori USE ce ar putea fi interesanţi
pentru sistemul dvs. sunt apm, lm_sensors, nforce2,
nvidia, pmu. Consultaţi
/usr/portage/profiles/use*.desc pentru detalii. Dacă aţi uitat
să setaţi unii dintre aceşti indicatori, vă puteţi recompila pachetele
afectate utilizând opţiunea --newuse pentru comanda emerge,
verificaţi man 1 emerge.
Configurarea kernel-ului
Munca la suportul ACPI (Configurare Avansată şi Interfaţă Energie) în
kernel este În progres. Folosind un kernel recent ne vom asigura că veţi
obţine maximum din acesta.
Există diverse surse de kernel în Portage. Aş recomanda utilizarea
gentoo-sources sau suspend2-sources. Cel din urmă conţine
patch-uri pentru Software Suspend 2, pentru detalii consultaţi capitolul
despre stările sleep, pentru mai multe detalii. În configurarea
kernel-ului, activaţi cel puţin aceste opţiuni:
Cod 2.1: Setări minime ale kernel-ului pentru Gestionarea Consumului de Energie (Kernel 2.6) |
Power Management Options --->
[*] Power Management Support
[ ] Software Suspend
ACPI( Advanced Configuration and Power Interface ) Support --->
[*] ACPI Support
[ ] Sleep States
[ ] /proc/acpi/sleep (deprecated)
[*] AC Adapter
[*] Battery
<M> Button
<M> Video
[ ] Generic Hotkey
<M> Fan
<M> Processor
<M> Thermal Zone
< > ASUS/Medion Laptop Extras
< > IBM ThinkPad Laptop Extras
< > Toshiba Laptop Extras
(0) Disable ACPI for systems before Jan 1st this year
[ ] Debug Statements
[*] Power Management Timer Support
< > ACPI0004,PNP0A05 and PNP0A06 Container Driver (EXPERIMENTAL)
CPU Frequency Scaling --->
[*] CPU Frequency scaling
[ ] Enable CPUfreq debugging
< > CPU frequency translation statistics
[ ] CPU frequency translation statistics details
Default CPUFreq governor (userspace)
<*> 'performance' governor
<*> 'powersave' governor
<*> 'ondemand' cpufreq policy governor
<*> 'conservative' cpufreq governor
<*> CPU frequency table helpers
<M> ACPI Processor P-States driver
<*> CPUFreq driver for your processor
|
Decideţi dvs. dacă doriţi să activaţi Software Suspend şi Sleep States
(vedeţi mai jos). Dacă deţineţi un portabil ASUS, Medion sau Toshiba,
activaţi în dreptul secţiunii corespunzătoare.
Kernel-ul trebuie să ştie cum să activeze scalarea frecvenţei
procesorului dvs. Aşa cum fiecare model de procesor are o interfaţa
diferită, trebuie să alegeţi driver-ul corespunzător pentru procesorul
dvs. Fiţi foarte atenţi aici - activând Intel Pentium 4 clock
modulation pe un sistem cu procesor mobile Pentium M, acesta va conduce la
rezultate ciudate, de exemplu. Citiţi documentaţia kernel-ului dacă nu
ştiţi ce opţiuni să alegeţi.
Compilaţi kernel-ul, asiguraţi-vă că modulele corecte vor fi încărcate
la pornire şi boot-aţi cu noul dvs. kernel, cu capabilităţi ACPI. Apoi
rulaţi emerge sys-power/acpid pentru a obţine daemon-ul acpi. Acesta
vă informează în legătură cu evenimente cum sunt comutarea de pe
curent alternativ (priză) pe acumulator sau închiderea capacului
portabilului. Asiguraţi-vă că modulele sunt încărcate pentru pornire,
asta dacă nu au fost compilate în kernel şi porniţi acpid prin comanda
/etc/init.d/acpid start. Rulaţi linia rc-update add acpid
default pentru a încărca daemon-ul la pornire. Veţi vedea curând cum
se foloseşte.
Cod 2.2: Instalarea acpid |
# emerge sys-power/acpid
# /etc/init.d/acpid start
# rc-update add acpid default
|
Crearea unui nivel de rulare "acumulator"
Politica implicită va fi activarea Gestionării Consumului de Energie doar
când este necesară - când folosim acumulatori. Pentru a comuta uşor
între curent alternativ (priză) şi acumulator, creaţi un nivel de rulare
acumulator care să conţină toate script-urile ce pornesc şi
opresc Gestionarea Consumului de Energie.
Notă:
Puteţi omite fără probleme această secţiune, dacă nu agreaţi idea
de a avea un alt nivel de rulare. Totuşi, omiterea acestui pas va face
configurarea în continuare un pic mai complicată. Următoarele secţiuni
presupun că există un nivel de rulare acumulator.
|
Cod 2.3: Crearea nivelului de rulare acumulator |
# cd /etc/runlevels
# cp -a default acumulator
|
Gata. Noul dvs. nivel de rulare acumulator conţine totul ca
default (nivelul implicit), dar încă nu există o comutare
automată între cele două încă. Este vremea să schimbăm acest lucru.
Reacţionarea la evenimente ACPI
Evenimentele tipice ACPI sunt închiderea carcasei, schimbarea sursei de curent
sau apăsarea butonului 'sleep'. Un eveniment important este schimbarea sursei
de curent, care ar trebui să determine o schimbare a nivelului de rulare.
Un mic script va avea grijă de acest lucru.
Mai întâi vă trebuie un script ce modifică nivelul de execuţie în
default, respectiv acumulator, în funcţie de sursa de putere.
Acest script utilizează comanda on_ac_power din pachetul
sys-power/powermgmt-base - asiguraţi-vă că acest script este
instalat în sistemul dvs.
Cod 2.4: Instalarea powermgt-base |
# emerge powermgmt-base
|
Acum puteţi să determinaţi sursa de putere prin execuţia on_ac_power
&& echo Curent alternativ || echo Ruleaza pe baterii într-o
sesiune de shell. Script-ul de mai jos este responsabil cu modificarea
nivelelor de execuţie. Salvaţi-l ca
/etc/acpi/actions/pmg_switch_runlevel.sh.
Cod 2.5: /etc/acpi/actions/pmg_switch_runlevel.sh |
#!/bin/bash
RUNLEVEL_AC="default"
RUNLEVEL_BATTERY="acumulator"
if [ ! -d "/etc/runlevels/${RUNLEVEL_AC}" ]
then
logger "${0}: Runlevel ${RUNLEVEL_AC} does not exist. Aborting."
exit 1
fi
if [ ! -d "/etc/runlevels/${RUNLEVEL_BATTERY}" ]
then
logger "${0}: Runlevel ${RUNLEVEL_BATTERY} does not exist. Aborting."
exit 1
fi
if on_ac_power
then
if [[ "$(cat /var/lib/init.d/softlevel)" != "${RUNLEVEL_AC}" ]]
then
logger "Switching to ${RUNLEVEL_AC} runlevel"
/sbin/rc ${RUNLEVEL_AC}
fi
elif [[ "$(cat /var/lib/init.d/softlevel)" != "${RUNLEVEL_BATTERY}" ]]
then
logger "Switching to ${RUNLEVEL_BATTERY} runlevel"
/sbin/rc ${RUNLEVEL_BATTERY}
fi
|
Nu uitaţi să rulaţi chmod +x
/etc/acpi/actions/pmg_switch_runlevel.sh pentru a face script-ul
executabil. Ultimul lucru ce trebuie efectuat este să executăm script-ul
ori de câte ori sursa de putere se modifică. Aceasta poate fi efectuată
prin analizarea tuturor evenimentelor ACPI cu ajutorul acpid. Mai
întâi trebuie să ştiţi ce evenimente sunt generate în momentul în care
sursa de putere se modifică. Evenimentele sunt denumite ac_adapter
şi battery pe majoritatea sistemelor laptop, dar este posibil să fie
diferit pentru sistemul dvs.
Cod 2.6: Determinarea evenimentelor ACPI pentru modificarea sursei de putere |
# tail -f /var/log/acpid | grep "received event"
|
Rulaţi comanda de mai sus şi scoateţi cablul de putere. Ar trebui să
observaţi ceva de genul:
Cod 2.7: Exemplu de jurnal pentru comutarea sursei de putere |
[Tue Sep 20 17:39:06 2005] received event "ac_adapter AC 00000080 00000000"
[Tue Sep 20 17:39:06 2005] received event "battery BAT0 00000080 00000001"
|
Partea interesantă este şirul de caractere între ghilimele afişat după
received event. Va fi extras de liniile de evenimente din fişierele pe
care urmează să le creaţi mai jos. Nu vă faceţi griji dacă sistemul
dvs. generează mai multe evenimente sau aceleaşi de mai multe ori. Atât
timp cât orice eveniment este generat, comutarea nivelelor de execuţie va
funcţiona.
Cod 2.8: /etc/acpi/events/pmg_ac_adapter |
event=ac_adapter.*
action=/etc/acpi/actions/pmg_switch_runlevel.sh %e
|
Cod 2.9: /etc/acpi/events/pmg_battery |
event=acumulator.*
action=/etc/acpi/actions/pmg_switch_runlevel.sh %e
|
La final, aplicaţia acpid trebuie reponită pentru a recunoaşte
modificările.
Cod 2.10: Terminarea comutării nivelului de rulare folosind acpid |
# /etc/init.d/acpid restart
|
Încercaţi: conectaţi alimentarea la priză şi urmăriţi log-ul de
sistem generat de syslog la mesajele "Switching to AC mode" sau "Switching to
battery mode". Citiţi secţiunea Rezolvare Probleme atunci când script-ul nu
reuşeşte să determine corect sursa de curent.
Datorită naturii mecanismului evenimentelor, portabilul dvs. va porni în
nivelul de rulare default indiferent de situaţia AC/acumulator. Acest
lucru este unul bun dacă rulaţi cu alimetare la priză, însă am dori
să rulăm în nivelul de iniţializare acumulator, în alte situaţii. O
soluţie ar fi să adăugaţi o altă intrare în aplicaţia boot-loader cu
parametrul softlevel=acumulator, dar e mai bine să uitaţi folosirea
acesteia. O cale mai bună este 'inventarea' unui fals eveniment ACPI la
sfârşitul procesului de boot-are şi să lăsaţi script-ul
pmg_switch_runlevel.sh să decidă oportunitatea schimbării de
nivel de rulare. Deschideţi /etc/conf.d/local.start cu editorul
dvs. favorit şi adăugaţi aceste linii:
Cod 2.11: Ajustarea nivelului de rulare la pornire, prin editarea local.start |
/etc/acpi/actions/pmg_switch_runlevel.sh "acumulator/acumulator"
|
Astfel pregătite puteţi activa metode de Gestionarea Consumului de Energie
pentru dispozitive individuale.
3.
Gestionarea Consumului de Energie pentru Procesor
Procesoarele mobile pot opera la frecvenţe diferite. Unele permit, de
asemenea, modificarea voltajului. În majoritatea timpului, procesorul nu
rulează la viteză maximă, iar scalarea lui inferioară va salva multă
energie - adesea fără o scădere a performanţei.
Câţiva termeni tehnici
Scalarea frecvenţei procesorului aduce în lumină câţiva termeni tehnici
care pot fi necunoscuţi dvs. Iată o scurtă introducere.
Înainte de toate, kernel-ul trebuie înzestrat cu posibilitatea schimbării
frecvenţei procesorului. Driver-ul CPUfreq ştie ce comenzi să
ruleze legate de procesorul dvs. De aceea este important să-l alegem pe cel
potrivit în kernel. Ar trebui să fi făcut deja asta. Odată ce kernel-ul
ştie cum să schimbe frecvenţele, trebuie să ştie şi ce frecvenţă
să seteze. Aceasta se face pe baza politicii care constă în
politica CPUfreq şi decident. Politica CPUfreq înseamnă doar
două numere care definesc plaja de valori în care poate varia frecvenţa -
valoarea minimă şi valoarea maximă. Decidentul alege o frecvenţă
disponibilă din plaja de valori menţionată pentru a fi folosită. De
exemplu, decidentul economisire energie alege întotdeauna cea mai
mică frecvenţă disponibilă, iar decidentul performanţă alege
cea mai mare frecvenţă disponibilă. Decidentul userspace nu ia nici
o decizie dar alege când utilizatorul (sau un program rulat de utilizator)
doreşte - adică citeşte frecvenţa din
/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed.
Încă nu prea sună a schimbare dinamică a frecvenţei şi de fapt nu
prea este. Dinamica, totuşi, poate fi obţinută prin diferite abordări.
De exemplu, decidentul ondemand ia deciziile în funcţie de gradul de
ocupare al procesorului. Acelaşi lucru este făcut de diverse programe
utilitare ca cpudyn, cpufreqd, powernowd şi multe
altele. Evenimentele ACPI pot fi folosite pentru a activa sau dezactiva
schimbarea dinamică a frecvenţei în funcţie de sursa de curent.
Stabilirea manuală a frecvenţei
Reducerea vitezei şi tensiunii procesorului are două avantaje: Pe de-o
parte mai puţină energie consumată, pe de altă parte apare un
îmbunătăţire din punct de vedere termic pentru că sistemul dvs. nu se
încălzeşte ca în cazul rulării la viteza maximă. Principalul
dezavantaj este desigur pierderea de performanţă. Reducerea vitezei
procesorului este un compromis între pierderea de performanţă şi
economisirea de energie.
Notă:
Nu toate portabilele suportă scalarea frecvenţei. Dacă nu sunteţi siguri,
aruncaţi o privire pe lista procesoarelor suportate, în secţiunea
Rezolvare Probleme pentru a verifica dacă procesorul dvs. este
suportat.
|
Este timpul să verificăm dacă schimbarea frecvenţei procesorului
funcţionează. Să instalăm un alt program, care este de foarte ajutor în
scopuri de analiză/depanare: sys-power/cpufrequtils
Cod 3.1: Verificarea frecvenţei procesorului |
# emerge cpufrequtils
# cpufreq-info
|
Iată un exemplu de rezultat:
Cod 3.2: Rezultat exemplu al cpufreq-info |
cpufrequtils 0.3: cpufreq-info (C) Dominik Brodowski 2004
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:
driver: centrino
CPUs which need to switch frequency at the same time: 0
hardware limits: 600 MHz - 1.40 GHz
available frequency steps: 600 MHz, 800 MHz, 1000 MHz, 1.20 GHz, 1.40 GHz
available cpufreq governors: conservative, ondemand, powersave, userspace, performance
current policy: frequency should be within 924 MHz and 1.40 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 1.40 GHz.
|
Acum jucaţi-vă cu cpufreq-set pentru a vă asigura că schimbarea
frecvenţei funcţionează. Rulaţi de exemplu cpufreq-set -g ondemand
pentru activarea decidentului ondemand şi verificaţi schimbarea cu
cpufreq-info. Dacă nu funcţionează aşa cum este de aşteptat,
puteţi găsi ajutor în secţiunea Rezolvare Probleme la sfârşitul acestui
ghid.
Adaptarea automată a frecvenţei
Cele precizate mai sus sună destul de frumos, dar greu de realizat în viaţa
de zi cu zi. Există mai multe abordări diferite pentru a face acest lucru.
Următorul tabel oferă o scurtă descriere pentru a vă ajuta în a alege
una din ele. Este bine separat în trei categorii, kernel pentru
abordări ce doar au nevoie de suport kernel, daemon pentru programe
care rulează în fundal şi graphical pentru programe care oferă o
interfaţă grafică pentru uşoară configurare şi schimbări.
| Nume |
Categorie |
Decizia comutării |
Decidenţi kernel |
Decidenţi suplimentari |
Comentarii |
| decident 'ondemand' |
Kernel |
Încărcare procesor |
N.A. |
N.A. |
Alege frecvenţa maximă în cazul încărcării procesorului şi
încetineşte câte puţin când procesorul nu are activitate. Optimizarea
în plus a fişierelor în
/sys/devices/system/cpu/cpu0/cpufreq/ondemand/. Totuşi
necesită utilitare (programe, script-uri) dacă se schimbă decidentul
sau este dorit acelaşi.
|
| decident 'conservativ' |
Kernel |
Încărcare procesor |
N.A. |
N.A. |
Spre deosebire de decidentul ondemand, cel conservativ nu sare la
frecvenţa maximă când încărcarea procesorului este ridicată, ci
măreşte frecvenţa pas cu pas. Optimizarea în plus a fişierelor în
/sys/devices/system/cpu/cpu0/cpufreq/ondemand/. Totuşi,
necesită utilitare în spaţiul utilizator (programe şi script-uri) în
cazul în care comutarea decidentului sau unele acţiuni similare este
necesară.
|
| cpudyn |
Daemon |
Încărcare procesor |
Performanţă, economisire energie |
Dinamic |
Suportă de asemenea starea standby pentru disc - luaţi aminte totuşi
că laptop mode în multe cazuri va face o treabă mai bună.
|
| cpufreqd |
Daemon |
Nivel acumulator, ocupare procesor, temperatură, programe care rulează şi altele
|
Toate disponibile |
Nici unul |
Configurare Sofisticată (dar şi complicată). Extensibil prin
intermediul aplicaţiilor plugin, cum ar fi monitorizarea senzorilor
(lm_sensors) sau coordonarea unor memorii sau procesoare de plăci grafice
bazate pe NVidia. Cpufreqd deţine funcţii SMP şi poate fi, opţional,
manvrat la rulare.
|
|
powernowd
|
Daemon |
Încărcare procesor |
Nici unul |
Pasiv, slab, agresiv |
Suportă SMP |
|
ncpufreqd
|
Daemon |
Temperatură |
Nici unul |
Economisire energie, perfomanţă |
Comută decidentul utilizat între perfomanţă şi economisire de
energie, depinzând de temperatura sistemului. Foarte folositor pe sisteme
laptop cu probleme serioase de temperatură.
|
| speedfreq |
Daemon |
Încărcare procesor |
Nici unul |
Dinamic, economie energie, performanţă, viteză fixă |
Uşor configurabil, cu o interfaţă drăguţă client/server.
Necesită un kernel 2.6. Programul nu mai este menţinut şi va fi scos
din arborele Portage în viitorul apropiat. Comutaţi la cpufreqd dacă
încă îl folosiţi.
|
| gtk-cpuspeedy |
Grafic |
Nici unul |
Nici unul |
Nici unul |
Aplicaţie Gnome, o unealtă grafică pentru a stabili manual frecvenţa
procesorului. Nu oferă automatizare în vreun fel.
|
| klaptopdaemon |
Grafic |
Nivel acumulator |
Toate disponibile |
Nici unul |
Doar pentru KDE, decidentul 'ondemand' cerut pentru scalarea dinamică a
frecvenţei.
|
În timp ce ajustarea frecvenţei la nivelul curent al ocupării pare
simplă la prima vedere, nu este o sarcină aşa de uşoară. Un algoritm
nefericit poate cauza comutarea între două frecvenţe permanent sau irosirea
energiei când este aleasă frecvenţa la un nivel înalt, care nu este
necesar.
Pe care să îl aleg? Dacă nu aveţi nici o idee, încercaţi
cpufreqd:
Cod 3.3: Instalarea cpufreqd |
# emerge cpufreqd
|
cpufreqd poate fi configurat prin editarea
/etc/cpufreqd.conf. Fişierul de configurare implicit poate
părea un pic confuz. Recomand înlocuirea acestuia cu unul al dezvoltatorului
Gentoo Henrik Brix Andersen (vedeţi mai jos). Vă rugăm să notaţi faptul
că aveţi nevoie de cpufreqd-2.0.0 sau o versiune ulterioară. Versiunile
anterioare au o sintaxă diferită pentru fişierul de configurare.
Cod 3.4: /etc/cpufreqd.conf |
[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=3
enable_plugins=acpi_ac, acpi_battery
enable_remote=1
remote_group=wheel
verbosity=5
[/General]
[Profile]
name=ondemand
minfreq=0%
maxfreq=100%
policy=ondemand
[/Profile]
[Profile]
name=conservative
minfreq=0%
maxfreq=100%
policy=conservative
[/Profile]
[Profile]
name=powersave
minfreq=0%
maxfreq=100%
policy=powersave
[/Profile]
[Profile]
name=performance
minfreq=0%
maxfreq=100%
policy=performance
[/Profile]
[Rule]
name=battery
ac=off
profile=conservative
[/Rule]
[Rule]
name=battery_low
ac=off
battery_interval=0-10
profile=powersave
[/Rule]
[Rule]
name=ac
ac=on
profile=ondemand
[/Rule]
|
Acum, puteţi porni şi aplicaţia daemon cpufreqd. Adăugaţi-l în
nivelurile de rulare default şi acumulator, de asemenea.
Cod 3.5: Pornirea cpufreqd |
# rc-update add cpufreqd default acumulator
# rc
|
Uneori este de dorită să selectaţi o altă politică decât cea aleasă
de aplicaţie, spre exemplu, când puterea bateriei este la un nivel inferior,
însă ştiţi că o sursă de curent va fi disponibilă în curând. În
acest caz, comutaţi modul manual al aplicaţiei cpufreqd cu cpufreqd-set
manual şi selectaţi una din politicile configurate (aşa cum sunt
afişate de cpufreqd-get). Puteţi reveni din modul manual prin
execuţia cpufreqd-set dynamic.
Atenţie:
Nu rulaţi concomitent mai mult de unul din programele de mai sus. Poate
conduce la confuzii cum sunt comutarea permanentă între două frecvenţe.
|
Verificarea rezultatului
Ultimul lucru ce trebuie verificat este dacă noile dvs. metode sunt
eficiente. O simplă cale este monitorizarea frecvenţei procesorului în timp
ce lucraţi cu portabilul dvs.:
Cod 3.6: Monitorizarea vitezei procesorului |
# watch grep \"cpu MHz\" /proc/cpuinfo
|
Dacă /proc/cpuinfo nu se actualizează (consultaţi Rezolvare
Probleme), monitorizaţi frecvenţa procesorului cu:
Cod 3.7: Monitorizare alternativă a vitezei procesorului |
# watch x86info -mhz
|
În funcţie de configurările dvs., viteza procesorului ar trebui să
crească la solicitare mare, să scadă în cazul lipsei de activităţi
sau să rămână la acelaşi nivel. Când folosiţi cpufreq şi verbosity
setat la 5 sau mai mult în cpufreqd.conf primiţi informaţii
suplimentare despre ceea ce este raportat către syslog.
4.
Gestionarea consumului de energie pentru panouri LCD
Aşa cum puteţi vedea în figura 1.1,
panourile LCD consumă cea mai mare parte a energiei (este posibil să nu fie
cazul pentru procesoare ne-mobile). De aceea este destul de important nu doar
să opriţi panoul când nu este necesar, dar de asemenea pentru reducerea
luminozităţii, dacă este posibil. Multe portabile oferă posibilitatea
controlului luminozităţii.
Setările Standby
Primul lucru ce trebuie verificat sunt timpii standby/suspend/off ai panoului.
Întrucât depinde foarte mult de managerul de ferestre folosit, vă las să
va daţi seama pe dvs. Doar două observaţii utile: dezactivarea terminalului
poate fi făcută cu setterm -blank <număr-de-minuteM>,
setterm -powersave on şi setterm -powerdown
<număr-de-minuteM>. Pentru Xorg, modificaţi
/etc/X11/xorg.conf asemănător cu ce urmează:
Cod 4.1: Configurarea opţiunii suspend pentru panouri LCD în Xorg şi XFree86 |
Section "ServerLayout"
Identifier [...]
[...]
Option "BlankTime" "5"
Option "StandbyTime" "10"
Option "SuspendTime" "20"
Option "OffTime" "30"
[...]
EndSection
[...]
Section "Monitor"
Identifier [...]
Option "DPMS" "true"
[...]
EndSection
|
Aceleaşi configurări pentru XFree86 şi /etc/X11/XF86Config.
Diminuarea luminii de fundal
Probabil, cea mai importantă este luminozitatea. Dacă aveţi acces la
parametrii luminozităţii prin intermediul unui program, scrieţi un mic
script ce reduce luminozitatea în modul acumulator şi salvaţi-l în nivelul
dvs. de rulare acumulator. Următorul script ar trebui să
funcţioneze pe cele mai multe modele IBM Thinkpad şi Toshiba. Pentru
modelele Toshiba, instalaţi app-laptop/acpitool şi ignoraţi
setările pentru ibm_acpi, cum sunt descrise mai jos:
Atenţie:
Suportul privind setarea luminozităţii este încă experimental în
ibm-acpi. Accesează hardware-ul direct şi poate cauza deteriorări grave
în sistemul dvs. Consultaţi site-ul web ibm-acpi
|
Pentru a fi capabil în a seta nivelul de luminozitate, modulul ibm_acpi
trebuie încărcat cu un parametru experimental.
Cod 4.2: încărcarea automată a modulului ibm_acpi |
# echo "options ibm_acpi experimental=1" >> /etc/modules.d/ibm_acpi
# /sbin/modules-update
# echo ibm_acpi >> /etc/modules.autoload.d/kernel-2.6
# modprobe ibm_acpi
|
Această metodă ar trebui să funcţioneze fără mesaje de eroare şi
un fişier /proc/acpi/ibm/brightness ar trebui creat după
încărcarea modulului. Un script de iniţializare se va ocupa de alegerea
nivelului de luminozitate, corespunzător cu sursa de energie.
Cod 4.3: /etc/conf.d/lcd-brightness |
BRIGHTNESS_AC=7
BRIGHTNESS_BATTERY=4
|
Cod 4.4: /etc/init.d/lcd-brightness |
#!/sbin/runscript
set_brightness() {
if on_ac_power
then
LEVEL=${BRIGHTNESS_AC:-7}
else
LEVEL=${BRIGHTNESS_BATTERY:-4}
fi
if [ -f /proc/acpi/ibm/brightness ]
then
ebegin "Setting LCD brightness"
echo "level ${LEVEL}" > /proc/acpi/ibm/brightness
eend $?
elif [[ -e /usr/bin/acpitool && -n $(acpitool -T | grep "LCD brightness") ]]
then
ebegin "Setting LCD brightness"
acpitool -l $LEVEL >/dev/null || ewarn "Unable to set lcd brightness"
eend $?
else
ewarn "Setting LCD brightness is not supported."
ewarn "For IBM Thinkpads, check that ibm_acpi is loaded into the kernel"
ewarn "For Toshiba laptops, you've got to install app-laptop/acpitool"
fi
}
start() {
set_brightness
}
stop () {
set_brightness
}
|
Când aţi terminat, asiguraţi-vă că luminozitatea este modificată
automat, prin adăugarea script-ului la nivelul de rulare acumulator.
Cod 4.5: Activarea modificării automate a luminozităţii |
# chmod +x /etc/init.d/lcd-brightness
# rc-update add lcd-brightness battery
# rc
|
5.
Gestiunea Consumului de Energie pentru Hard-Disk
Discurile fixe consumă mai puţină energie în modul sleep. Astfel, are
sens să activăm salvarea energiei ori de câte ori discul nu este utilizat
pentru o anumită perioadă de timp. Vă vom arăta două posibile
alternative pentru acest lucru. În primul rând, modul laptop va salva cea
mai mare parte a energiei din cauza unor măsuri ce previn, sau în ultimul
caz, întârzie accesele la scriere. Dezavantajul este că, din cauza unor
accese de scriere întârziate, o eroare în kernel sau o cădere de tensiune
va fi mult mai periculoasă pentru pierderea datelor. Dacă nu vă place
acest lucru, va trebui să vă asiguraţi că nu mai sunt procese ce scriu
pe disc în mod frecvent. După acesasta, puteţi activa proprietăţile de
salvare a energiei ale discului dvs. cu hdparm ca o a doua alternativă.
Marirea timpului de inactivitate - modul laptop
Versiunile recente de kernel (2.6.6 sau mai mare, cele 2.4 recente şi altele
cu patch-uri) includ aşa-numitul mod laptop. Când este activat,
memoriile buffer necurate sunt scrise pe disc la apeluri de citire sau după
10 minute (în loc de 30 de secunde). Aceasta minimizează timpul în care
discul trebuie să fie utilizat.
Cod 5.1: Pornirea automată a modului laptop |
# emerge laptop-mode-tools
|
laptop-mode-tools are propriul fişier de configurare în
/etc/laptop-mode/laptop-mode.conf. Modificaţi-l în voie, este
foarte bine comentat. Rulaţi rc-update add laptop_mode battery pentru
a-l porni automat.
Versiunile recente (1.11 sau mai recente) ale laptop-mode-tools includ un nou
utilitar lm-profiler. Acesta va monitoriza utilizarea discului
sistemului şi rularea serviciilor de reţea şi sugerează să le
dezactivaţi pe cele nenecesare. Le puteţi dezactiva prin intermediul
suportului integrat al laptop-mode-tools (ce va fi refăcut de către
script-ul /sbin/rc din Gentoo) sau utilizaţi nivelele dvs. de rulare
default/battery (recomandat).
Cod 5.2: Exemplu de afişare la rularea lm-profiler |
# lm-profiler
Profiling session started.
Time remaining: 600 seconds
[4296896.602000] amarokapp
Time remaining: 599 seconds
[4296897.714000] sort
[4296897.970000] mv
Time remaining: 598 seconds
Time remaining: 597 seconds
[4296900.482000] reiserfs/0
|
După profilarea sistemului dvs. pentru zece minute, lm-profiler vă va
prezenta o listă a serviciilor care ar fi putut cauza accese la disc în acea
perioadă.
Cod 5.3: lm-profiler sugerează dezactivarea unor servicii |
Program: "atd"
Reason: standard recommendation (program may not be running)
Init script: /etc/init.d/atd (GUESSED)
Do you want to disable this service in battery mode? [y/N]: n
|
Pentru a dezactiva atd, aşa cum este sugerat în exemplul de mai sus, rulaţi
rc-update del atd battery. Aveţi grijă să nu dezactivaţi servicii
ce sunt necesare pentru ca sistemul dvs. să funcţioneze corect - lm-profiler
este posibil să genereze unele rapoarte pozitive false. Nu dezactivaţi un
serviciu dacă sunteţi nesiguri în legătură cu necesitatea acestuia.
Limitarea accesului la scriere
Dacă nu doriţi să utilizaţi modul laptop, trebuie să aveţi mare
grijă să dezactivaţi serviciile ce scriu pe disc în mod frecvent -
syslogd este un candidat bun, spre exemplu. Probabil că nu doriţi
să-l opriţi total, însă este posibil să modificaţi fişierul de
configurare pentru ca informaţiile nenecesare să nu fie scrise şi, astfel,
să nu fie creat trafic de disc. Cups scrie pe disc în mod periodic, deci
luaţi în considerare oprirea acestuia şi activarea manuală doar când
este necesar.
Cod 5.4: Dezactivarea cups în modul baterie |
# rc-update del cupsd battery
|
Puteţi utiliza lm-profiler din laptop-mode-tools (vedeţi mai sus)
pentru a găsi serviciile care trebuie dezactivate. Odată toate oprite,
continuaţi cu configurarea hdparm.
hdparm
A doua posibilitate este utilizarea unui mic script şi a hdparm. Săriţi
peste acest pas dacă utilizaţi modul laptop. Altfel, creaţi
/etc/init.d/pmg_hda:
Cod 5.5: Folosirea hdparm pentru punerea pe 'aşteptare' a hard-disk-ului |
#!/sbin/runscript
depend() {
after hdparm
}
start() {
ebegin "Activating Power Management for Hard Drives"
hdparm -q -S12 /dev/hda
eend $?
}
stop () {
ebegin "Deactivating Power Management for Hard Drives"
hdparm -q -S253 /dev/hda
eend $?
}
|
Citiţi man hdparm pentru opţiuni. Dacă script-ul dvs. este gata,
adăugaţi-l la nivelul de rulare acumulator.
Cod 5.6: Setări pentru punerea automată pe 'aşteptare' a hard-disk-ului |
# chmod +x /etc/init.d/pmg_hda
# /sbin/depscan.sh
# rc-update add pmg_hda battery
|
Important:
Aveţi grijă cu setările 'sleep/spin' ale hard-disk-ului dvs. Stabilirea
unor valori prea mici accelerează uzura discului şi puteţi pierde
garanţia.
|
Alte trucuri
O altă posibilitate este dezactivarea swap-ului în mod acumulator. Înainte
de a scrie un script de comutare swapon/swapoff, asiguraţi-vă că aveţi
destulă memorie RAM şi swap-ul nu este utilizat foarte mult, altfel veţi
întâmpina mari probleme.
Dacă nu doriţi să folosiţi modul portabil, este încă posibil să
minimizaţi accesul la disc prin montarea unor anumite directoare ca
tmpfs - accesările la scriere nu sunt stocate pe un hard-disc, ci în
memoria principală, şi sunt pierdute în cazul demontării. Adesea este
folositor să montaţi aşa /tmp - nu trebuie să acordaţi o
atenţie specială, atâta timp cât este ştearsă la fiecare repornire,
indiferent dacă a fost montat pe disc sau pe RAM. Doar asiguraţi-vă că
aveţi destul RAM şi nici un program (ca un client descărcare sau
arhivator) nu necesită un spaţiu mare în /tmp. Pentru a-l
activa, kernel-ul trebuie să aibă activ suportul tmpfs şi adăugaţi o
linie în /etc/fstab, astfel:
Cod 5.7: Editarea /etc/fstab pentru a face /tmp şi mai volatil |
none /tmp tmpfs size=32m 0 0
|
Atenţie:
Acordaţi atenţie mărimii parametrului şi modificaţi-l pentru sistemul
dvs. Dacă nu sunteţi siguri, nu încercaţi deloc, pentru că poate deveni
uşor o gâtuire a performanţei. Dacă doriţi să montaţi astfel
/var/log, asiguraţi-vă că salvaţi fişierele log pe disk
înainte de demontare. Acestea sunt esenţiale. Nu încercaţi să montaţi
astfel /var/tmp/. Portage îl foloseşte pentru compilare...
|
6.
Gestionarea Consumului de Energie pentru alte dispozitive
Plăci grafice
În cazul în care aveţi o placă grafică ATI ce suportă PowerPlay
(scalarea automată a tactului pentru unitatea grafică de procesare GPU),
puteţi activa această facilitate în X.org. Deschideţi
/etc/X11/xorg.conf şi adăugaţi (sau activaţi) opţiunea
DynamicClocks din secţiunea Device. Vă rugăm să obsevaţi faptul
că această facilitate va conduce la apariţia erorilor pe unele sisteme.
Cod 6.1: Activarea suportului ATI PowerPlay în X.org |
Section "Device"
[...]
Option "DynamicClocks" "on"
EndSection
|
Gestionarea Consumului de Energie pentru Dispozitivele Wireless
Plăcile de reţea wireless consumă ceva energie. Gestionaţi consumul de
energie al acestora în analogie cu script-ul pmg_hda.
Notă:
Acest script presupune că placa dvs. wireless este denumită wlan0;
înlocuiţi-o cu numele interfeţei dvs.
|
Cod 6.2: Gestionarea automată a consumului de energie pentru dispozitive wireless |
#!/sbin/runscript
start() {
ebegin "Activating Power Management for Wireless LAN"
iwconfig wlan0 power on
eend $?
}
stop () {
ebegin "Deactivating Power Management for Wireless LAN"
iwconfig wlan0 power off
eend $?
}
|
Pornirea acestui script va activa modul de gestionare a consumului de energie
pentru wlan0. Salvaţi-l ca /etc/init.d/pmg_wlan0 şi
adăugaţi-l la nivelul de rulare acumulator, asemănător script-ului disc
de mai sus. Consultaţi man iwconfig pentru detalii şi mai multe
opţiuni. Dacă driver-ul şi dispozitivul acces point suportă schimbarea
timpului de semnalizare, acesta e un bun punct de pornire pentru a salva chiar
şi mai multă energie.
Cod 6.3: Gestionarea Consumului de Energie pentru reţele wireless |
# chmod +x /etc/init.d/pmg_wlan0
# /sbin/depscan.sh
# rc-update add pmg_wlan0 battery
|
Gestionarea Consumului de Energie pentru USB
Sunt două probleme cu dispozitivele USB referitor la consumul de energie:
Prima, dispozitive ca mauşii USB, camerele digitale sau dispozitive stocare
USB consumă energie cât timp sunt conectate. Nu puteţi evita acest lucru
(totuşi deconectarea lor trebuie făcută dacă nu sunt necesare). A doua,
când sunt dispozitive USB conectate, controller-ul gazdă USB accesează
periodic magistrala, care de fapt previne procesorul să intre în modul
sleep. Kernel-ul oferă o opţiune experimentală pentru a activa suspendarea
dispozitivelor USB prin apeluri de driver sau unul din fişierele
power/state din /sys.
Cod 6.4: Activarea suportului pentru suspendare USB în kernel |
Device Drivers
USB support
[*] Support for Host-side USB
[*] USB suspend/resume (EXPERIMENTAL)
|
7.
Stările Sleep: sleep, standby, suspend to disk
ACPI defineşte stări sleep diferite. Cele mai importante sunt
- S1 sau Standby
- S3 sau Suspend to RAM sau Sleep
- S4 sau Suspend to Disk sau Hibernate
Acestea pot fi apelate oricând sistemul nu este folosit, iar opţiunea
shutdown nu este dorită datorită unui timp mare de pornire.
Sleep (S3)
Suportul ACPI pentru aceste stări sleep este considerat experimental din
motive îndreptăţite. Stările sleep APM par a fi mai stabile, totuşi, nu
puteţi folosi APM şi ACPI împreună.
Cod 7.1: Configurarea kernel-ului pentru diferite tipuri de stări suspend |
Power Management Options --->
[*] Power Management support
ACPI (Advanced Configuration and Power Interface) Support --->
[*] ACPI Support
[*] Sleep States
|
Odată ce kernel-ul este configurat corect ca mai sus, puteţi utiliza
hibernate-script pentru a activa suspendarea sau modul sleep. Să-l
instalăm, mai întâi.
Cod 7.2: Instalarea hibernate-script |
# emerge hibernate-script
|
Trebuie efectuată configurarea în /etc/hibernate. Pachetul
implicit introduce două fişiere de configurare hibernate.conf
şi ram.conf.
Pentru a configura starea sleep, editaţi ram.conf în
/etc/hibernate. UseSysfsPowerState mem este setată deja
corect, dar trebuie să parcurgeţi restul fişierului de configurare şi
să-l setaţi pentru sistemul dvs. Comentariile şi numele opţiunilor vă
vor ghida. Dacă utilizaţi directoare partajate samba în reţea,
asiguraţi-vă că opriţi script-urile de iniţializare corespunzătoare
pentru a evita timpi morţi.
Gata? Acum, ultima şansă pentru a efectua backup la datele pe care doriţi
să le păstraţi după executarea următoarei comenzi. Notaţi faptul
că, probabil va trebui să apăsaţi o tastă specială, cum ar fi
Fn, pentru e reveni din starea sleep.
Cod 7.3: Apelarea sleep |
# hibernate-ram
|
Dacă încă citiţi, înseamnă că se pare că funcţionează. Puteţi
seta, de asemenea, starea de standby (S1) într-un mod similar prin copierea
fişierului ram.conf ca standby.conf şi crearea
unui link simbolic /usr/sbin/hibernate-standby care să indice
către /usr/sbin/hibernate. S3 şi S4 sunt cele mai interesante
stări sleep, din cauza economisirii de energie foarte mare, totuşi.
Hibernarea (S4)
Această secţiune introduce hibernarea, unde o versiune snapshot a sistemului
care rulează este scrisă pe disc înainte de a opri sistemul. La revenire,
versiunea snapshot este încărcată şi puteţi să lucraţi exact din
punctul în care aţi apelat hibernarea, mai înainte.
Atenţie:
Nu schimbaţi componente hardware non-pluggable în timpul stării de
suspendare. Nu încercaţi să încărcaţi o versiune snapshot cu o altă
imagine de kernel decât cea cu care a fost creat. Închideţi orice
client/server NFS sau samba înainte de a intra în hibernare.
|
Există în acest moment trei implementări pentru S4. Cea originală este
swsusp, apoi există suspend2, care are cea mai frumoasă interfaţă
(incluzând suport fbsplash). O comparaţie de
facilităţi este disponibilă pe pagina oficială suspend2. A fost şi
swsusp, însă a fost integrat inapoi.
Suspend2 nu este inclus în sursele principale de kernel încă, deci, fie
trebuie să aplicaţi patch-uri surselor dvs. de kernel oferite de suspend2.net sau să utilizaţi
sys-kernel/suspend2-sources.
Partea legată de kernel atât pentru swusp cât şi pentru suspend2 este
după cum urmează:
Cod 7.4: Configurarea kernel-ului pentru diversele tipuri suspend |
Power Management Options --->
[*] Software Suspend
(/dev/SWAP) Default resume partition
Software Suspend 2
--- Image Storage (you need at least one writer)
[*] File Writer
[*] Swap Writer
--- General Options
[*] LZF image compression
(swap:/dev/SWAP) Default resume device name
[ ] Allow Keep Image Mode
|
Configurarea pentru swsusp este destul de uşoară. Dacă nu aţi introdus
locaţia partiţiei dvs. de swap în configurarea de kernel, puteţi, de
asemenea, să o pasaţi ca parametru de kernel cu ajutorul directivei
resume=/dev/SWAP. Dacă nu este posibilă boot-area din cauza unei
imagini eronate, utilizaţi parametrul de kernel noresume. Script-ul de
iniţializare hibernate-cleanup invalidează imaginile swsusp în
timpul procesului de boot.
Cod 7.5: Invalidarea imaginilor swsusp în timpul procesului de boot |
# rc-update add hibernate-cleanup boot
|
Pentru a activa hibernarea cu swsusp, utilizaţi script-ul de hibernare şi
setaţi UseSysfsPowerState disk in fişierul
/etc/hibernate/hibernate.conf.
Atenţie:
Salvaţi-vă datele înainte de a face asta. Rulaţi sync înainte de
executarea uneia din comenzi pentru a avea datele din memorie scrise pe disc.
Încercaţi prima dată în afara server-ului X, apoi când rulează
server-ul X, dar neautentificat.
|
Dacă apar mesaje kernel panic datorită uhci sau similar, încercaţi să
compilaţi suportul USB ca modul şi descărcaţi modulele înainte de a
trimite laptop-ul în modul sleep. Există opţiuni de configurare pentru
aceasta în fişierul hibernate.conf.
Cod 7.6: Hibernarea cu swsusp |
# nano -w /etc/hibernate.conf
# hibernate
|
Următoarea secţiune tratează setarea suspend2, inclusiv suportul fbsplash
pentru afişarea unei bare de progress drăguţe în timpul suspendării
şi revenirii.
Prima parte a configuraţiei este similară cu cea de configurare a swsusp.
În cazul în care nu aţi introdus locaţia partiţiei de swap în
configurarea kernel-ului, o puteţi adăuga ca parametru de kernel cu ajutorul
directivei resume2=swap:/dev/SWAP. Dacă procesul de boot nu a fost
posibil din cauza unei imagini eronate, adăugaţi parametrul
noresume2. În plus, script-ul de iniţializare
hibernate-cleanup invalidează imaginile suspend2 în timpul procesului
de boot.
Cod 7.7: Invalidarea imaginilor suspend2 în timpul procesului de boot |
# rc-update add hibernate-cleanup boot
|
Acum, editaţi /etc/hibernate/hibernate.conf, activaţi
secţiunile sysfs_power_state şi acpi_sleep. Nu activaţi
partea fbsplash între opţiunile globale, încă.
Cod 7.8: Hibernarea cu suspend2 |
# nano -w /etc/hibernate.conf
# hibernate
|
Vă rugăm să configuraţi fbsplash acum, în cazul în care nu aţi
efectuat acest lucru, încă. Pentru a activa suportul fbsplash în timpul
hibernării, este necesar pachetul sys-apps/suspend2-userui. În plus,
trebuie să activăm indicatorul USE fbsplash.
Cod 7.9: Instalarea suspend2-userui |
# mkdir -p /etc/portage
# echo sys-apps/suspend2-userui fbsplash >> /etc/portage/package.use
# emerge suspend2-userui
|
Acest ebuild vă specifică să creaţi un link simbolic pentru tema pe care
doriţi să o utilizaţi. Spre exemplu, pentru a utiliza tema
livecd-2005.1, rulaţi comanda următoare:
Cod 7.10: Utilizarea temei livecd-2005.1 în timpul hibernării |
# ln -sfn /etc/splash/livecd-2005.1 /etc/splash/suspend2
|
Dacă nu doriţi un ecran gol în prima parte a procesului de resume, trebuie
să adăugaţi utilitarul suspend2ui_fbsplash în imaginea dvs.
initrd. Presupunând că aţi creat imaginea initrd cu
splash_geninitramfs şi aţi salvat-o ca
/boot/fbsplash-emergence-1024x768, iată cum puteţi face acest
lucru.
Cod 7.11: Adăugarea suspend2ui_fbsplash într-o imagine initrd |
# mount /boot
# mkdir ~/initrd.d
# cp /boot/fbsplash-emergence-1024x768 ~/initrd.d/
# cd ~/initrd.d
# gunzip -c fbsplash-emergence-1024x768 | cpio -idm --quiet -H newc
# rm fbsplash-emergence-1024x768
# cp /usr/sbin/suspend2ui_fbsplash sbin/
# find . | cpio --quiet --dereference -o -H newc | gzip -9 > /boot/fbsplash-suspend2-emergence-1024x768
|
Apoi, ajusaţi grub.conf respectiv lilo.conf pentru
ca kernel-ul să utilizeze
/boot/fbsplash-suspend2-emergence-1024x768 ca imagine initrd.
Puteţi testa acum o rulare fără a lua efectiv nici o acţiune pentru a
verifica dacă totul a fost setat corect.
Cod 7.12: Testaţi rularea pentru hibernarea cu fbsplash |
# suspend2ui_fbsplash -t
|
Apoi, deschideţi /etc/hibernate/hibernate.conf din nou şi
activaţi opţiunile fbsplash. Executaţi hibernate şi savuraţi.
8.
Rezolvare probleme
Î: Încerc să schimb frecvenţa procesorului, dar
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor nu există.
R: Asiguraţi-vă că procesorul dvs. suportă scalarea frecvenţei
şi aţi ales driver-ul CPUFreq corect pentru procesorul dvs. Aici este o
listă a procesoarelor suportate de cpufreq (kernel 2.6.7): ARM Integrator,
ARM-SA1100, ARM-SA1110, AMD Elan - SC400, SC410, AMD mobile K6-2+, AMD mobile
K6-3+, AMD mobile Duron, AMD mobile Athlon, AMD Opteron, AMD Athlon 64, Cyrix
Media GXm, Intel mobile PIII şi Intel mobile PIII-M pe anumite chipset-uri,
Intel Pentium 4, Intel Xeon, Intel Pentium M (Centrino), National
Semiconductors Geode GX, Transmeta Crusoe, VIA Cyrix 3 / C3, UltraSPARC-III,
SuperH SH-3, SH-4, mai multe "PowerBook" şi "iBook2" şi diverse procesoare
pe unele sisteme compatibile ACPI 2.0 (doar dacă opţiunea "ACPI Processor
Performance States" este disponibilă în interfaţa ACPI/BIOS).
Î: Laptop-ul meu suportă scalarea frecvenţei, dar
/sys/devices/system/cpu/cpu0/cpufreq/ este gol.
R: Uitaţi-vă după mesaje de eroare legate de ACPI cu dmesg |
grep ACPI. Încercaţi o actualizare a BIOS-ului, în special dacă este
raportată deteriorarea DSDT. Puteţi încerca de asemenea să-l reparaţi
dvs. (ceea ce este dincolo de scopul acestui ghid).
Î: Laptop-ul meu suportă scalarea frecvenţei, dar /proc/cpuinfo
raportează că viteza nu se schimbă niciodată.
R: Probabil aveţi activat în kernel suportul SMP, multiprocesare
simetrică (CONFIG_SMP). Dezactivaţi-l şi ar trebui să funcţioneze.
Unele kernel-uri mai vechi conţin o problemă ce îl cauzează. În acest
caz, rulaţi emerge x86info, actualizaţi-vă kernel-ul şi
verificaţi frecvenţa cu x86info -mhz.
Î: Pot schimba frecvenţa procesorului, dar intervalul nu este aşa
de larg ca în cazul altor sisteme de operare.
R: Puteţi combina scalarea frecvenţei cu supraîncărcarea ACPI
pentru a obţine o frecvenţă minimă mai mică. Luaţi aminte că
supraîncărcarea nu salvează multă energie şi este folosită în
principal pentru gestionarea temperaturii (păstrarea rece şi silenţioasă
a laptop-ului dvs.) Puteţi citi stadiul curent al supraîncărcării cu
cat /proc/acpi/processor/CPU/throttling şi să îl schimbaţi cu
echo -n "0:x" > /proc/acpi/processor/CPU/limit, unde x este una din
stările Tx afişate de /proc/acpi/processor/CPU/throttling.
R: Când configuraţi kernel-ul, salvarea de energie, performanţa şi
decidenţii pentru programele utilizatorului apar, dar opţiunea ondemand
lipseşte. De unde o iau?
R: Decidentul ondemand este inclus doar în sursele recente de kernel.
Încercaţi actualizarea acestora.
Î: Durata de folosire a acumulatorului pare mai mică decât
înainte.
R: Verificaţi configurările din BIOS. Poate că aţi uitat să
reactivaţi unele opţiuni.
Î: Acumulatorul meu este încărcat, dar KDE raportează că ar mai
rămâne 0% şi imediat se opreşte.
R: Verificaţi dacă battery support este compilat în kernel-ul dvs.
Dacă îl folosiţi ca modul, asiguraţi-vă că este încărcat.
Î: Aplicaţia de sistem pentru jurnalizare raportează informaţii ca
"logger: ACPI group battery / action battery is not defined".
R: Acest mesaj este generat de script-ul /etc/acpi/default.sh script ce
este instalat odată cu acpid. Puteţi ignora acest mesaj. Dacă doriţi să
nu mai apară, puteţi comenta linia corespunzătoare din
/etc/acpi/default.sh aşa cum este arătat mai jos:
Cod 8.1: Dezactivarea avertismentelor despre evenimente acpi necunoscute |
*) # logger "ACPI action $action is not defined"
|
Î: Deţin un Dell Inspiron 51XX şi nu îmi apare nici un eveniment
ACPI.
R: Pare o problemă în kernel. Citiţi aici.
Q: Am activat opţiunea DynamicClocks în xorg.conf şi
acum X.org returnează eroare / ecranul rămâne gol / sistemul meu laptop nu
se închide corespunzător.
A: Aceasta se întâmplă pe unele sisteme. Trebuie să dezactivaţi
DynamicClocks.
Q: Doresc să utilizez suspend2, dar mi se specifică faptul că
partiţia de swap este prea mică. Redimensionarea nu este o soluţie.
A: Dacă este destul loc pe sistemul dvs., puteţi utiliza filewriter
în locul swapwriter. hibernate-script îl suportă şi pe acesta. Mai
multe informaţii puteţi găsi în
/usr/src/linux/Documentation/power/suspend2.txt.
Î: Doar ce am cumpărat un nou acumulator, dar ţine doar câteva
minute! Ce fac greşit?
R: În primul rând respectaţi sfatul producătorului referitor la
modul de încărcare corect al acumulatorului.
R: Răspunsul de mai sus nu a ajutat. Ce ar trebui să fac atunci?
R: Unii acumulatori vânduţi ca "noi" sunt de fapt vechi. Încercaţi
următoarele:
Cod 8.2: Aflarea nivelului acumulatorului |
$ grep capacity /proc/acpi/battery/BAT0/info
design capacity: 47520 mWh
last full capacity: 41830 mWh
|
Dacă "last full capacity" diferă semnificativ de capacitatea proiectată,
atunci acumulatorul dvs. este probabil deteriorat. Încercaţi să
beneficiaţi de garanţie.
Î: Problema mea nu este arătată mai sus. Ce ar trebui să fac în
continuare?
R: Nu vă temeţi să mă contactaţi, Dennis Nienhüser, direct. Forumurile Gentoo sunt un loc bun unde
puteţi fi ajutaţi, de asemenea. Dacă preferaţi IRC, încercaţi canalul
#gentoo-laptop de pe irc.freenode.net.
Conţinutul acestui document este publicat sub licenţa Creative Commons -
Attribution / Share Alike.
|