Upravljanje energijom: DTP i ACPI

U prethodnim člancima pokazali smo kako na Linuxu naredbama s komandne linije nadzirati temperaturu procesora i diskova. Naredni korak je upoznavanje s procesima koji automatski nadziru i održavaju radnu temperaturu računala.

Sjećam se IBM-ovih konferencija od prije desetak (i kusur) godina kada su "ajbiemeri" najavljivali svoje velike i dugoročne projekte, pametne gradove, energetski samoodržive zgrade i između ostalog "self healing computers", računala koja sama zacjeljuju. Tada sam zamišljao velike plave servere koji, uz pomoć robotske ruke na živo vade pokvarene diskove i zamjenjuju ih ispravnima, umeću nove kartice s procesorima, radnom memorijom i tome slično. Nije lak zadatak, čak i kad je ista tvrtka proizvođač hardwarea i softwarea. Kako to izvesti u svijetu osobnih računala, gdje je na tržištu mnoštvo proizvođača komponenti i mnoštvo sastavljača koji iz te ponude dijelova sklapaju računala.

Ipak, malo po malo kao da počinje ostvarivanje vizije računala nalik na živi organizam. Nismo još razvili organska računala, ali barem nastojimo automatski regulirati radnu temperaturu.

Kako se povećava snaga računala, raste broj jezgri procesora i njihov radni takt, tako raste i potrošnja energije, a s njom i zagrijavanje. Dodajte na to istovremenu težnju da se smanji fizička veličina uređaja, pa dobijamo sve jače zagrijavanje u sve manjim kućištima. U tankim prijenosnicima, tabletima i pametnim telefonima nema mjesta za ventilatore. Kako onda hladiti uređaje i održavati radnu temperaturu na prihvatljivoj razini?

Već pri dizajniranju računala treba izračunati koliko će se energije pretvarati u toplinu. Specifikacije procesora sadrže vrijednost TDP, Thermal design power. Mnogi prije kupovine računala provjeravaju specifikacije procesora. Ako žele lagan prijenosnik, važno im je da se ne pregrijava i da baterija traje što dulje. Radi toga traže računala sa štedljivim procesorom. Kada otvorimo stranicu sa specifikacijama, brzo pronađemo deklariranu vrijednost TDP izraženu u W, pa se to odmah shvati kao potrošnja CPU. No TDP je zapravo utrošena snaga minus koristan rad, odnosno ostatak energije koji se pretvara u toplinu (entropija?). Zabuna oko toga da li je TDP potrošnja struje ili generirana toplina, rekli bismo, nije posve slučajna, jer se prilikom predstavljanja novih procesora prezentatori olako razmeću štedljivošću novih generacija procesora citirajući pri tom TDP kao potrošnju.

Bilo bi idealno da se odmah pri projektiranju računala predvidi maksimalno zagrijavanje i računalo osposobi da ga podnosi, kako bi sustav bio spreman i na najgore radne uvjete. No u praksi nije uvijek tako. Da li radi uštede ili radi skraćivanja radnog vijeka računala, odlučite sami. U svakom slučaju skuplja računala bolje se nose s pregrijavanjem i dulje će trajati.

Obično se TDP odredi kao vrijednost zagrijavanja pri korištenju standarnih, najčešćih aplikacija. Osim toga određivanje TDP-a varira od proizvođača do proizvođača, a k tome ga još i pojedini proizvođači mijenjaju s protokom vremena, odnosno s pojavom novih generacija procesora. Intel je nedavno uveo novu metriku, koju je nazvao SDP, Scenario design power. Čini se da se u igru umiješao marketing, štednja energije je postala tržišna prednost. Novi se procesori diče manjom potrošnjom/zagrijavanjem, ali ne treba odmah povjerovati specifikacijama. Testovi mogu pokazati da procesor s deklariranim SDP-om od 7 W zapravo ima TDP od 13 W. A ako se računalo podvrgne intenzivnom testiranju performanski, benchmark testovi će natjerati procesore na maksimalne napore i izazvati zagrijavanje koje će biti dobrano iznad deklariranih vrijednosti. Isto će se dogoditi i prilikom korištenja zahtjevnih aplikacija, poput na primjer GIS-a, igrica, montaže videa...



