Ohjelmasuoritusmalli ja sen käyttö

Samankaltaiset tiedostot
Esimerkki ohjemasuoritusmallien käytöstä

Suorituskyky ja ohjelmistokehitys Suorituskykymallit

Suorituskykydatan kerääminen

Algoritmit 1. Luento 1 Ti Timo Männikkö

Järjestelmätason mallit III

Verkkosovellusten mallintaminen

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

Ohjelmiston suorituskyvyn mittaaminen

Ohjelmistojen suorituskyky, Kurssin tavoitteet

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 1. Luento 2 Ke Timo Männikkö

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

Algoritmit 2. Luento 1 Ti Timo Männikkö

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))

10. Painotetut graafit

Rinnakkaistietokoneet luento S

Algoritmit 1. Luento 13 Ti Timo Männikkö

Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen

Algoritmi on periaatteellisella tasolla seuraava:

Tarkennamme geneeristä painamiskorotusalgoritmia

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Rinnakkaistietokoneet luento S

811312A Tietorakenteet ja algoritmit I Johdanto

Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan valitseminen päätöksellä ja toistaminen silmukalla.

Johdatus verkkoteoriaan 4. luento

Algoritmit 1. Luento 13 Ma Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 2. Luento 8 To Timo Männikkö

4 Tehokkuus ja algoritmien suunnittelu

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

Dynaaminen analyysi III

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

UML- mallinnus: Tilakaavio

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

CUDA. Moniydinohjelmointi Mikko Honkonen

12. Javan toistorakenteet 12.1

Tietorakenteet ja algoritmit - syksy

58131 Tietorakenteet (kevät 2009) Harjoitus 11, ratkaisuja (Topi Musto)

Joonas Haapala Ohjaaja: DI Heikki Puustinen Valvoja: Prof. Kai Virtanen

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Dynaaminen ohjelmointi ja vaikutuskaaviot

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.

PARITUS KAKSIJAKOISESSA

Algoritmit 1. Luento 14 Ke Timo Männikkö

A215 Tietorakenteet. Tietojenkäsittelytieteiden laitos Tampereen yliopisto. Periodit I-II, syksy 2007

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Johdatus verkkoteoriaan luento Netspace

3. Muuttujat ja operaatiot 3.1

A TIETORAKENTEET JA ALGORITMIT

13 Lyhimmät painotetut polut

11. Javan toistorakenteet 11.1

Algoritmit 2. Luento 13 Ti Timo Männikkö

12. Javan toistorakenteet 12.1

Algoritmit 1. Demot Timo Männikkö

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Algoritmit 1. Luento 8 Ke Timo Männikkö

Esimerkki: Tietoliikennekytkin

Harjoitus 4 ( )

Intel Pentium Pro -prosessori. tietokonearkkitehtuurit, syksy -96 Ari Rantanen

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Johdatus graafiteoriaan

Ohjelmistojen mallintaminen, sekvenssikaaviot

= 5! 2 2!3! = = 10. Edelleen tästä joukosta voidaan valita kolme särmää yhteensä = 10! 3 3!7! = = 120

Algoritmit 2. Luento 13 Ti Timo Männikkö

Luku 8. Aluekyselyt. 8.1 Summataulukko

isomeerejä yhteensä yhdeksän kappaletta.

Määrittelyvaihe. Projektinhallinta

Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet:

Terveydenhuollon tehokas johtaminen edellyttää parhaat raportointi- ja analysointityövälineet

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Malliratkaisut Demot

Ohjelmistojen suunnittelu

j n j a b a c a d b c c d m j b a c a d a c b d c c j

Hieman linkkejä: lyhyt ohje komentoriviohjelmointiin.

58131 Tietorakenteet ja algoritmit (syksy 2015)

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen

Kombinatorisen logiikan laitteet

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

Suvi Junes Tampereen yliopisto /Tietohallinto 2012

Datatähti 2019 loppu

SMG-4500 Tuulivoima. Kuudennen luennon aihepiirit. Tuulivoimalan energiantuotanto-odotukset AIHEESEEN LIITTYVÄ TERMISTÖ (1/2)

