Ohjelmistojen suorituskyky, Kurssin tavoitteet Luento 1 58153003 Ohjelmistojen suorituskyky 1 SUORITUSKYKY 58153003 Ohjelmistojen suorituskyky 2 Helsingin Yliopisto / Tktl 1
Suorituskyky 58153003 Ohjelmistojen suorituskyky 3 Määritelmä Tällä kurssilla ohjelmistojärjestelmän suorituskyvyllä tarkoitetaan ohjelmiston käyttäytymisen ajallista täsmällisyyttä suhteessa asetettuihin tavoitteisiin Performance is the degree to which a software system or component meets its objectives for timeliness (Smith & Williams) 58153003 Ohjelmistojen suorituskyky 4 Helsingin Yliopisto / Tktl 2
Suorituskyvyn mittarit Kaksi keskeistä mittaria R X Vastausaika (engl. response time) aika, jossa ohjelmistojärjestelmän on tuotettava vastaus käyttäjän pyyntöön 1 (yksikkö esim. sekuntia) Suoritusteho (engl. throughput) ohjelmistojärjestelmän täyttämien pyyntöjen määrä tietyllä ajanjaksolla (yksikkö esim. pyyntöjä / tunti) 1 esimerkiksi: vakuutushakemuksen syöttö, uutissivuston aloitussivun näyttäminen, SQL-kyselyn suoritus tietokantapalvelimessa, pyörintänopeusanturin lähettämän reaaliaikaisen mittaustapahtuman vastaanotto auton ajonvakautusjärjestelmässä jne. 58153003 Ohjelmistojen suorituskyky 5 Suorituskyvyn mittarit Vastausaika R ~ ohjelmiston toiminnan ajallinen täsmällisyys käyttäjän näkökulmasta Huomio kohdistuu yksittäisiin pyyntöihin (esim. ohjelmiston eri käyttötapauksiin) Suoritusteho X ~ ohjelmiston toiminnan ajallinen täsmällisyys järjestelmänäkökulmasta Huomio kohdistuu joukkoon monenlaisia pyyntöjä ja yhtäaikaisia käyttäjiä 58153003 Ohjelmistojen suorituskyky 6 Helsingin Yliopisto / Tktl 3
Suorituskyvyn mittarit Suorituskyvyn parantamisessa voidaan keskittyä vastausaikojen lyhentämiseen tai suoritustehon nostamiseen, mutta yleensä toisen suorituskyvyn elementin parantaminen vaikuttaa positiivisesti myös toiseen Mittareiden saamat arvot ovatkin kääntäen riippuvaisia toisistaan (useimmissa tilanteissa) 58153003 Ohjelmistojen suorituskyky 7 Suorituskyvyn mittarit Yksittäisten palvelupyyntöjen vastausaikojen lyhentäminen esimerkiksi niitten suorituspolkuja optimoimalla ja oikomalla (arkkitehtuurin tai koodin optimointi) kasvattaa suoritustehoa muitten olosuhteiden (esim. laitteiston) pysyessä samoina Ohjelmisto voi täyttää aiempaa enemmän palvelupyyntöjä samassa ajassa Tai sama suoritusteho voidaan saavuttaa hitaammalla laitteistolla 58153003 Ohjelmistojen suorituskyky 8 Helsingin Yliopisto / Tktl 4
Suorituskyvyn mittarit Suoritustehon kasvattaminen järjestelmätasolla esimerkiksi laitteiston toimintaa nopeuttamalla (tehokkaampi CPU, enemmän keskusmuistia) lyhentää yleensä vastausaikoja Ohjelmisto vastaa aiempaa nopeammin käyttäjien palvelupyyntöihin Toisaalta rinnakkaisten palvelinyksiköiden lisääminen ei välttämättä nopeuta yksittäisten pyyntöjen käsittelyä, mutta se kasvattaa koko järjestelmän palvelukapasiteettia ja siis käsiteltyjen pyyntöjen kokonaismäärää aikayksikköä kohden 58153003 Ohjelmistojen suorituskyky 9 Rajaus Muut ohjelmistojen ajonaikaista käyttäytymistä määrittävät piirteet rajataan tarkastelun ulkopuolelle Esimerkiksi RAM-muistin tai tietokantakursoreiden käyttö tai sähkön kulutus Suorituskykyyn kuuluvat siis ne ohjelmiston toiminnan piirteet, joita voidaan (periaatteessa) mitata ajanottokello kädessä ohjelmiston toimintaa seuraten 58153003 Ohjelmistojen suorituskyky 10 Helsingin Yliopisto / Tktl 5
Suorituskyvyn ulottuvuudet Responsiviisuus (responsiveness) Ohjelmiston kyky ylipäätään täyttää sille asetetut palvelupyyntöjen vastausaikoja sekä suoritustehoa koskevat vaatimukset Esim. loppukäyttäjän tietyn käyttötapauksen suorittamiseen kuluva aika tai järjestelmän tietyn ajanjakson aikana suorittamien transaktioiden määrä Loppukäyttäjien ohjelmistoissa on muistettava paitsi objektiiviset myös subjektiiviset tavoitteet toimintojen järjestäminen niin, että niiden käyttö ei tunnu käyttäjästä liian hitaalta -> tärkeimmät asiat ja tiedot heti näkyviin, muut ladataan taustalla 58153003 Ohjelmistojen suorituskyky 11 Suorituskyvyn ulottuvuudet Skaalautuvuus (scalability) Ohjelmiston kyky täyttää vastausaikoja ja suoritustehoa koskevat vaatimukset pyyntöjen määrän eli sen toimintojen kysynnän (demand) kasvaessa Seuraava käyrä kuvaa ohjelmistoille tyypillistä vastausajan (y-akseli) suhdetta järjestelmän kuormitukseen (demand, load), joka on ilmaistu palvelupyyntöinä / aika (x-akseli) 58153003 Ohjelmistojen suorituskyky 12 Helsingin Yliopisto / Tktl 6
Skaalautuvuus 25 R(X) 20 R = vastausaika 15 10 R(X) 5 kynnys 0 Kuormitus (palvelupyyntöjä / sek) maksimi polvi 58153003 Ohjelmistojen suorituskyky 13 Skaalautuvuus Järjestelmän kuormituksen (pyyntöä / sek.) kasvaessa vastausajat pysyvät hyvällä tasolla, kunnes järjestelmässä tietyllä ajan hetkellä käsiteltävinä olevien palvelupyyntöjen määrä ylittää tietyn kynnystason Tämän kynnyksen ylityttyä vastausajat alkavat nousta hyvin nopeasti Käyrään syntyy polvi (knee) ja se alkaa nousta jyrkästi Järjestelmä on saturoitunut, ja se on saavuttanut maksimitehonsa, jolla se vielä pystyy jotenkuten tyydyttävästi palvelemaan käyttäjiään, ennen kuin vastausajat kasvavat liian pitkiksi 58153003 Ohjelmistojen suorituskyky 14 Helsingin Yliopisto / Tktl 7
Skaalautuvuus Järjestelmän saturoituminen johtuu yleensä jostakin pullonkaulasta (bottleneck) Jokin kriittinen resurssi (sovellusprosessi, levypalvelin) ruuhkautuu ja siihen kohdistuvien palvelua odottavien pyyntöjen jono alkaa kasvaa hallitsemattomasti Järjestelmä alkaa resuta (thrashing) käytettävissä oleva suoritusaika kuluu pääasiassa jonojen hallintaan ja yhä lisääntyvien poikkeustilanteiden käsittelyyn Pullonkaulat pitää tunnistaa, ja ne pitää poistaa tai kiertää halutun suoritustehon tavoitetason saavuttamiseksi Ohjelmisto- tai laitteistomuutoksin 58153003 Ohjelmistojen suorituskyky 15 Suorituskyky! Suorituskykyinen ohjelmisto On responsiivinen -> täyttää vastausajoille ja suoritusteholle asetetut tavoitteet (normaaleissa toimintaolosuhteissa) Skaalautuu -> täyttää vastausajoille ja suoritusteholle asetetut minimitavoitteet ennalta määritellyissä huippukuormitustilanteissa for use case ABC the system will respond to a valid user entry within 5 seconds for a median load of 250 active users and 2000 logged in users 95% of the time; or within 10 seconds for a peak load of 500 active users and 4000 logged in users 90% of the time. 1 1 http://en.wikipedia.org/wiki/performance_engineering#elaboration 58153003 Ohjelmistojen suorituskyky 16 Helsingin Yliopisto / Tktl 8
Suorituskykyongelmia? Jos jonkin tietyn pyynnön vastausaika on liian suuri mutta muut vastausajat ovat kunnossa, kannattaa aluksi keskittyä tämän tietyn pyynnön suorituspolun analysointiin ja optimointiin Jos taas kaikki vastausajat ovat liian suuria, on kyseessä todennäköisesti yleisempi ongelma, ja kannattaa keskittyä järjestelmätason analyysiin Laitteiston yleinen suoritusteho Jonkin laiteresurssin tai paljon käytetyn ohjelmistotoiminnon aiheuttama yksittäinen pullonkaula 58153003 Ohjelmistojen suorituskyky 17 Miksi suorituskyky on tärkeää? Ohjelmiston suorituskyky vaikuttaa merkittävästi Käyttäjäkokemukseen ohjelmistot ovat yhä suuremmassa roolissa arkipäivän järjestelmissä ja laitteissa Tuottavuuteen Työntekijöiden ajan käyttö luovaan ja arvoa tuottavaan tekemiseen eikä tahmaavan sovelluksen odotteluun Enemmän palvelua samoilla tai vähemmäillä resursseilla -> investointien ja käyttökulujen kurissa pysyminen toiminnan volyymin kasvaessa 58153003 Ohjelmistojen suorituskyky 18 Helsingin Yliopisto / Tktl 9
Miksi suorituskyky on tärkeää? Riittävä suorituskyky on luonnollisesti elintärkeää monien kriittisten järjestelmien toiminnalle Järjestelmän häiriöt aiheuttaisivat riskin ihmisten terveydelle ja omaisuudelle Tuotantolaitteiden ohjaus ja valvonta, ajoneuvojen ajonvakautusjärjestelmät jne. Toiminnan ajallinen täsmällisyys (anturien arvot luettava ja uudet ohjausarvot laskettava tietyn aikaikkunan sisällä), ylikuormitustilanteiden hallittu hoitaminen 58153003 Ohjelmistojen suorituskyky 19 Mitä huonosta suorituskyvystä voi seurata? Vahinkoa Asiakassuhteelle -> tahmaavalle applikaatiolle tai webpalvelulle löytyy yleensä paljon vaihtoehtoja Liiketoiminnalle -> huono työn tuottavuus, tuotannon puutteellinen skaalautuvuus kysynnän kasvaessa, tuloja nopeammin kasvavat kulut, menetetty liikevaihto Tuloille -> asiakaskato, korvausvaatimukset ja riidat, maineen menetys ja huono julkisuus Kehitysprojektille -> epäonnistuminen tai paha myöhästyminen, jos suorituskykyvaatimuksia ei saavuteta 58153003 Ohjelmistojen suorituskyky 20 Helsingin Yliopisto / Tktl 10
58153003 Ohjelmistojen suorituskyky 21 58153003 Ohjelmistojen suorituskyky 22 Helsingin Yliopisto / Tktl 11
Suorituskykyisten ohjelmistojen kehittäminen 1 Suorituskykyiset eli responsiiviset ja skaalautuvat ohjelmistot eivät yleensä ole sattuman satoa vaan tietoisten päätösten ja kovan työn tulosta Oppi ja kokemus on usein kantapään eli ongelmien sekä yrityksen ja erehdyksen kautta hankittu Ei-triviaalien ohjelmistojen suorituskyvyn saaminen halutulle tasolle vaatii työtä koko ohjelmiston kehityskaaren ajan Suorituskykytavoitteett ja niihin liittyvät riskit on syytä ottaa huomioon alusta lähtien 1 engl. (software) performance engineering 58153003 Ohjelmistojen suorituskyky 23 Tärkeimpiä aktiviteettejä Asiakkaan suorituskykytarpeiden ymmärtäminen ja analysointi Asiakas ei välttämättä osaa antaa täsmällisiä vaateita Arkkitehtuuri-, teknologia- ja implementaatiovaihtoehtojen analysointi suorituskykytarpeiden ja riskien kannalta Suorituskyvyn mittaamisen ja seurannan suunnittelu ja toteutus kehitysaikaista ja tuotantokäyttöä varten Suorituskykyongelmien selvittely ja muutosehdotusten vaikutusten arviointi ohjelmiston tuotantokäytön aikana 58153003 Ohjelmistojen suorituskyky 24 Helsingin Yliopisto / Tktl 12
KURSSIN TAVOITTEET 58153003 Ohjelmistojen suorituskyky 25 Päätavoitteina on oppia Mitä erilaisia asioita ja aktiviteetteja liittyy suorituskykyriskien hallintaan ohjelmistokehityksessä Miten jo suhteellisen yksinkertaisilla malleilla voidaan analysoida suorituskykyvaatimuksia ja arvioida erilaisten arkkitehtuuri- ja implementointivaihtoehtojen vaikutusta suorituskykyyn Yleisiä suunnitteluperiaatteita ja ratkaisumalleja (patterneja) suorituskykyisten ohjelmistojen suunnittelun ja toteutukseen 58153003 Ohjelmistojen suorituskyky 26 Helsingin Yliopisto / Tktl 13
Kurssin sisällön otsikkotason jäsentely 58153003 Ohjelmistojen suorituskyky 27 Helsingin Yliopisto / Tktl 14