1. Measurement process
  2. Measurement scheme implementation methods
    1. Skriptivetoinen mittaus
    2. Konttipohjainen mittaus
    3. Backend-palveluiden mittaus
    4. Käyttöliittymien mittaaminen ohjelmistorobotiikalla
  3. Measurement reports
    1. User interface
    2. Boxplots
    3. Summary table
    4. Scatter plots

Measurement process

Ohjelmistojen energiankulutuksen mittaaminen edellyttää systemaattista ja toistettavaa mittausprosessia, jonka tavoitteena on tuottaa vertailukelpoista, luotettavaa ja käytännössä hyödynnettävää tietoa ohjelmistojen energiankäytöstä erilaisissa käyttöympäristöissä. Tietokantoihin liittyvät mittausesimerkit pohjautuvat metodologisesti tähän mittausprosessiin, jota on kuvattu yleistasolla Visiiri-projektin itseopiskelumateriaalissa sekä yksityiskohtaisemmin mittauslaboratorion dokumentaatiossa. Prosessin keskeisenä tavoitteena on ollut luoda yhtenäinen toimintamalli, jonka avulla ohjelmistojen energiatehokkuutta voidaan arvioida johdonmukaisesti riippumatta tarkasteltavasta ohjelmistosta, laitteistosta tai käyttötilanteesta.

Mittausprosessin kehitys on ollut iteratiivinen ja tutkimuslähtöinen. Prosessin vaatimusmäärittelyssä on hyödynnetty asiantuntijahaastatteluja sekä aiemmin toteutettuja benchmark- ja mittausesimerkkejä. Näiden avulla on tunnistettu käytännön mittaustyön keskeiset haasteet, kuten mittausten toistettavuus, ympäristöjen heterogeenisyys sekä energiankulutukseen vaikuttavien taustatekijöiden hallinta. Asiantuntijatiedon ja empiiristen mittausesimerkkien yhdistäminen on mahdollistanut prosessin kehittämisen siten, että se vastaa sekä tutkimuskäytön että käytännön ohjelmistokehityksen tarpeisiin.

Mittausprosessin suunnittelussa laitteiston, ohjelmistojen ja itse mittausmenetelmien kartoitusta on tehty rinnakkain. Tämä on ollut välttämätöntä, koska ohjelmiston energiankulutus riippuu voimakkaasti sekä käytettävästä laitteistosta että ohjelmistopinon rakenteesta. Prosessia on jalostettu iteratiivisesti siten, että mittausmenetelmä olisi mahdollisimman yleispätevä ja sovellettavissa erilaisiin käyttötapauksiin. Tavoitteena ei ole ollut ainoastaan yksittäisten mittausten suorittaminen, vaan sellaisen mittausinfrastruktuurin rakentaminen, joka tukee laajamittaista ja jatkuvaa energiatehokkuuden arviointia.

Yleistettävyyden näkökulmasta prosessi on suunniteltu kattamaan monipuolisesti erilaisia pääte- ja palvelinlaitteita sekä niiden käyttöympäristöjä. Tämä mahdollistaa esimerkiksi eri ohjelmistoversioiden, tietokantaratkaisujen, ohjelmointikielten tai laitearkkitehtuurien vertailun keskenään. Samalla prosessissa on huomioitu tarve vertailla keskenään vertailukelpoisia ohjelmisto- ja laitetyyppejä siten, että mittaustulokset säilyvät teknisesti perusteltuina ja analysoitavina. Vertailukelpoisuus edellyttää mittausympäristöjen kontrollointia, yhtenäisiä kuormitusskenaarioita sekä tarkkaa loki- ja metatiedon hallintaa.

Keskeinen osa prosessia on korkea automaation aste. Mittausten suorittamisen tulee olla mahdollisimman vaivatonta ja toistettavaa myös vaihtelevissa ympäristöissä. Tämän vuoksi mittausprosessi on pyritty määrittelemään selkeästi dokumentoitujen vaiheiden kautta siten, että mittaus voidaan toteuttaa yhdenmukaisesti riippumatta suorittajasta tai käyttöympäristöstä. Automaatio kattaa tyypillisesti mittausten käynnistyksen, kuormitusten hallinnan, energiadatan keräämisen, lokitiedon tallennuksen sekä raporttien muodostamisen. Lisäksi prosessissa tuotettu tieto voidaan viedä automatisoidusti raportointijärjestelmiin ja lokitietokantoihin myöhempää analyysiä varten. Tämä tukee sekä tutkimuskäyttöä että pitkäaikaista seurantaa ohjelmistokehityksen eri vaiheissa.

