Gentoo Logo

Ghid pentru Gestionarea Consumului de Energie

Conţinut:

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ă

Fig. 1: ce componentă consumă aşa multă energie?

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

# ÎNCEPUT configuraţie
RUNLEVEL_AC="default"
RUNLEVEL_BATTERY="acumulator"
# SFÂRŞIT configuraţie


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

# înlocuiţi "ac_adapter" mai jos cu evenimentul generat de portabilul dvs.
# Spre exemplu, ac_adapter.* va extrage ac_adapter AC 00000080 00000000
event=ac_adapter.*
action=/etc/acpi/actions/pmg_switch_runlevel.sh %e

Cod 2.9: /etc/acpi/events/pmg_battery

# înlocuiţi "acumulator" mai jos cu evenimentul generat de portabilul dvs.
# Spre exemplu, battery.* va extrage battery BAT0 00000080 00000001
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

# Eveniment fals acpi pentru schimbarea nivelului de rulare când se foloseşte acumulatorul
/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"  # Blank the screen after 5 minutes (Fake)
			# Dezactivarea ecranului după 5 minutes (Fake)
			
  Option  "StandbyTime"  "10"  # Turn off screen after 10 minutes (DPMS)
			# Oprirea ecranului după 10 minute (DPMS)
			
  Option  "SuspendTime"  "20"  # Full suspend after 20 minutes
			# Suspend complet după 20 minute
			
  Option  "OffTime"  "30"  # Turn off after half an hour
			# Oprire după o jumătate de oră
			
  [...]
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

(Citiţi avertismentele de mai sus înainte de a proceda!)
# 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

# Consultaţi /proc/acpi/ibm/brightness pentru valorile disponibile
# Consultaţi /usr/src/linux/Documentation/ibm-acpi.txt

# nivelul luminozităţii în modul curent AC (priză). Implicit este 7.
BRIGHTNESS_AC=7

# nivelul luminozităţii în mod acumulator. Implicit este 4.
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 --->
  (hibernare cu swsusp)
  [*] Software Suspend
      (înlocuiţi /dev/SWAP cu partiţia dvs. swap)
      (/dev/SWAP)      Default resume partition
  
  (hibernare cu suspend2)
  Software Suspend 2
    --- Image Storage (you need at least one writer)
    [*]     File Writer
    [*]    Swap Writer
    ---   General Options
    [*]    LZF image compression
    (înlocuiţi /dev/SWAP cu partiţia dvs. swap)
    (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
(Asiguraţi-vă că aveţi o copie backup pentru datele dvs.)
# 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
(Asiguraţi-vă că aveţi o copie backup pentru datele dvs.)
# 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.



Imprimare

Actualizat la 16 Februarie 2006

Versiunea originală a acestui document a fost actualizată ultima dată la 28 Septembrie 2008

Sumar: Gestionarea consumului de energie este cheia pentru prelungirea timpului de funcţionare al acumulatorului pe sistemele mobile cum sunt laptop-urile. Acest ghid vă ajută la configurarea portabilului dvs.

Dennis Nienhüser
Autor

Robert Datcu
Translator

Donate to support our development efforts.

Support OSL

Support OSL

Gentoo Centric Hosting: vr.org

VR Hosted

Tek Alchemy

Tek Alchemy

SevenL.net

SevenL.net

Global Netoptex Inc.

Global Netoptex Inc.

Bytemark

Bytemark

Copyright 2001-2008 Gentoo Foundation, Inc. Questions, Comments? Contact us.