Energimærkning af software: Udviklere mangler sprog til at tale om energiforbrug

Illustration: Dansk Byggeri

Når du er på jagt efter et nyt køleskab eller overvejer at købe et nyt hus, så er det i dag helt naturligt at kigge efter et energimærke, der angiver hvor meget energi hvidevaren eller bygningen forbruger. A++ er godt, mens de røde lamper begynder at blinke, når bogstaverne E, F og G dukker op. Forsøger du at finde en lignende energimærkning for computerspil, tv-streaming eller større it-systemer, så ender du formentlig mere forvirret end oplyst.

Nogen opgørelser viser at en film på Netflix svarer til at koge vand til 60 kopper te, mens en Google-søgning angiveligt svarer til den samme mængde energi en 60W pærer forbruger i 17 sekunder.

Nu vil en gruppe danskere forskere, med Aalborg Universitet i spidsen, kortlægge præcist hvordan software påvirker energiforbruget i IT-systemer. Forskningsprojektet, der officielt går i gang til februar, foregår i samarbejde mellem forskere fra RUC og DTU.

»Tendensen er tydelig. IT brænder mere og mere energi af, for vi bruger mere og mere, og det bliver mere og mere avanceret. Derfor skal vi i fremtiden være meget mere bevidste om det energiforbrug, software er med til at generere,« siger Bent Thomsen, professor MSO ved Aalborg Universitet.

Software bruger ikke i sig selv energi, men gør det via den hardware, softwaren kører på, og derfor mener Bent Thomsen at det giver mening at måle og energimærke software efter hvor meget energi det kræver at afvikle programkoden. Ambitionen er at forskningsprojektet på sigt skal medvirke til udviklingen af et nyt energimærkningssystem for software.
Målet er at give softwareudviklerne et værktøj, som de kan bruge til at se de energimæssige konsekvenser af bestemte handlinger eller algoritmer.

Læs også: Er jaguaren køretøj eller kattedyr? Algoritmer pulser CO2 ud for at forstå vores sprog

Softwaresprog, compilere og datacentre

Bent Thomsen er nemlig skeptisk over for de energiberegninger der jævnligt dukker op fra teknologivirksomheder, og løbende bliver omtalt i medierne - blandt de to eksempler vi startede artiklen med. I dag er man nemlig ikke i stand til at foretage en nøjagtig udregning af et givent IT-systems energiforbrug. Det skyldes især, at softwareudviklerne i dag primært fokuserer på at udvikle nye funktionaliteter og reducere størrelsen på hardware, mens evnen til at måle energiforbrug ikke vægter højt, når der eksempelvis udvikles nye it-systemer til det offentlige. Og at kunne beregne energiforbruget er første skridt i retning af overhovedet at kunne energimærke software.

»Det er en meget kompleks opgave, for vi skal i princippet have det hele med. Softwarens påvirkning af strømforbruget på den enkelte computer, på netværksdelen, måske på en lokal server og – når der er tale om de mere og mere gængse cloudservices − på serversiden i datacenteret,« forklarer Bent Thomsen.

Læs også: Færre laserkilder i fiberkabler skal gøre Internettet grønnere

Cloudbaserede computerspil sluger mest energi

Senest har et hold amerikanske forskere forsøgt at kortlægge energiforbruget for 36 forskellige computerspil som er blevet spillet på 26 forskellige platforme. Resultatet viser, måske ikke så overraskende, at cloudbaserede computerspil sluger mest strøm, mens spil, der er downloadet til en stationær computer eller spillekonsol forbruger mindre energi. Det skyldes, at der både bruges energi i et datacenter, til overførslen og lokalt på brugerens enhed. Men kortlægningen var ikke sådan lige til, og derfor anbefaler de amerikanske forskere fra Lawrence Berkeley National Laboratory også en global procedure for energiudregninger af software.

»Mangel på standardiserede procedurer for energitest og informationer om både komponenter og systemers effektivitet forhindrer bedre praksisser,« skriver forskerne i de afsluttende anbefalinger i den videnskabelige artikel.

En stor udfordring er at måle strømforbruget i datacenteret. For hvordan skal man måle strømmen i netop den del af datacenteret, som den givne software kører i. Desuden kører flere applikationer ofte på samme server, hvilket betyder at forskerne skal være i stand til at adskille lige netop den software, der skal måles strømforbrug på, fra de øvrige applikationer på samme server.

Illustration: Springer