Mittausprosessin kehittämisessä on huomioitu myös sen käytännön sovellettavuus osana ohjelmistokehityksen jatkuvia prosesseja. Tavoitteena on, että energiankulutuksen mittaamisesta muodostuu käyttökelpoinen osa normaalia ohjelmistokehitystä samalla tavoin kuin suorituskykytestauksesta tai automaattisesta laadunvarmistuksesta. Tällöin energiankulutusta voidaan tarkastella yhtenä ohjelmiston ei-funktionaalisista ominaisuuksista jo kehitystyön varhaisissa vaiheissa.

Lisäksi prosessi on suunniteltu laajennettavaksi erilaisille laitetyypeille ja integroitavaksi osaksi moderneja ohjelmistotuotannon käytäntöjä, kuten DevOps- ja CI/CD-putkia. Tämä mahdollistaa energiatehokkuuden automaattisen seurannan esimerkiksi ohjelmistoversioiden välillä tai jatkuvan integraation yhteydessä suoritettavien testien osana. Pitkällä aikavälillä tällainen lähestymistapa tukee energiatehokkaampien ohjelmistojen systemaattista kehittämistä sekä ohjelmistotuotannon kestävyyden arviointia osana laajempaa vastuullisen ohjelmistokehityksen kokonaisuutta.


Measurement scheme implementation methods

Seuraavassa on lyhyesti kuvattu benchmark-tietokannan keskeiset mittauksen toteutustavat, jotka soveltuvat erilaisiin ohjelmatyyppeihin (frontend, backend, fullstack, mobiili jne.)

Skriptivetoinen mittaus

Yksinkertaisin mitattava ohjelmistotyyppi on komentoriviohjelma. Tällaisessa tapauksessa mittaus voidaan toteuttaa suoraviivaisella skriptillä, joka koordinoi mittausistunnon ja -ajot sekä suorittaa mitattavan ohjelman. Jokaiselle mitattavalle toiminnolle määritellään oma mittaustapaus. Skripti kommunikoi mittausohjelmiston kanssa ennen suoritusta ja sen jälkeen, jonka pohjalta aikaleimoin merkitty mittausdata voidaan yhdistää oikeaan mittausajoon. Mikäli skripti ja/tai mitattava ohjelma tarvitsevat monimutkaista käyttöympäristöä, voi mittaus olla perusteltua eristää konttiteknologioilla. Vastaavasti jos mitattava ohjelma on jo eristetty konttiin, voi myös mittausskripti olla tarpeen tuoda kontin sisään järjestelyn yksinkertaistamiseksi.

Konttipohjainen mittaus

Konttiteknologiat mahdollistavat sovellusten suorittamisen eristetyssä ympäristössä. Kontit sisältävät ohjelmiston tarvitsemat ohjelmistokomponentit ja ympäristömääritykset erillään muista konteista ja isäntäjärjestelmästä, mikä helpottaa yksittäisen palvelun ja erityisesti palvelukokonaisuuksien käyttöä. Sama mittaus voidaan suorittaa useissa ympäristöissä samalla ohjelmistokokoonpanolla ilman, että käyttöjärjestelmän tai asennusten erot vaikuttavat tuloksiin merkittävästi. Tämä helpottaa mittauksen toistettavuuden ohella myös mittausjärjestelyjen jakamista organisaatioiden välillä. Konttien käynnistys ja sammutus pyritään yleensä pitämään mittausajojen ulkopuolella, koska ne voivat olla suhteellisen raskaita operaatioita, eivätkä useinkaan ole osa ohjelmiston normaalia käyttötapaa.

Backend-palveluiden mittaus

Backend-palveluiden mittaaminen voidaan toteuttaa usealla tavalla. Yksinkertaisimmillaan palvelua käsitellään “mustana laatikkona”, jolloin ulkopuolinen skripti lähettää palvelulle pyyntöjä analysoimatta palvelun sisäistä toimintaa. Tämä voi olla ainoa mahdollinen lähestymistapa esimerkiksi suljetun lähdekoodin tai pilvipalvelupohjaisissa järjestelmissä. Toinen tapa on integroida mittauksen koordinointi osaksi palvelun ohjelmakoodia. Tällöin mittauksen alku- ja loppumerkinnät voidaan sijoittaa esimerkiksi suoraan web-palvelun rajapintakutsujen toteutuksen ympärille. Näin mittaus voidaan kohdistaa tarkemmin juuri tietyn toiminnon suorittamiseen. Mitattava palvelu käynnistetään yleensä ennen mittauksia, minkä jälkeen mittausajojen aikana suoritetaan yksittäisiä pyyntöjä tai käyttöskenaarioita. Haluttaessa voidaan mitata myös palvelun käynnistymistä tai ensimmäisen pyynnön käsittelyä.