Tietokoneen toiminta (Computer Organization I)

Liikenneteorian tehtävä

Dynaaminen analyysi II

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

Algoritmit 2. Luento 6 To Timo Männikkö

Tietorakenteet ja algoritmit

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.

Algoritmit 2. Luento 5 Ti Timo Männikkö

Yhtälöryhmät 1/6 Sisältö ESITIEDOT: yhtälöt

JHS 180 Paikkatiedon sisältöpalvelut Liite 4 INSPIRE-palvelujen laadun testaus

2.2.1 Ratkaiseminen arvausta sovittamalla

Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä:

Transkriptio:

Ohjelmasuoritusmalli ja sen käyttö Luento 3 58153003 Ohjelmistojen suorituskyky 1 Skenaarioiden suorituksen kuvaaminen OHJELMASUORITUSMALLI SOFTWARE EXECUTION MODEL 58153003 Ohjelmistojen suorituskyky 2 Helsingin Yliopisto / Tktl 1

Ohjelmasuoritusmallien tavoite SPE:n 1. mallinnusstrategian mukaan kehitysprojektin alussa pyritään laatimaan mahdollisimman yksinkertaisia malleja, jotka kuitenkin sisältävät ohjelmiston suorituskyvyn kannalta olennaisimmat piirteet Mallien tulisi olla helppoja ratkaista (=evaluoida) nopean palautteen saamiseksi ehdotetun ohjelmistoratkaisun suorituskyvystä Ohjelmasuoritusmallit ovat juuri tällaisia 58153003 Ohjelmistojen suorituskyky 3 Käyttö Ohjelmasuoritusmallin ratkaiseminen tarkoittaa staattista analyysiä (simuloimatta tai muuten ohjelmaa suorittamatta) keskimääräisistä sekä pahimman ja parhaimman tapauksen vastausajoista Tarkastellaan vain yhtä ohjelmiston käyttötapausta kerrallaan ottamatta huomioon muuta työkuormaa, muita käyttäjiä tai resurssikilpailusta aiheutuvia viiveitä ja odottelua Tuotetut vastausaika-arviot ovat siis optimistisia 58153003 Ohjelmistojen suorituskyky 4 Helsingin Yliopisto / Tktl 2

Käyttö Ohjelmasuoritusmallien avulla voidaan yleensä havaita vakavat suorituskykyongelmat aikaisessa arkkitehtuuri- tai suunnitteluvaiheessa Jos jo yksinkertainen malli kertoo ongelmista, on turhaa laatia monimutkaisempia malleja Malleja voidaan tarkentaa myöhemmissä vaiheissa, kun saadaan lisää tietoa implementaatiosta ja suoritusympäristöstä Erityisesti kriittisten toimintojen suorituspolut 58153003 Ohjelmistojen suorituskyky 5 Käyttö Ohjelmasuoritusmallien tuottamia vastausaikoja voidaan käyttää syötearvoina järjestelmäsuoritusmalleille J-mallit ottavat huomioon työkuorman, muut käyttäjät ja resurssikilpailun Huom vaikka O-mallien perusteella suorituskykyongelmia ei ole, järjestelmätasolla niitä voi silti ilmetä Kilpailu samoista resursseista 58153003 Ohjelmistojen suorituskyky 6 Helsingin Yliopisto / Tktl 3

SUORITUSVERKKO EXECUTION GRAPH 58153003 Ohjelmistojen suorituskyky 7 Ohjelmasuoritusmallien esitysmuoto SPE:ssä O-mallien määrittelyyn käytetään suoritusverkkoja (execution graph) UML:n aktiviteettikaavioita muistuttava verkkonotaatio Verkon solmut vastaavat prosessointiaskeleita ja verkon kaaret määrittävät askeleiden suoritusjärjestyksen Jokaisesta suorituskyvyn näkökulmasta tärkeästä skenaariosta (performance scenario) laaditaan suoritusverkko 58153003 Ohjelmistojen suorituskyky 8 Helsingin Yliopisto / Tktl 4