»Hvis vi skal se på en applikation som fx netbank, kører den måske i et datacenter på en server, der også hoster Nordjyske Online, 117 banker eller det offentliges e-Boks. Vi ved ikke, hvilken software der kører i samme datacenter, hvilken software vi faktisk interagerer med. Vi ved faktisk ikke engang, hvilket datacenter det kører i,« siger Bent Thomsen.

Selvom det er komplekst at beregne energiforbruget i datacentre, så er det måske faktisk et energivenligt alternativ til at bruge lokale servere og pc’er.

»Fidusen med datacentre er, at du kan køre mange applikationer på de samme servere på samme tid, og dermed udnytte CPU’erne bedst muligt. På en klassisk pcvil du se, at CPU’en keder sig det meste af tiden,« siger Bent Thomsen.

Et af de steder, som Bent Thomsen og hans kolleger kigger efter inspiration, er hos British Computer Society, der for nyligt har lavet et udkast til energiklassificering af datacentre.

»Vi er meget bevidste om, at vi ikke skal udvikle en lokal dansk energimærkning, men snarere inspirere andre til at løfte opgaven med en international energimærkning,« siger Bent Thomsen.

Læs også: Nye cloud-baserede computerspil storforbruger energi

Nedsættelse af strømforbruget

Når og hvis AAU-forskerne lander på en metode til beregning af energiforbrug, og man har udviklet en fælles energimærkning, vil et naturligt skridt være at se på, hvordan man fremadrettet kan reducere den mængde energi, der bruges til at afvikle software. Et sted, hvor der virkelig er noget at hente, er ifølge Bent Thomsen i programmeringssproget og i compileren, der oversætter programmeringssproget til maskinkode.

»De gængse programmeringssprog som C++ og C# opererer ikke med begrebet energiforbrug, og det gør det meget svært for programmørerne at adressere det i programmerne. Derfor er det nødvendigt at udvikle programmeringssprog, der adresserer energiforbrug, så programmørerne får bedre mulighed for at tage det med i deres udvikling af ny software,« siger han.
For at nå derhen, hvor energiforbrug bliver et parameter på linje med fx ydeevne, som udviklere aktivt kan forholde sig, er der brug for nytænkning af relationen mellem software og hardware.

»I løbet af de seneste 50 år er software og hardware blevet mere og mere adskilt, og man har forsøgt at gemme den underliggende hardware væk fra software. Derfor er det meget svært, hvis ikke så godt som umuligt for udviklere at gennemskue og styre hvordan deres software bliver afviklet på hardwaren. De mange lag skal skrælles væk, så det bliver mere gennemsigtigt,« siger Bent Thomsen.

Intel har tidligere vurderet at energieffektivt software kan reducere energiforbruget med en faktor tre til fem.

Læs også: Open source hardware vinder frem: Google åbner arkitekturen bag sine Titan-chips

Energibevidst nichesoftware

Der er dog bestemte industrier og brancher, som allerede har fokus på energiforbrug, og hvor strømforbruget er et afgørende kriterie, når der udvikles og programmeres nye applikationer.

»Der er udviklet metoder til at beregne energiforbruget i de små embeddede systemer, og så de helt store supercomputere, som også har en top500 over grønne supercomputere med lavt energiforbrug. De to typer systemer har dog det tilfælles, at der kun afvikles en softwareapplikation adgangen, og derfor er det mere ligetil at beregne energiforbruget,« siger Bent Thomsen.
Det er eksempelvis inden for Internet of Things, hvor de fleste IoT-enheder i dag er batteridrevne og derfor gerne skal anvende så lidt strøm som muligt. Et andet område er produktionen af satellitter, hvor nordjyske Gomspace bruger særligt hardware og software til tids- og energiforudsigelighed, fordi de skal regne ud, hvor meget batteristrøm, der er til rådighed i satellitterne. Men det er et stort spring at gå fra små indlejrede programmer, der bruges til at beregne batteritiden i sensorer til den software vi bruger på kontoret.

»Faktisk kan vi se, at de værktøjer vi bruger i dag, simpelthen ikke kan skaleres. De kan klare små stykker software, 500 eller måske 1000 linjer program, men i et program som fx Word er der over 500.000 linjer kode, så der er simpelthen kæmpe afstand mellem det, vi ved vi kan i dag, og det vi gerne vil kunne.«

Læs også: Nye trådløse teknologier sluger miljøbelastende batterier

sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først