Käyttöliittymien mittaaminen ohjelmistorobotiikalla

Graafisten käyttöliittymien mittauksessa voidaan käyttää ohjelmistorobotiikkaa, jolla käyttöliittymän toiminnot voidaan suorittaa automatisoidusti ja toistettavasti samalla tavalla kuin ihmiskäyttäjän ohjaamana. Yksi tunnetuimpia ohjelmistorobotiikan työkaluista on Selenium, jolla voidaan rakentaa toistettavia mittausskenaarioita web-sovellusten energiankulutuksen arvioimiseksi. Selenium-istunto ja sen ohjaama selain tyypillisesti joko pidetään käynnissä koko mittausistunnon ajan tai siirretään yksittäisten mittausajojen ulkopuolelle, koska istunnon alustaminen on verrattain raskas operaatio verrattuna yksittäisiin sivulatauksiin ja erityisesti yksittäisiin toimintoihin jo ladatulla sivustolla. Mobiililaitteiden mittaaminen vaatii usein erityisjärjestelyjä. Sovelluksen automatisointi voi perustua esimerkiksi käyttöliittymäautomaatioon, ohjelmallisiin rajapintoihin tai sovellukseen lisättyihin ohjausmekanismeihin. Joissakin tapauksissa mittauksen koordinointi voidaan toteuttaa esimerkiksi asiakaspuolen koodilla, joka viestii mittausohjelmiston kanssa verkkoyhteyden yli.


Measurement reports

Mittausraportit muodostavat mittaustietokannan keskeisen käyttöliittymän, jonka tarkoituksena on tarjota sekä yleistajuinen että teknisesti yksityiskohtainen näkymä ohjelmistojen energiankulutuksen mittaustuloksiin. Raportit on suunniteltu siten, että sama mittausdata palvelee useita erilaisia käyttäjäryhmiä: ohjelmistokehittäjiä, tutkijoita, opetuskäyttöä sekä organisaatioita, jotka arvioivat järjestelmiensä energiatehokkuutta.

Raportointinäkymän tavoitteena ei ole ainoastaan yksittäisten mittaustulosten esittäminen, vaan myös mittausdatan tulkinnan, vertailun ja jatkoanalyysin tukeminen. Erityisesti energiamittauksissa yksittäinen arvo on harvoin riittävä ilman kontekstia, sillä energiankulutus riippuu voimakkaasti mittausympäristöstä, käyttökuormasta, laitteistosta, ajoituksesta sekä taustalla olevista ohjelmisto- ja käyttöjärjestelmäkomponenteista.

User interface

Raporttien käyttöliittymässä ylimpänä on kolme päävalintaa: Kieli, Tapaus ja Näkymä. Kieliasetus muuttaa raportin käyttöliittymän ja interaktiivisten komponenttien kielen.

Tapaus-valinta määrittää tarkasteltavan mittauscasen. Käyttäjä voi valita esimerkiksi tietokantoihin, verkkopalveluihin, konttiteknologioihin tai mobiililaskentaan liittyvän mittauksen. Kaikki raportin kuvaajat, taulukot ja analyysit päivittyvät valitun casen mukaisesti.

Näkymä-valinta tarjoaa kaksi eritasoista raportointinäkymää: Yleistajuinen näkymä ja Tekninen raportti. Yleistajuisessa näkymässä keskitytään mittauksen sovellusalueeseen, mittausmenetelmän yleiskuvaan, tärkeimpiin tuloksiin sekä tiivistettyihin johtopäätöksiin. Tavoitteena on tarjota helposti omaksuttava yhteenveto myös käyttäjille, joilla ei ole syvällistä taustaa energiamittauksista tai ohjelmistojärjestelmien suorituskykyanalyysistä.

Tekninen raportti sisältää yksityiskohtaisemman kuvauksen mittausjärjestelmästä ja mittausmetodologiasta. Teknisessä raportissa voidaan myös kuvata mittauksen toistettavuuteen liittyviä tekijöitä, kuten välimuistien käsittelyä, lämpötilan vakiointia, taustaprosessien hallintaa ja mittauslaitteiden kalibrointia. Nämä tekijät ovat erityisen tärkeitä energiamittauksissa, joissa pienetkin muutokset ympäristössä voivat vaikuttaa tuloksiin. Raporttiin voidaan sisällyttää esimerkiksi: fyysinen ja looginen arkkitehtuurikuvaus, käytetty laitteisto ja ohjelmistoversiot, käyttöjärjestelmän asetukset, mittalaitteiden konfiguraatiot, lähdedatan kuvaus, automatisointiskriptien rakenne, mittausten parametrisaatio, irjallisuusviitteet ja tunnetut rajoitteet ja virhelähteet.