getcardinfo requestpin request Transaction request Account request Amount transaction Request dispense Cash Perussolmut Solmut vastaavat sekvenssikaavion esittämiä peräkkäisiä askeleita Tililtä nosto käyttötapauksen suorituksessa - Yksityiskohtaisin tarkastelun taso Loogisesti yhteenkuuluvat askelet voidaan tiivistää samaan solmuun verkon koon pienentämiseksi initiatesession request Transaction process Withdrawal dispensecash printreceipt terminate Session printreceipt terminate Session 58153003 Ohjelmistojen suorituskyky 9 Toisto, valinta, solmun laajennos getcardinfo Toista n kertaa requestpin n process Transaction laajennos request Transaction 0,001 0,7 0,299 process Deposit process Withdrawal process Bal.Inquiry terminate Session Valinta - Haaran todennäköisyys p, p i = 1.0 58153003 Ohjelmistojen suorituskyky 10 Helsingin Yliopisto / Tktl 5

Rinnakkainen suoritus getuserinput putdatain Screen execute RemoteQuery create ResultsScreen Parallel do: Molempien pitää tulla valmiiksi, ennen kuin suoritus voi jatkua (join) displayscreen 58153003 Ohjelmistojen suorituskyky 11 Rinnakkainen suoritus getuserlogin createinitial Screen logevent loadusage Data Split: Haarat ovat itsenäisiä suoritussäikeitä, joiden ei tarvitse tulla valmiiksi ennen suorituksen jatkumista displayscreen 58153003 Ohjelmistojen suorituskyky 12 Helsingin Yliopisto / Tktl 6

Rajoituksia 1. Suoritusverkossa saa olla vain yksi aloitussolmu Täsmälleen yksi solmu, johon ei tule yhtään kaarta Valintasolmu voi olla aloitussolmuna, millä voi kuvata vaihtoehtoisia aloituksia 2. Suoritusverkossa saa olla vain toistorakenteita käyttäen muodostettuja silmukoita 58153003 Ohjelmistojen suorituskyky 13 Rajoituksia Rajoitukset eivät vähennä suoritusverkkojen ilmaisuvoimaa, mutta ne yksinkertaistavat verkkoalgoritmeja (mallin ratkaiseminen) Huom suoritusverkot näyttävät melko samanlaisilta kuin vuokaaviot, mutta Suoritusverkot näyttävät eri polkujen suorituksen frekvenssit Niillä mallinnetaan vain suorituskyvyn kannalta mielenkiintoiset suorituspolut 58153003 Ohjelmistojen suorituskyky 14 Helsingin Yliopisto / Tktl 7

OHJELMASUORITUSMALLIN RATKAISEMINEN 58153003 Ohjelmistojen suorituskyky 15 Suoritusmallien käyttötarkoitus Parhaan tapauksen vastausaikojen nopea tarkistus tärkeimmille suorituskykyskenaarioille Vaihtoehtoisten ratkaisujen suorituskykyvaikutusten arviointi Suorituskyvyn kannalta kriittisten ohjelmiston osien tunnistaminen Järjestelmäsuoritusmallien parametrien johtaminen 58153003 Ohjelmistojen suorituskyky 16 Helsingin Yliopisto / Tktl 8

Mallin ratkaiseminen Malli ratkaistaan eli verkon suorittamiseen kuluva aika lasketaan seuraavalla algortimilla 1. Tunnista verkosta osarakenne, jonka suoritusaika osataan laskea, ja laske suoritusaika 2. Korvaa koko osarakenne yhdellä solmulla (reduktio), jonka suoritusaika on edellä laskettu aika 3. Jos verkossa on vain yksi solmu jäljellä, tuon solmun suoritusaika on verkon ratkaisu, ja voit lopettaa. Muuten jatka askelesta 1. 58153003 Ohjelmistojen suorituskyky 17 Perussolmujonon redusointi t 1... t 2 t n t t = t 1 + t 2 + + t n 58153003 Ohjelmistojen suorituskyky 18 Helsingin Yliopisto / Tktl 9