Energiforbrug hænger sammen med hvor mange instruktioner der udføres, og hvor komplekse at instruktionerne er. I de fleste tilfælde, er derfor vigtigt at anvende effektive algorithmer. Indenfor hardwarenær programmering, er der oftest styr på tidsmæssige specifikationer, og der er muligt at analysere forsinkelser i software, f.eks. C og C++ kode. For at det er muligt, kræves dog at koden er analyserbar - har man en løkke, som man ikke ved hvornår ender, så vil vi ikke kunne regne ud at den nogensinde stopper, og den kan ikke oversættes. Dette kan løses ved at sikre, at løkken har et maksimalt antal loops, eller at den har en timeout. Ved at analysere softwaren, så kan man som regel nemt se om en løkke har et maksimalt antal loops, f.eks. fordi at der tælles en op i løkken indtil et bestemt max tal nås, eller der laves shifts, indtil man på baggrund af tallenes opløsning, ved at der shiftes udenfor tallets definationsområde. Kan koden timing analysers, så kan et program generere et datablad, der angiver timing specs for softwaren, dvs. max frekvenser, delays osv. Desværre er kode-folk ikke vandt til at tænke i tid, og vi ser tit koder der ikke har veldefineret svartid - altså, som vi ikke kan garantere nogensinde kommer med et svar. En sådan kode, er teknisk set ubrugeligt, for vi ved ikke, om vi først får svar om millioner af år. Det er et stort problem, at computere programmeres uden styr på timing og strømforbrug - det medfører desværre, at de mest strømslugende og tidsforbrugende algorithmer vinder. Og ofte reducere det computernes kapacitet, så selv meget kraftige computere, stort set ikke kan løse opgaven, uden at kræve en endnu mere energi.

  • 0
  • 0

"Løkkesegmentering med variabel bundtstørrelse."

Fordelen ved denne teknik er "non-greedy optimization".

Alle processer konkurrerer om cachen; både i- og d-cachen.

Man kan også søge på:

The resurgence of Software Performance Engineering 2016

Charles E Leiserson er professor på MIT, som har fri adgang til online studies på https:/ocw.mit.edu

  • 0
  • 0

Energi og effekt er velkendte størrelser med meget kendte definitioner, benævnelser og navne, som IT-folk vel også kender til, så det kan næppe være det de mangler, medmindre de er helt tabt bag vognen.

  • 3
  • 2

Energi og effekt er velkendte størrelser med meget kendte definitioner, benævnelser og navne, som IT-folk vel også kender til, så det kan næppe være det de mangler, medmindre de er helt tabt bag vognen.

Åh ja, Svend; cachen har en betydelig, komplicerende indflydelse ;-)

Direkte link til "The resurgence of Software Performance Engineering 2016" https://www.microsoft.com/en-us/research/v...

Særlig det første kvarter og de sidste 5-10 minutter er relevante.

I gamle dage handlede det mest om at have kraftige CPU'er og masser af DRAM; nu handler det om, at bruge bl.a. cachen fornuftigt; det fandt jeg ud af for 24 år siden, dengang jeg var GIS/SW konsulent for nogle nysgerrige ingeniørstuderende. Jeg tog "orlov" for, at finde en lettere måde at skrive effektiv kode på og jeg fandt 3 centrale paradigmer, hvoraf det første står øverst lige før dit indlæg.

Desværre skal dansk IT åbenbart ikke være effektiv - bare dyrt - så nu bliver jeg nok igen kaldt slemme ting. Hvis du vil støtte en blog her, har jeg lige 3 år inden sidste salgsdato.

Hvis man ikke gider skrive ordentlig kode, kan man "bare" købe nogle af IBM's seneste Z mikroprocessorer med masser af cache og køre en version af Linux på den.

  • 3
  • 1

Tag bare de klassiske sorteringsmetoder. Men man skal ikke glemme, at en stor del af energien er bestemt af at computeren skal være tændt med alt det tilbehør der sidder rundt om og for slet ikke at glemme alt det moderne uden om som cloud. Almindelig browsing forstyres i den grad af browsing og tusinder af ekstra programmer (services) der bare holder øje med, om der skulle være end lillebitte opdatering, som ikke har nogen betydning alligevel men bare er en eller anden forskruet mand (jeg tror slet ikke det kan være en kvinde) der har ændret på designet men uden nogen som helst funktionel ændring. Alene Microsofts 'opdateringer' har de sidste mange år ikke ændret noget vigtigt men medført ekstra forbrug og ekstra tid til at finde ud af, hvor de nu har gemt en eller anden detaljer, der er uden betydning for det funktionelle. Det koster en masse tid for software programmørerne at finde ud af og dermed en masse 'varme' fra computeren indtil det er opdateret til det 'nye fine ligegyldige'. Det meste energitab afhænger af disse ting og af manden der sidder bagved ikke af softwaren.

  • 1
  • 0