Boxplots

Laatikko-janakuvio (boxplot) toimii raportointityökalun oletusnäkymänä, koska se tarjoaa tiiviin ja tilastollisesti informatiivisen tavan vertailla eri mittauskohteita. Energiamittauksissa yksittäinen mittaustulos ei yleensä riitä kuvaamaan järjestelmän käyttäytymistä luotettavasti, vaan tarvitaan useita toistoja vaihtelun arvioimiseksi.

Laatikko-janakuvio mahdollistaa datan nopean silmämääräisen analyysin tilastollisesti. Siitä on mahdollista havaita datan hajonta, poikkeavat havainot ja eri teknologioiden välisen "paremmuuden" vertaamisen. Kuvaajasta voidaan helposti havaita esimerkiksi mikä ratkaisu kuluttaa keskimäärin vähiten tai selvästi eniten energiaa, missä ratkaisuissa vaihtelu on suurta tai kuinka vakaa mittauskohde on eri suorituskerroilla.

Valittavissa olevia suureita ovat esimerkiksi: jännite, virta, hetkellinen teho, kokonaisenergia, mittauksen kesto, prosessorikuorma, muistinkäyttö, verkkoliikenne ja levyoperaatiot. Monimutkaisemmissa mittauscaseissa voidaan yhdistää useita mittareita samaan näkymään. Esimerkiksi tietokantamittauksissa voidaan tarkastella samanaikaisesti energiankulutusta, levyoperaatioita ja muistinkäyttöä, jolloin nähdään paremmin mistä energiankulutus muodostuu.

Kuvaajan merkittävä etu energiamittauksissa on kyky tuoda näkyviin mittausten luonnollinen vaihtelu. Mittausdata ei käytännössä koskaan ole täysin determinististä, sillä käyttöjärjestelmän ajastus, välimuistit, taustaprosessit, lämpötila ja laitteiston sisäiset optimointimekanismit aiheuttavat vaihtelua.

Tilastollisen analyysin näkökulmasta on tärkeää huomioida:

  • mittauskertojen riittävä määrä
  • poikkeavien havaintojen tunnistaminen
  • normaalijakaumaoletuksen mahdollinen puuttuminen
  • mediaanin käyttö keskiarvon sijaan epäsymmetrisissä jakaumissa
  • hajonnan merkitys käytännön toistettavuudelle

Mikäli vaihtelu on suurta, voi se viitata:

  • epävakaaseen mittausympäristöön
  • käyttöjärjestelmän taustaprosesseihin
  • lämpötilan vaikutuksiin
  • välimuistien hyödyntämiseen
  • ajoittaiseen verkkokuormaan
  • satunnaisiin virhetilanteisiin

Raportointityökalu mahdollistaa myös muiden casejen datan tuomisen vertailuun. Tämä mahdollistaa esimerkiksi:

  • eri teknologia-alueiden vertailun
  • eri laitteistojen vertailun
  • ohjelmistoversioiden väliset analyysit
  • optimointien vaikutusten tarkastelun

Summary table

Tulostaulukko tarjoaa saman datan kuin laatikko-janakuvio, mutta numeerisessa muodossa. Taulukkoon on koottu tilastolliset minimit, maksimit, keskiarvot ja keskihajonnat sekä mitattavan asian nimi kuvauksineen. Energiankulutuksen arvioinnissa pelkkä keskiarvo ei usein ole riittävä tunnusluku. Erityisesti ohjelmistomittauksissa jakaumat voivat olla vinoja tai sisältää satunnaisia piikkejä, jolloin mediaani ja hajontaluvut ovat usein informatiivisempia. Taulukosta voidaan havaita mahdollisten virheiden osalta esimerkiksi puuttuvat mittausajot tai mittarilukemat, epärealistiset arvot ja yksittäiset poikkeavat mittaukset.

Taulukkomuotoinen esitys mahdollistaa jonkin verran kuvaajia yksityiskohtaisemman analyysin ja koostettua tulosdataa voidaan sellaisenaan käyttää raportoinnissa. Mikäli tulosdataa halutaan analysoida yksityiskohtaisemmin ulkoisissa tilastotyökaluissa, suosittelemme lukemaan mittaridatan tietokantaan tallennetuista JSON-muotoisesta raakadatasta.