Sve u svemu, ispada da je TDP više neka društvena konvencija nego precizna odrednica. Stoga neki kažu da TDP treba pomnožiti s 1,5 da bi procijenili stvarno zagrijavanje.

Ironično je da aktivno hlađenje i samo troši energiju i time proizvodi dodatnu toplinu. Taj problem još je veći u serverskim halama nego u pojedinačnim računalima, ali time se ovdje nećemo baviti. Spomenut ćemo samo da ako želite nabrijano računalo trebat će vam snažni procesori i grafičke kartice koji troše mnogo struje i jako se zagrijavaju. Umjesto prijenosnika, bit će bolje kupiti stolno kućište sa mnogo ventilatora i s vodenim hlađenjem.

Dok se četvernošci hlade dahtanjem, a čovjek znojenjem, računala za to koriste rebrasta hladila, termalne paste, materijale koji lako odvode toplinu (na pr. titan u IBM Thinkpad T seriji računala). Dakle prva linja zaštite je sam hardver, s pasivnim hlađenjem. Drugu liniju obrane je neko vrijeme obavljao BIOS, snižavajući temperaturu pojačavanjem rada ventilatora ili smanjivanjem radnog takta procesora, a cijena koja se za to plaćala je pad performansi računala.

Naredna stepenica u razvoju je Advanced Configuration and Power Interface (ACPI), otvoreni standard koji na operacijski sustav prebacuje dogovornost za otkrivanje i podešavanje hardverskih komponenti računala, a onda i za upravljanje potrošnjom energije. (Preskočit ćemo ovdje međufaze, APM i PnP BIOS, koji su otišli u zaborav.)

Kako samo ime kaže, ACPI je sučelje za konfiguraciju i energiju. Na razini firmwarea sastoji se od nekoliko komponenti: ACPI tabele, ACPI BIOS, ACPI registri. ACPI BIOS učitava ACPI tabele u memoriju, a u njima se nalazi ACPI Machine Language (AML). Da bi operacijski sustav mogao koristiti ACPI tabele, mora sadržavati prevoditelj (interpreter) za AML. Implementaciju referentnog AML interpretera sadrži ACPI Component Architecture (ACPICA). Radi se o open source kodu koji omogućuje da operacijski sustavi podržavaju ACPI. Razvio ga je intel, a koriste ga Linux i FreeBSD. Čim OS aktivira ACPI, on preuzima kontrolu na konfiguracijom uređaja i upravljanjem enrgijom.

Upravljanje potrošnjom energije je naš primarni interes u ovom članku. ACPI je u stanju komponente računala koje se trenutno ne koriste poslati "na spavanje". Preuzimajući tu funkcioalnost od BIOS-a omogućuje bolju fleksibilnost, uštedu energije i neovisnost o hardveru. Da bi to funkcioniralo, trebalo je osigurati da pojedine komponente računala podržavaju standard. Tvorci standarda isprva su bili Intel, MIcrosoft i Toshiba, kasnije su pridruživali i drugi zainteresirani proizvođači, pa je stvoren ACPI Special Interest Group (ACPI SIG). Prva je verzija objavljena još 1996. a od tada se standard proširivao da bi se prilagodio razvoju hardvera. Na primjer, dodavana je podrška za SATA kontrolere, PCI Express bus, višeprocesorske sustave, ambijentalnu rasvjetu, kontrolu temperature drugih komponenti osim procesora itd. Usporedno je tekao i razvoj UEFI BIOS-a, pa je briga o razvoju ACPI standarda 2013. prebačena na UEFI Forum, koji je 2019. objavio trenutno zadnju verziju ACPI 6.3.