at se hvordan den enkelte applikation (og applikations udvikler) skal kloge sig i detaljer på hvor meget energi en specifik applikation vil bruge.

Applikations udvikleren kan ikke engang kloge sig over hvilke instruktioner der indgår i applikationen i disse virtualiserings tider, da det kan være vidt forskellige instruktioner der i praksis afvikles på den givne HW som applikationen afvikles på.

Så det eneste miljø hvor en sådan "klogning" kan foretages, er på afviklings miljøet. Alt andet er data som kan være helt hen i vejret.

  • 3
  • 0

Så det eneste miljø hvor en sådan "klogning" kan foretages, er på afviklings miljøet. Alt andet er data som kan være helt hen i vejret.

Meget enig, og Svend har da absolut en valid pointe omkring det at energi og effekt er velkendte størrelser.

Den umiddelbart tilgængelige måde at verificere forbruget er et multimeter og et stopur, og så prøve ens program(er) af på en testmaskine som ikke foretager sig andet - gerne en der reelt set er underdimensioneret, så man kan distancere sig fra baggrundsstøjen.

Jeg brugte metoden engang til at vurdere et webindberetningsprogram, ikke så meget af hensyn til effekt (men jeg kunne hvis jeg havde skønnet det relevant), men af hensyn til performance.

Da det er svært at afprøve toppen, er det nemmere at prøve fra bunden, så jeg tog den absolut mindste maskine jeg kunne finde, med den sløveste disk og så lidt som muligt hukommelse, og startede så 5-6 uploads (som skulle beregne og gemme en stor mængde data), samtidig med jeg vurderede om man stadig kunne navigere rundt i webdelen som forventet - det kunne man uden problemer, så jeg havde ingen problemer med at gå i produktion på en server der vel havde en faktor 50-100 gange så meget at gøre godt med.

  • 1
  • 0

Tag bare de klassiske sorteringsmetoder. Men man skal ikke glemme, at en stor del af energien er bestemt af at computeren skal være tændt med alt det tilbehør der sidder rundt om og for slet ikke at glemme alt det moderne uden om som cloud. Almindelig browsing forstyres i den grad af browsing og tusinder af ekstra programmer (services) der bare holder øje med, om der skulle være end lillebitte opdatering, som ikke har nogen betydning alligevel men bare er en eller anden forskruet mand (jeg tror slet ikke det kan være en kvinde) der har ændret på designet men uden nogen som helst funktionel ændring. Alene Microsofts 'opdateringer' har de sidste mange år ikke ændret noget vigtigt men medført ekstra forbrug og ekstra tid til at finde ud af, hvor de nu har gemt en eller anden detaljer, der er uden betydning for det funktionelle. Det koster en masse tid for software programmørerne at finde ud af og dermed en masse 'varme' fra computeren indtil det er opdateret til det 'nye fine ligegyldige'. Det meste energitab afhænger af disse ting og af manden der sidder bagved ikke af softwaren.

Måske kan metoderne for at måle energiforbrug i software, også medregne energiforbrug i hardware, ved at opsætte modeller for dette. Er hardwaren lavet fornuftigt, vil den normalt have mange muligheder for dvale, og dette styres af software. Dermed bliver det reelt et softwareproblem, fordi det er den, som styrer hardwaren til at spare energi. I mange tilfælde, kan det også være protokol problemer, fordi at dem der har udviklet protokollerne, ikke er typen der lukker for vandet, når det ikke bruges. De kigger måske hele tiden efter data, og laver protokoller der hele tiden skal scanne data igennem for at tjekke et bestemt bitmønster, i stedet for at lave protokollen så at hardwaren kan gå i dvale, og kun skal monitoreres på nogle bestemte aftalte tidspunkter, afhængigt af behovet for forsinkelse og svartiden.

Indenfor software kompleksitet anvendes store O funktioner. Måske kan man bruge noget lignende indenfor software - undersøge dels et fast energiforbrug, samt energiforbruget som funktion af kompleksiteten, altså en slags store O funktion for strømforbruget plus det statiske strømforbrug.

  • 0
  • 0
Bidrag med din viden – log ind og deltag i debatten