Raportointityökalu ei tällä hetkellä pyri arvioimaan ympäristövaikutuksia suoraan mittausdatasta. Jatkoanalyysia varten mittausdata tulee yhdistää erilliseen ympäristövaikutusmalliin, mikäli tavoitteena on arvioida esimerkiksi hiilijalanjälkeä tai päästövaikutuksia. Pelkkä energiankulutus ei yksinään kerro ohjelmiston ympäristövaikutuksista, sillä kokonaisvaikutus riippuu esimerkiksi energiantuotantotavasta, käyttöympäristöstä, laitteiston elinkaaresta, käyttäjämääristä, käyttöasteesta, datakeskuksen energiatehokkuudesta ja jäähdytysjärjestelmistä.

Scatter plots

Pistekuvaaja mahdollistaa yksittäisten mittausajojen tarkastelun ajan suhteen. Toisin kuin laatikko-janakuvio, joka tiivistää tulokset tilastolliseen muotoon, pistekuvaaja näyttää mittauksen dynaamisen käyttäytymisen ja hetkelliset muutokset.

Oletusarvoisesti pistekuvaajassa tarkastellaan tehoa ajan funktiona, koska hetkellinen tehonkulutus paljastaa usein enemmän ohjelmiston sisäisestä käyttäytymisestä kuin pelkkä kokonaisenergia. Lisäksi monet suorituskykyyn liittyvät ongelmat näkyvät nimenomaan hetkellisinä tehopiikkeinä tai epätasaisena resurssikuormana. Kuvaaja onkin soveltuva yksityiskohtaiseen mittausajojen analyysiin.

Pistekuvaajassa voidaan tarkastella esimerkiksi:

  • tehoa
  • prosessori(e)n käyttöastetta (0-100%), jossa 100% tarkoittaa kaikkien prosessorien / ytimien olevan käytössä
  • muistinkäyttöä
  • verkkoliikennettä
  • levyoperaatioita
  • prosessikohtaisia metriikoita

Esitystapa riippuu tarkasteltavasta suureesta. Esimerkiksi:

  • vapaan muistin määrä esitetään absoluuttisena arvona
  • verkkoliikenne esitetään käyttöjärjestelmän laskuriarvojen erotuksena
  • levyoperaatiot näytetään siirtonopeutena
  • prosessorikuorma prosenttiosuutena tai aktiivisten prosessien lukumääränä (load avg)

Riittävän hienojakoinen mittaridata mahdollistaa jopa ohjelmiston sisäisen toiminnan analysoinnin. Tietyt algoritmit, garbage collection -syklit, tietokantakyselyt tai renderöintivaiheet voivat näkyä selkeinä tehopiikkeinä mittausdatassa.

Pistekuvaaja on erityisen hyödyllinen poikkeavien mittausten tunnistamisessa. Mikäli eri mittausajot eroavat toisistaan merkittävästi, voi syynä olla esimerkiksi:

  • välimuistin hyödyntäminen
  • käyttöjärjestelmän optimoinnit
  • verkkoyhteyden vaihtelu
  • taustaprosessit
  • epäonnistuneet mittausajot
  • lämpötilan nousu
  • suorittimen throttling
  • levyvälimuistit
  • rinnakkaisten prosessien vaikutukset

Mittauksen toistettavuuden kannalta on tärkeää hallita muuttuvia tekijöitä ennen mittausten suorittamista. Tämä voi tarkoittaa esimerkiksi:

  • levyvälimuistien tyhjentämistä
  • prosessorin taajuuden vakiointia
  • lämpötilan tasaamista ennen ajoja
  • taustaprosessien minimointia
  • verkkoyhteyksien vakiointia
  • automaattisten päivitysten estämistä

Pistekuvaaja mahdollistaa myös mittausten vaiheistamisen analyysin. Esimerkiksi ohjelmiston käynnistys, datan lataus, laskenta ja tulosten tallennus voivat näkyä erillisinä vaiheina, joiden energiankulutusta voidaan tarkastella toisistaan riippumatta.

Tilastollisen analyysin näkökulmasta pistekuvaaja auttaa arvioimaan:

  • mittausdatan stationaarisuutta
  • ajallista korrelaatiota
  • lämpenemisen vaikutuksia
  • transienttien merkitystä
  • mittauskohinan määrää
  • mahdollisia systemaattisia virheitä

Erityisesti energiamittauksissa ajan suhteen tarkasteltava data on usein tärkeämpää kuin yksittäinen kokonaislukema, koska ohjelmistojen energiankulutus muodostuu useiden erilaisten toimintavaiheiden yhteisvaikutuksesta.