Toistorakenteen redusointi n t t 1 t = nt 1 58153003 Ohjelmistojen suorituskyky 19 Valintarakenteen redusointi p 1 t 1 t t 0 p 2 t 2 K.a. Paras Pahin t = t 0 + p 1 t 1 + p 2 t 2 t = t 0 + Min( t 1,t 2 ) t = t 0 + Max( t 1,t 2 ) 58153003 Ohjelmistojen suorituskyky 20 Helsingin Yliopisto / Tktl 10

Laajennokset Sovella reduktioalgoritmia laajennetuille solmuille rekursiivisesti t 1?... t 2 58153003 Ohjelmistojen suorituskyky 21 Esimerkki Sovelletaan algoritmia kalvon 10 suoritusverkkoon Toiston suorituskertojen lukumäärä on 2, ja solmuille käytetään seuraavia suoritusaikoja (aikayksiköllä ei nyt väliä): Solmu Suoritusaika getcardinfo 50 requestpin 20 requesttransaction 30 processdeposit 500 processwithdrawal 200 processbalanceinquiry 50 terminatesession 100 58153003 Ohjelmistojen suorituskyky 22 Helsingin Yliopisto / Tktl 11

Esimerkki processtransaction aliverkon ratkaisu: Lyhin aika 30 + 50 = 80 Pisin aika 30 + 500 = 530 Keskiarvo 30 + 0,001*500 + 0,7*200 + 0,299*50 = 185,45 Koko verkon ratkaisu: Lyhin 50 + 20 + 2*80 + 100 = 330 Pisin 50 + 20 + 2*530 + 100 = 1230 K.a. 50 + 20 + 2*185,45 + 100 = 540,9 58153003 Ohjelmistojen suorituskyky 23 Rinnakkaisten polkujen ratkaisut Parhaan tapauksen laskennassa oletetaan, että kaikki muut rinnakkaiset suoritukset ovat jo valmiit, silloin kun pisimpään kestävä suoritus valmistuu Parhaan tapauksen aika on tällöin pisimpään kestävän rinnakkaisen polun suoritusaika Huonoimman tapauksessa laskennassa oletetaan yksinkertaisesti, että kaikki rinnakkaiset suoritukset sarjallistuvat peräkkäissuoritukseksi Huonoimman tapauksen aika on siis rinnakkaisten suoritusten aikojen summa 58153003 Ohjelmistojen suorituskyky 24 Helsingin Yliopisto / Tktl 12

SUORITUSKYVYN ANALYSOINTI SUORITUMALLEJA KÄYTTÄEN 58153003 Ohjelmistojen suorituskyky 25 Analyysiprosessista Kun kriittisten käyttötapauksien suorituskykyskenaarioista on laadittu ohjelmiston alustavan arkkitehtuurin mukaiset ohjelmasuoritusmallit ja kun suorituskykytavoitteet ovat selvillä, voidaan alkaa evaluoimaan järjestelmän suorituskykyä Tehdään sekä parhaimman että pahimman tapauksen analyysit Aloitetaan parhaan tapauksen suoraviivaisista analyyseistä ja tehdään monimutkaisempia ja realistisempia arvioita sitä mukaa, kun opitaan ja/tai saadaan lisää tietoa järjestelmästä ( boot strapping ) 58153003 Ohjelmistojen suorituskyky 26 Helsingin Yliopisto / Tktl 13

