- PowerGoblin-palveluinstanssi
- Istunto
- Mittari
- Tapahtuma
- Komento
- Mittaus
- Suoritus
- Solmu ja yksikkö
- Agentti
- Tietolähteet
Jotta voimme paremmin ymmärtää PowerGoblinin mittausten taustalla olevan logiikan, tutustumme ensin sovelluksen terminologiaan.

PowerGoblin-palveluinstanssi
Kun PowerGoblin käynnistetään, ajonaikainen sovellusprosessi, eli PowerGoblin -palveluinstanssi, pysyy käynnissä isäntäjärjestelmässä. Instanssi on palvelinprosessi, jota on tarkoitus ohjata sovellusrajapintojen (API) kautta. Oletusarvoisesti HTTP-rajapinta on käytettävissä. Myös Telnet- ja MQTT-rajapinnat voidaan ottaa käyttöön.
Instanssia ei ole tarkoitettu käytettäväksi laboratorioympäristöjen ulkopuolella, koska se ei tarjoa minkäänlaista pääsynhallintaa. Se hyväksyy yhteyksiä KAIKISTA prosessin käytettävissä olevista rajapinnoista. Jos tarvitset tarkempaa pääsynhallintaa, haluat määrittää palvelutason palomuurin tai rajoittaa prosessin muisti- ja prosessorikuormitusta, harkitse systemd-palveluyksikön määrittämistä instanssille. Ulkoista pääsyä varten voidaan määrittää välityspalvelin. Alustava runkoprojekti sovellustason välityspalvelimelle on saatavilla PowerGoblin-arkistossa. Tällainen konfigurointi ei kuulu tällä hetkellä tämän oppaan piiriin.
Instanssi pitää kirjaa seuraavista entiteeteistä:
- Mittareiden joukko (katso Mittari): vapaat mittarit, joita ei ole liitetty istuntoihin, sekä istuntojen varaamat varatut mittarit. Lisäksi on olemassa simuloituja mittareita testausta varten sekä dummy-mittareita, jotka toimivat paikkamerkkeinä aiempien istuntojen mittareiden spesifikaatioiden tallentamiseksi.
- Joukko mittausistuntoja (katso Istunto): aktiiviset istunnot tallennetaan muistiin. Aiemmat istunnot voidaan tallentaa levylle ja palauttaa pyynnöstä. Istunnot sisältävät kaikki mittausdata (esim. tapahtumat, niihin liittyvät solmut ja mittarit, muut muuttujat), jota tarvitaan aiempien mittausten toistamiseen jatkokäsittelyä ja raportointia varten.
- Joukko rekisteröityjä solmuja (katso Solmu), joissa on komentojonoja agenttipohjaisten (katso Agentti) solmujen koordinointia varten. Instanssi seuraa myös solmuihin liitettyjä mittareita ja reitittää solmuilta vastaanotetut resurssitiedot istuntoihin. Aikaisemmista rekisteröinneistä peräisin olevat solmujen tiedot tallennetaan välimuistiin, jotta arkkitehtuurista saadaan parempi käsitys.
- Tehtävien joukko: asiakkaiden tarkkailtavissa olevat asynkroniset taustatehtävät. Tällä hetkellä taustatehtävien pääasiallisia käyttötarkoituksia ovat istuntoraporttien luominen ja PowerGoblin-sovellusliittymien vertailutestit.
Siinä on myös seuraavat ominaisuudet:
- Protokollapalvelimet asiakkaiden yhteyksien kuuntelemiseksi
- Solmuhallinta agenttien kanssa tapahtuvan viestinvaihdon koordinoimiseksi
- Lokihallinta levyllä olevien istuntolokien hallitsemiseksi
- Tehtävienhallinta asynkronisten taustatehtävien hallintaan
- Instanssin yleiset asetukset
- Käyttöaika jne. reaaliaikaiset tiedot
Istunto
Mittausistunto koostuu kaikista mittausjärjestelyyn liittyvistä tiedoista. Tämä mahdollistaa samanaikaisten istuntojen ylläpitämisen eri mittareilla ja mittauksilla sekä istunnon tallentamisen ja palauttamisen myöhempää tarkastelua varten menettämättä mittaukseen liittyviä tietoja.
PowerGoblin tukee useita samanaikaisia istuntoja. Istunnot voivat olla joko juuri käynnistettyjä ja niihin liitettyjä mittareita (katso Mittari) tai aiempia istuntoja, jotka on palautettu levyllä olevasta istunnon varmuuskopiotiedostosta. Kun suoritetaan mittauksia (katso Mittaus), vain tapahtumat istuntoon liitetyistä mittareista kirjataan lokiin. Vastaavalla tavalla istunnossa voidaan määrittää suodattimia resurssitapahtumille, jotka tulevat resurssien tiedonkeruulaitteista. Nämä ulkoiset keruulaitteet on alustettava ja ohjattava reitittämään tiedot takaisin juuri tähän istuntoon.
Koska liitetyt mittarit eivät välttämättä ole käytettävissä istuntoa palautettaessa (ehkä täysin eri järjestelmässä), yleensä ei ole mahdollista palauttaa olemassa olevaa istuntoa levyltä täysin aiempaan tilaansa. PowerGoblin ratkaisee tämän tallentamalla istunnosta tilannekuvan, jossa on niin sanottuja näennäismittareita, jotka sisältävät vain alkuperäisten mittareiden spesifikaatiot. Tietoja tallennetaan riittävästi, jotta istunto voidaan palauttaa, paikkamerkkimittarit yhdistää oikeiden mittareiden kanssa ja istuntoa laajentaa tarvittaessa uusilla mittauksilla.
Istunto sisältää erilaisia tietoja, kuten numeerisen tunnisteen, nimen, tekijän, ja istunnon kuvauksen, tarkan aloitus- ja lopetusajan (valinnainen), kopion instanssin määrityksistä (katso [Määritykset](/manual/setup/config-extra/# configuration-files)), mittarien/kanavien tunnisteiden ja solmujen/yksiköiden tunnisteiden (katso Solmu) vastaavuudet ihmisen luettavissa oleviin nimiin, mittareiden spesifikaatiot ja käsittelijät sekä kaikki istuntoon liittyvät aggregoidut mittari-, resurssi- (katso Tietolähteet) ja ohjaus (laukaisija) tapahtumia (katso Tapahtuma) . Mittausdata jaetaan edelleen mittauksiin ja ajoihin (katso Ajo).
Istunto voi olla avoin tai suljettu. Kaikilla istunnoilla on alkamisaika. Lisäksi suljetulla istunnolla on lopetusajankohta. Yleisenä periaatteena on merkitä istunto suljetuksi, kun kaikki mittaukset on suoritettu ja istunto on valmis tallennettavaksi levylle. Istunnon jatkokäsittely ei saisi muuttaa tietoja, ellei sitä nimenomaisesti pyydetä. Jos lisää mittauksia on suoritettava, istunnon avaaminen ja sulkeminen uudelleen merkitsee sille erilaisen lopetusajankohdan, jotta se erottuu selvästi edellisestä istunnosta.
Istunto voi olla myös varattu. Toisin sanoen siinä suoritetaan parhaillaan mittausta. Mittareiden lisääminen varattuun istuntoon tai niiden poistaminen siitä on kielletty. Myöskään varattuun istuntoon liitettyjä mittareita ei määritetä uudelleen, kun etsitään uusia mittareita.
Ihannetapauksessa istunnon ei tulisi kerätä mitään tietoja, jotka eivät liity suunnitellun mittauksen analysointiin. PowerGoblin tarjoaa keinoja korostaa aktiivisia tietolähteitä (mittareita ja resursseja). Lisäksi järjestelmässä, jossa on lukuisia solmuja ja mittareita, mittaus voidaan käynnistää käyttämällä vain niitä mittareita ja resursseja, joilla on merkityksellinen rooli mittauksessa.
Mittari

Kaikki PowerGoblin-instanssissa käytettävissä olevat mittarit ovat joko määrittämättömiä (määritetty vapaaseen pooliin) tai määritetty kerrallaan yhteen istuntoon.
Levyltä palautetuille istunnoille määritetään näennäismittarit, jotka eivät voi tuottaa mitään lukemia, mutta säilyttävät tilannekuvan alkuperäisten mittareiden teknisistä tiedoista, joita käytettiin istunnossa ennen sen sulkemista, tallentamista ja palauttamista. Tilannekuva riittää istunnosta laadittavien raporttien tuottamiseen. Lisäksi, jos istunto avataan alkuperäisessä järjestelmässä, jossa kaikki alkuperäiset mittarit ovat käytettävissä, näennäismittarit voidaan yhdistää alkuperäisiin, jotta istuntoa voidaan myöhemmin jatkaa.
PowerGoblin tukee myös simuloituja mittareita, jotka ovat virtuaalisia mittareita, joita voidaan käyttää sovelluksen testaamiseen. Mittarit tuottavat satunnaisia tapahtumia, ja käytettävissä olevien simuloitujen mittareiden lukumäärä voidaan määrittää sovelluksen käynnistyksen yhteydessä tai myöhemmin verkkokäyttöliittymän tai ohjaus-API:n kautta.
PowerGoblin tukee myös toista virtuaalimittarityyppiä. Nykyaikaisen laitteiston RAPL-laskurit esitetään resurssitapahtumina. PowerGoblin pystyy tunnistamaan nämä tietolähteet ja muuntamaan ne mittareiksi, jotta fyysisten mittareiden teho- ja energialukemia on helpompi verrata RAPL:n tuottamiin tietoihin.
Tapahtuma

Kaikki PowerGoblin-instanssille määritetyt mittarit tuottavat mittaritapahtumia. Jos mittaria ei ole määritetty (vapaa), aiempia tapahtumia ei kirjata lokiin. Vain viimeisintä tapahtumaa käytetään mittarin tilan visualisointiin verkkokäyttöliittymässä (samat tiedot ovat saatavilla myös sovellusliittymien kautta). Kun mittari on määritetty istuntoon, tapahtumien määrä kirjataan lokiin. Lisäksi vilkkaassa istunnossa myös aiemmat mittarilukemat kirjataan levylle. Istunto ylläpitää mittauksen tilaa ja kulkua siten, että jokainen tapahtuma voidaan sijoittaa kronologisesti jonnekin ohjaus- (laukaisija-)tapahtumien väliin.
Aktiivisen mittausistunnon aikana PowerGoblin alkaa kirjata mittaritapahtumia istuntoon määritetyistä mittareista. Jokainen mittaritapahtuma sisältää joko mittarin kanaviin liittyvän lukeman tai ilmoittaa lukemisvirheestä. Tällä hetkellä, jos mittari tuottaa useita datapisteitä (esim. useita tulo-/lähtökanavia) yhden aikavälin aikana, jokaiselle kanavalle luodaan erillinen tapahtuma.
Mittareista peräisin olevien mittaritapahtumien lisäksi on myös resurssienkulutustapahtumia, jotka ovat peräisin resurssienkerääjistä (collectd). Nämäkin muunnetaan resurssienkulutustapahtumiksi jatkokäsittelyä varten.
Käyttäjä voi halutessaan määrittää istuntoa tai mittausta tarkemmin (esim. nimetä sen uudelleen), jotta kirjattujen tietojen myöhempi analysointi helpottuu. Tällaisten asetusten määrittäminen tuottaa ohjaustapahtumia. Käytännössä nämä tapahtumat käsitellään varhaisessa vaiheessa ja istuntotiedot päivitetään vastaavasti, jotta tapahtumia ei tarvitse myöhemmin etsiä tapahtumavirrasta.
Lisäksi on olemassa ohjaus- tai laukaisutapahtumia. Näitä tapahtumia voidaan käyttää muiden tapahtumien sijoittamiseen pienen joukon merkityksellisten ohjauspisteiden väliin, esimerkiksi mittauksen tai ajon alkaessa tai päättyessä. On olemassa seitsemän erilaista laukaisutapahtumaa, mutta ajon ja mittauksen aloittamista ja lopettamista koskevia tapahtumia käytetään yleisimmin jatkokäsittelyssä.
Komento
Komentot ovat tapahtumien kaltaisia ohjausobjekteja, mutta toisin kuin tapahtumat, komentoja ei tallenneta osana istuntotietoja. Esimerkiksi mittausten käynnistämiseen ja pysäyttämiseen liittyvät laukaisutapahtumat ovat tapahtumia, mutta istunnon hylkäämiseen tai tallentamiseen käytetään komentoa. Komentojen tarkoitus on ohjata PowerGoblin-ilmentymää, eivätkä ne ole merkityksellisiä istuntotietojen myöhemmässä analyysissä.
On myös erillinen agenttikomentojen luokka, joka muodostaa toisen komentohierarkian solmujen agenttien ohjaamiseksi. On olemassa vakiokomento, jolla kapseloitu agenttikomento lisätään tietyn solmun komentojonoon, mutta tämä on ainoa yhteys PowerGoblin-instanssin ja PowerGoblin-agenttikomentojen välillä.
Mittaus

Istunto koostuu mittauksista. Eri mittaukset edustavat eri tehtäviä. Mittaus tunnistetaan parilla laukaisuviestejä, jotka käynnistävät ja lopettavat mittauksen. Esimerkiksi testijärjestelyllä voidaan mitata verkkotunnuksen eri alasivujen virrankulutusta. Siten jokaisen alasivun tulisi laukaista erillinen mittausyksikkö. Toinen esimerkki olisi eri lajittelualgoritmien mittaaminen. Jokainen algoritmi tai algoritmin ja aineiston yhdistelmä muodostaisi yhden mittauksen. Yleisesti ottaen erilliset mittaukset mallintavat erillisiä käsitteitä.
Mittaukset tunnistetaan nimellä. Oletusarvoisesti mittaukset nimetään M-1, M-2 ja niin edelleen. Tarvittaessa jokainen mittaus voidaan nimetä uudelleen, kun se on aktiivisessa tilassa, eli kun sitä ei ole pysäytetty. Huomaa, että ennen uudelleennimeämistä kirjatut tapahtumat liitetään vanhaan nimeen. Mittauksia ei voi sisäkkäistää, joten vain yksi mittaus voi olla aktiivinen kerrallaan.
Suoritus

Jokainen mittaus koostuu nollasta tai useammasta ajosta. Ajojen tarkoituksena on tukea tilastollista analyysia merkitsemällä toistot. Jokaisen erillisen ajon mittauksessa tulisi suorittaa täsmälleen samat toimet, ellet nimenomaisesti halua, että tiedot heijastavat myös ajojen välisiä vaihteluita.
Suoritukset tunnistetaan positiivisilla kokonaisluvuilla (1, 2, ...). Tapahtumat kirjataan lokiin jo ennen ensimmäisen suorituksen alkamista. Tällä implisiittisellä suorituksella on tunnus 0. Näin ollen mittauksissa, joissa on vain yksi suoritus, suoritus voidaan helposti erottaa, vaikka sitä ei olisi nimenomaisesti käynnistetty. Suorituksia ei voi tällä hetkellä sijoittaa toisiinsa, joten kerrallaan voi olla aktiivinen vain yksi suoritus.
Solmu ja yksikkö

Solmu on monimerkityksinen, abstrakti käsite. Aivan kuten mittarilukematapahtumat liittyvät mittariin ja kanavaan, resurssien kulutus liittyy solmuun ja yksikköön. Solmu edustaa tässä laitetta, jonka on sisällettävä vähintään yksi yksikkö.
Kun resurssitietoja kerätään collect-komennolla, collect käyttää oletusarvoisesti järjestelmän isäntänimeä solmun nimenä, mutta tämä asetus voidaan ohittaa. Resurssipolun nimi ilman solmun nimeä on yksikkö.
Agenttien yhteydessä solmu on järjestelmä, jossa agentti toimii. Agentti voi määritellä solmulle mielivaltaisia yksiköitä. Tyypillisesti käytetään käsitteitä kuten ‘cpu’ tai ‘network’. Mittareita kalibroitaessa agentti ja PowerGoblin- instanssi voivat yhdessä havaita, lisääkö tietynlainen kuormitus kulutusta jossakin mittarissa. Tämä mittari voidaan sitten liittää solmu + yksikkö -pariin. Solmu + yksikkö-paria käytetään sitten kuvaamaan kyseistä mittari + kanava-paria. Nämä parit voidaan myös kuvata nimenomaisesti mittaussuunnitelmassa.
Agentti
Agentti on PowerGoblinille tarkoitettu erityinen asiakasohjelmisto, joka muodostaa yhteyden PowerGoblin-instanssiin ja toimii ”työntekijä”-prosessina, joka kyselee säännöllisesti uusia komentoja suorittaakseen ne peräkkäin. Kun agentti käynnistetään, se rekisteröi itsensä ja määrittelee solmun, jolla se toimii, sekä kalibrointiin käytettävissä olevat siihen liittyvät yksiköt. Kaikki nämä määritelmät ovat täysin mielivaltaisia, mutta niitä voidaan käyttää mittaussession valmistelun ja suorittamisen automatisointiin.
Agentteilla on joukko komentoja, joilla voidaan esimerkiksi ladata mittaussuunnitelmia, suorittaa komentoja, suorittaa mittauksia, tehdä kalibrointeja, kerätä resurssitietoja jne.
Tietolähteet
PowerGoblin tukee useita mekanismeja mittaustietojen tuomiseen erilaisista tietolähteistä. Tietyille tehomittareille on PowerGoblinissa suora ajurituki. Tämä johtuu siitä, että nämä mittarit eivät kommunikoi minkään standardiprotokollan avulla eikä mittareiden kanssa liittämiseen ole laajasti saatavilla olevia kirjastoja.
Toisaalta PowerGoblin hyödyntää collectd -nimistä työkalua päästäkseen käsiksi laajaan valikoimaan erilaisia tietolähteitä. Collectd on plugin-arkkitehtuurilla varustettu metatyökalu, joka tukee olemassa olevia standardeja ja ajurirajapintoja. Esimerkiksi CPU:n kuormitusta, muistin käyttöä, verkon ja levyn siirtonopeutta jne. voidaan seurata käyttöjärjestelmän vakioliittymien kautta. Teho- ja energiamittaukset (esim. CPU, DRAM-muistimoduulit ja GPU:t) voidaan suorittaa myös kolmannen osapuolen laajennusten avulla. Tietojen keräämistä käsitellään täällä tarkemmin.
Ohjelmistopohjaiset tehomittaukset voidaan suorittaa laitteilla, jotka käyttävät erilaisia rajapintoja, joita tukee collectd tai kolmannen osapuolen collectd-laajennukset.