Razvoj i primjena ACPI standarda nisu prolazili glatko i bez problema. Windows 98 prvi su dobili podršku za ACPI (acpi.sys), ali kako su svoj dio posla trebali odraditi i proizvođači hardvera, podrška za ACPI bila je aktivna samo na probranom hardveru. Problemi su se nastavljali i kasnije, pa tako Vista nije radila na matičnim pločama bez ACPI BIOS-a, a kasnije verzije Windowsa bile su izbirljive, tražile su da BIOS ima datum noviji od 1999. godine. Brojne verzije Unixoida s vremenom su dobivale podršku za ACPI. Linux je dobiva s kernelom 2.4 u rudimentarnom obliku, a od verzije 2.6 podrška radi samo ako je BIOS noviji od 1.1.2002.

Arhitektura ACPI standarda je slojevita. Zadaća je BIOS-a koji podržava ACPI učitavanje ACPI tablica u sistemsku memoriju, a tu je i ACPI Machine Language (AML), koji služi za komunikaciju s hardverom. Sustav nadzire i upravlja stanjima računala i njegovih komponenti.

Na primjer, Globalna stanja i njima pripadajuća Sleep stanja su:

    G0 Working
        S0 računalo radi, CPU izvodi instrukcije
    G1 Sleeping
        S1 Power on suspend
        S2 CPU power off
        S3 Suspend, RAM je pod naponom
        S4 Hibernacija, memorija je spremljena na disk, računalo ugašeno
    G2 Soft off
        S5 Ugašeno, ali napajanje (PSU) radi na minimumu, pritiskom na prednju tipku računalo ide u  reboot i S0 stanje, a može ga pokrenuti sat, impuls s mreže, tipkovnice, USB i sl.
    G3 Mechanical off
       
G3 znači da je računalo ugašeno mehničkim prekidačem, (sa stražnje strane, na napajanju) ili je isčupan strujni kabel. Radi samo real time clock kojeg pogoni baterija.
   
Device states, stanja uređaja, idu od
 
    D0 - normalan rad
    D1 i D2 - nešto između rada i spavanja, stanje ovisi o samom uređaju
    D3 - dijeli se na
        "D3 hot" (radi na smanjenoj energiji, spremno za buđenje)
        "D3 cold" (stvarno ugašeno).

Stanja procesora, od C0 do C3.
 
    C0 - CPU normalno radi
    C1 - Halt, procesor ne radi, ali je spreman brzo se aktivirati.
    C2 - Stop Clock, procesor je vidljiv softveru, ali se sporije aktivira.
    C3 - Sleep, CPU ne čuva svoj cache, ali čuva neka druga stanja.

Noviji procosori još više raščlanjuju stanja procesora, sve do C10, kako to već odredi proizvođač.

Performance state ide od

    P0 - označava maksimalnu snagu i potrošnju, do
    P(1-n) - stupnjevito sve se više smanjuje napon i frekvencija

Konkretne implementacije ovise o proizvođaču i generaciji procesora.

Korištenjem ACPI standarda današnja računala mogu štediti energiju i smanjivati zagrijavanje, uzimajući u obzir činjenicu da ne rade uvijek pod maksimalnim opterećenjem. U kritičnim situacijama hlađenje se postiže usporavanjem rada računala, ali pri normalnom, isprekidanom radu, može se dosta uštedjeti. Uvedena su i međustanja, razičiti načini "spavanja", pri čemu se isključuju ili usporavaju pojedine komponente, s namjerom da se računalo brže vrati u radno stanje nego kad bi bilo posve ugašeno.

Gašenje računala više nije jednoznačno. U dobra stara vremena logika je bila binarna: računalo je ili upaljeno ili ugašeno, odnosno ili uključeno ili isključeno (XOR). Danas su stvari složenije, računalo može biti u nekom (kvantnom) stanju između dvije krajnjosti.

Dok Windowsi koriste acpi.sys, Linux je dobio nove sistemske procese, acpid i thermald. Ali o tome više u narednom nastavku.

 

Kategorije: 
Vote: 
0
No votes yet