Arvoista ja yksiköistä Edellisissä esimerkeissä käytettiin geneeristä aikaa kuvaamaan solmujen suoritukseen kuluvaa aikaa Oikeissa analyyseissä pitää tietysti määritellä mitä aikaa mitataan ja mikä on mittayksikkö Kaikille verkoille käytetään samoja laskentaperusteita ja tulokset ilmoitetaan halutussa aikayksikössä 58153003 Ohjelmistojen suorituskyky 27 Ajoista CPU -aika: kumulatiivinen aika, jolloin ohjelma tai sen osa (prosessi, säie) on ollut todella suorituksessa jossain laskentayksikössä Tähän ei lasketa mukaan esim. aikaa, jonka prosessi odottaa pääsyä suoritukseen (ready) tai odottaa jotain muuta tapahtumaa (wait, sleep) Yksikkö: ms, s, ns Kulunut aika (elapsed time): seinäkelloaika, ohjelman suoritukseen kulunut kokonaisaika mukaan lukien kaikki viiveet ja odottelut Yksikkö: s, m, h 58153003 Ohjelmistojen suorituskyky 28 Helsingin Yliopisto / Tktl 14

Mistä ajat? Edellä olleissa esimerkeissä eräille operaatioille oli valmiiksi annettu suoritusverkon ratkaisemisessa tarvittavat ajat Esim. getcardinfo: 50 Suoritusaikaa on yleensä vaikea arvata suoraan, mutta sitä voidaan arvioida operaation oletetusti käyttämien ohjelmistoresurssien määrän ja niiden prosessointikustannusten perusteella Paras, pahin ja keskimääräinen käyttö 58153003 Ohjelmistojen suorituskyky 29 Resurssien käyttö validateuser validate Transaction sendresult WorkUnits 1 DB 2 Msgs 0 WorkUnits 2 DB 3 Msgs 0 WorkUnits 2 DB 1 Msgs 1 Suoritusverkon solmujen kohdalla näytetään solmun operaation vaatimien resurssien määrä WorkUnit: CPU:lla suoritettavien käskyjen määrä ilmaistuna suuruusluokkina DB: tietokantaoperaatioiden lukumäärä Msgs: tietoliikenneverkon yli lähetettyjen viestien lukumäärä 58153003 Ohjelmistojen suorituskyky 30 Helsingin Yliopisto / Tktl 15

Prosessointikustannukset Device CPU Disk Network Quantity 1 1 1 Service Unit Kinstr. Phys. I/O Msgs. WorkUnit 20 0 0 DB 500 2 0 Msgs 10 2 1 Service time (per unit of service) 0.00001s 0.02s 0.01s Huom lukemat ovat esimerkinomaisia eivätkä todennäköisesti vastaa nykyaikaisia järjestelmiä! 58153003 Ohjelmistojen suorituskyky 31 Verkon ratkaiseminen 1. Laske jokaisen solmun resurssikulutus käyttäen prosessointikustannustaulukkoa 2. Laske koko verkon resurssikulutus käyttäen redusointialgoritmia 3. Laske parhaan tapauksen suoritukseen kuluva aika (elapsed time) kertomalla kunkin resurssin yhden yksikön suoritusaika (service time) käytettyjen yksikköjen kokonaismäärällä ja laskemalla näin saadut ajat yhteen 58153003 Ohjelmistojen suorituskyky 32 Helsingin Yliopisto / Tktl 16

Esimerkki askel 1 sendresult solmun resurssikulutus: Name Service Units CPU Kinstr. Physical I/O Network Messages WorkUnit 2 20 0 0 DB 1 500 2 0 Msgs 1 10 2 1 Total: sendresult 550 4 1 Kerrotaan luvut ja lasketaan tulot sarakkeittain yhteen 58153003 Ohjelmistojen suorituskyky 33 Esimerkki askel 2 Koko verkon suorituksen resurssikulutus: Processing step CPU Kinstr. Physical I/O Network Messages validateuser 1020 4 0 validatetransaction 1540 6 0 sendresult 550 4 1 Total: auth.transaction 3110 14 1 58153003 Ohjelmistojen suorituskyky 34 Helsingin Yliopisto / Tktl 17

Esimerkki askel 3 Suoritusajan laskenta parhaimmalle tapaukselle (3110 x 0.00001) + (14 x 0.02) + (1 x 0.01) = 0.3211 sekuntia 58153003 Ohjelmistojen suorituskyky 35 Helsingin Yliopisto / Tktl 18