De programma’s die draaien op je telefoon en je computer, maar ook die in datacenters verbruiken veel stroom. Andere manieren van programmeren moeten zorgen voor minder energieverbruik, maar zo makkelijk is dat niet. Het betekent vooral beter gebruikmaken van beschikbare hardware.
Bijna iedereen kent het: je mobiel is bijna leeg en je hebt hem echt straks nog nodig! De meeste mobiele telefoons gaan dan in een soort van spaarstand. In die stand gaat het laatste restje acculading veel langer mee, maar veel dingen werken dan trager of gewoon helemaal niet meer. Allerlei processen waar je normaal geen weet van hebt, worden niet meer op de achtergrond uitgevoerd. Zo krijg je, afhankelijk van je instellingen, een whatsappbericht ineens pas binnen als je de app zelf opent en niet meer de hele tijd.
Wat gebeurt er achter de schermen van je mobiel als ie niet op die besparende modus staat? Van alles. De hele tijd zijn heel veel apps bezig om met de hele wereld te communiceren. Constant voeren ze kleine taken uit om dingen te checken. Is er nog een bericht binnengekomen? Moet ik dat bericht laten zien? Hoe laat is het? Hoe beweegt de telefoon? Moet ik een locatie weergeven? Welke adverteerders moet ik nu aanroepen? Roept iemand ‘Siri’ of ‘Hey Google’?
Al die processen vragen steeds een klein drupje energie. In het grote geheel van alle energieslurpers is het praktisch niet meetbaar als jij je telefoon een of twee keer op een dag oplaadt. Toch kun je makkelijk berekenen dat als je telefoon gemiddeld 20 procent minder energie zou gebruiken, je je telefoon minder vaak oplaadt. Als je dat nou eens heel groot maakt door naar datacenters te kijken: als al die datacenters 20 procent minder energie nodig hebben, dan scheelt dat aanzienlijk. Dat energieverbruik verlagen kan door slimmer te programmeren en hardware beter te gebruiken.
Zo snel mogelijk
“Het klinkt zo simpel, slimmer programmeren”, zegt Sven-Bodo Scholz, hoogleraar Software Science aan de Radboud Universiteit Nijmegen, “maar dat is het helaas niet.” Scholz houdt zich al zo’n dertig jaar bezig met software en hoe je computers zo effectief mogelijk kunt gebruiken. Dat optimaliseren is een kunst op zich en heet ook wel code generation: maak processen snel en gebruik hardware zo efficiënt mogelijk. In het verleden had alles alleen maar te maken met runtime: maak alles zo snel mogelijk. Hoe? Dat maakte niet uit, als het maar sneller was dan de vorige keer. Kostte het heel veel energie of had je er meer energieslurpende computerchips voor nodig? Dat was nooit een probleem, omdat andere zaken belangrijker waren, zoals sneller zijn dan de concurrent. Ondanks dat energieverbruik steeds hoger op de agenda staat, is energie nog niet zo belangrijk bij de keuzes die worden gemaakt op computergebied. Om computergebruik toch energiezuiniger te maken zet Scholz in op software die beter gebruikmaakt van de beschikbare hardware.
Gebruik je software die veel minder goed is afgestemd is op je computer, dan merk je dat vaak al snel. En zo zit het natuurlijk ook bij de meeste datacenters. Iedereen kan een stukje ruimte huren in een datacenter en daar haar of zijn eigen software op uitvoeren. Niemand kijkt echt naar efficiëntie. “Die efficiëntie wil je door software laten bepalen en verbeteren; dat moet gewoon automatisch gaan”, zegt Scholz. “Dat heet ook wel Automatic Program Optimization, waarvoor wij speciale software gebruiken, ook wel Single Assignment C of SAC voor de liefhebbers.” Zo probeert Scholz met zijn onderzoeksgroep weg te sturen van het alleen maar sneller maken van computerchips en zich te richten op het optimaliseren voor energieverbruik.
Energievraag
Het is niet zo dat er niets is gebeurd de laatste twintig jaar. Het gebruik van processors die eerst speciaal bedoeld waren voor het verwerken van beeld, voor videogames bijvoorbeeld, bleken heel efficiënt ingezet te kunnen worden. Die GPU’s of grafische processors, zijn heel goed in het parallel, het naast elkaar, uitvoeren van acties. Scholz: “Centraal staat dat softwareapplicaties ervoor zorgen dat hardware energie vraagt. Dus het probleem van energieconsumptie ligt bij software. Het zou voor datacenters heel fijn zijn als software beter zou worden in het bepalen van energieverbruik van de eigen processen.”
Energieverbruik is niet bepaald een onbekende factor bij uitbaters van datacenters. Hoe minder energie je gebruikt, hoe goedkoper het allemaal is. En ook hoe minder impact op heel veel andere zaken, zoals het lokale energienet, waterhuishouding en wat al niet meer. “Veel datacenters gebruiken wel systemen om snel processen aan en uit te schakelen, maar omdat de klant uiteindelijk koning is, staan die systemen vaak in een soort stand-bystand.”
Meten
Maar hoe meet je het energieverbruik van software? Hiervoor moeten nieuwe tools worden gemaakt, zodat we systematisch kunnen bijhouden hoe energie binnen datacenters wordt gebruikt. “Ons doel is een soort autotune te bouwen, zodat software zelf kan bepalen wat de beste hardware is om te gebruiken voor bepaalde toepassingen. Op die manier hopen we zelfs oude, afgeschreven hardware weer interessant te maken.”
In essentie komt het neer, zo legt Scholz uit, op beter gebruik van verschillende soorten hardware die al aanwezig zijn in datacenters, zoals GPU’s en FPGA’s (speciaal programmeerbare schakelingen). “Je kunt die hardware zien als speciale boosters die veel sneller kunnen rekenen met veel minder energie, maar ze zijn ook moeilijker te programmeren. Vanuit ons onderzoek is technologie ontwikkeld om code te genereren voor dergelijke versnellers. Onze code zorgt voor een betere verdeling van de processortijd over de beschikbare hardware. Programmeurs hoeven dus niets van die ingewikkelde hardware te weten en kunnen ze toch gebruiken. “
Helaas zit er een flink gat tussen wat er onderzocht wordt en de echte wereld. De code van Scholz wordt nog niet gebruikt. “Er moeten modellen ontwikkeld worden voor het vangen van energiekosten voor computationele activiteiten, net zoals we heel goed kunnen meten of bepaalde software sneller of langzamer is.”
Afrekenen
“Het zou goed zijn als er meer publieke bewustwording zou zijn over de hoeveelheid energie die software gebruikt. Dus dat je niet alleen afrekent per tijdseenheid dat je een bepaald systeem gebruikt, of het nou wel of niet echt in gebruik is, maar dat je naar energieverbruik betaalt. Op dit moment is er helaas geen economische incentive om het te doen: alles moet sneller en goedkoper.”
Bij je telefoon zou dat bijvoorbeeld betekenen: je gebruikt je telefoon een half uur, waarvan je vijftien minuten iets doet dat veel energie gebruikt. De indicator van je batterij gaat snel met vele procenten naar beneden. Als je je telefoon gehuurd zou hebben, dan zou je niet alleen voor het halve uur, maar ook voor de gebruikte energie moeten betalen.
Heeft het dan zin om naar zo’n systeem te gaan dat je ook meet in hoeveelheid energie? Scholz denkt van wel. “Het duurde ook even voor we gewend waren aan labels over voedingswaarde van een product of het energielabel van je huis, en nu vinden we dat normaal.”