tehokkaat eräohjelmat

37
Tehokkaat eräohjelmat Osuuspankkikeskus Ville Hurmalainen

Upload: toan

Post on 18-Mar-2016

36 views

Category:

Documents


0 download

DESCRIPTION

Tehokkaat eräohjelmat. Osuuspankkikeskus Ville Hurmalainen. Eräajot, mitä kiinnostavaa?. Vähiten arvostettu, mutta käytännössä tärkein tapa käsitellä tietoa Ei mitään ”hörhöilyä”, vain tärkeimmät uutuudet tuodaan myös eräajoympäristöihin Suuria haasteita 24/7 käyttövaatimusten takia - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Tehokkaat eräohjelmat

Tehokkaat eräohjelmat

OsuuspankkikeskusVille Hurmalainen

Page 2: Tehokkaat eräohjelmat

Eräajot, mitä kiinnostavaa?

• Vähiten arvostettu, mutta käytännössä tärkein tapa käsitellä tietoa

• Ei mitään ”hörhöilyä”, vain tärkeimmät uutuudet tuodaan myös eräajoympäristöihin

• Suuria haasteita 24/7 käyttövaatimusten takia

• Siksi juuri sopiva aihe ylemmän ammattikorkeakoulututkinnon opinnäytetyöksi

Page 3: Tehokkaat eräohjelmat

Ylempi ammattikorkeatutkinto

• Ylempi ammattikorkeakoulututkinto tarkoitettu työelämässä oleville korkeakoulututkinnon suorittaneille, jotka haluavat syventää ja laajentaa erikoisosaamistaan.

• Ylempi ammattikorkeakoulututkinto tuottaa saman kelpoisuuden julkiseen virkaan kuin yliopistoissa ja muissa tiedekorkeakouluissa suoritettu ylempi korkeakoulututkinto.

• Ylempien ammattikorkeakoulututkintojen laajuus on 60 - 90 opintopistettä. Kokopäiväisesti opiskellen opinnot kestävät vuodesta puoleentoista vuoteen.

• Virallinen titteli: Tradenomi (ylempi AMK), englannin kielinen tutkintonimike Master of Business Administration eli MBA

• Itselläni meni työn ohessa suoritettuna 4 vuotta.

Page 4: Tehokkaat eräohjelmat

Opinnäytetyö

• Ylemmän ammattikorkeakoulututkinnon opinnäytetyö tehdään työelämän lähtökohdista

• "Tavoitteena tehokkaat eräajot" liikkeelle Autoturvajärjestelmän suurien uudistusajojen tehovaatimuksista

• Tehoa tutkittu seuraavista näkökulmista– laitteistot– tiedonhallintaohjelmistot– sovellusohjelmointi

Page 5: Tehokkaat eräohjelmat

The Hardware

Page 6: Tehokkaat eräohjelmat

LaitteistotTallennus- väline

Hakuaika Kapasiteetti

Hinta Pysyvyys

Rekisteri 1 nsek < 1 KB Erittäin kallis

Ei pysyvä

Cache 2 nsek 4 MB Erittäin kallis

Ei pysyvä

Keskusmuisti 10 nsek 512 – 4096 MB

Kallis Ei pysyvä

SSD-muistilaitteet

4 msek 64 - 256 GB Melko kallis

Pysyvä

Levylaiteet 10 msek 200 - 1000 GB

Edullinen

Pysyvä

Magneetti- 100 s 400 – 800 GB

Halpa PysyvänauhatTaulukko 1. Muistilaitteiden ominaisuudet (Tannenbaum, 2008, 23 - 25).

Page 7: Tehokkaat eräohjelmat

Levy ja SSD muistit

Kuvassa esitetään SSD laitteiden hajalukemisen teho verrattuna levylaitteisiin. Kuvasta käy ilmi, miten lukeminen hajajärjestyksessä (oikealla) on paljon tehokkaampaa SSD laitteilla verrattuna kovalevyihin. Vasemmalla kuvataan, miten kirjoittaminen hajajärjestyksessä on edelleen tehokkaampaa perinteisillä kovalevyillä .

Tehokkuuden saavuttamiseksi I/O operaatioiden vähentäminen on olennaista, sillä keskusmuisti on kuitenkin paljon nopeampaa. ”Electrons move faster than disk heads”(Clevinger, 2005).

Page 8: Tehokkaat eräohjelmat

Muisti

• Keskusmuisti– 64 bittiä tarjoaa teoriassa 16 exatavua,

käytännössä paljon vähemmän• Sivuuttaminen

– Eräajoille paha juttu– Trashing = tukehtuminen sivuuttamiseen

Page 9: Tehokkaat eräohjelmat

CPU

• Ei oikeastaan ole ollut vuosiin mikään pullonkaula taloushallinnollisessa tietojenkäsittelyssä– "Intel giveth, Microsoft taketh away"– Lähinnä kustannuskysymys– keskuskoneratkaisuissa hyvinkin selkeä kipupiste

Page 10: Tehokkaat eräohjelmat

Eräajot, verkko ja ”pilvi”

• Yksittäisen tiedoston suurin siirtonopeus voi olla hyvinkin suuri, mutta…

• Pilvipalvelut sittenkin eräepäystävällisiä– Siirtoviive, eli siirtopalvelun käynnistämiseen kuluva on

suuri, 10 – 100 ms. – Käytännössä eräajot eivät pysty käyttämään palveluita

”pilven” ylitse• poikkeus: toimii, jos prosessointi hajautetaan ja siirrettävä aineisto

jaellaan isoina kokonaisuuksina (Google - Map Reduce)

Page 11: Tehokkaat eräohjelmat

Tiedostojärjestelmät

• Peräkkäistiedostot ovat erittäin nopeita, mutta voivat yllättää, kun– levyjärjestelmässä vapaa tila pirstoutunut– tiedoston tilavaraus ei kunnolla tiedossa ja

lisävaraukset epäkäytännöllisen kokoisia• Google käyttää tietomassojensa käsittelyyn

yksinomaan tiedostoja - ei tietokantoja– Hajautettu MapReduce menetelmä

Page 12: Tehokkaat eräohjelmat

Death by Random I/O

• Tilanne, jossa hyvin suuri tietomassa käydään lävitse yksinomaan hajalukua käyttäen

• Oliotekniikoilla toteutetuissa eräohjelmissa, yleinen– John Cambell (IBM) kuvailee näitä ohjelmia

”luupissa” pyöriviksi tosiaikatapahtumiksi. – Yleismoduulit toteutettu usein tällä mallilla

Page 13: Tehokkaat eräohjelmat

Yhteenveto laitteista

• SSD muistilaitteet lupaavia– mutta edelleen kalliita– kirjoittaminen hidasta

• Levylaitteet "still going strong"– hajakäsittelynopeus jatkuvasti heikko– suurien peräkkäistietomassojen käsittely nopeaa

• Keskusmuisti– nopeuden kannalta tärkein komponentti

Page 14: Tehokkaat eräohjelmat

Virittämisen muistilista1. Varmistettava, että ajoympäristö on konfiguroitu

kunnolla2. Sijoitetaan mahdollisuuksien mukaan tiedot

keskusmuistiin3. Säännölliset huoltotoimenpiteet (Tree R's)4. Vähennetään ja optimoidaan I/O operaatiot5. Jaetaan työ rinnakkaisiin prosesseihin6. Varautuminen ohjelma- ja laitteistohäiriöihin7. Ohjelmistojen tehostaminen

Page 15: Tehokkaat eräohjelmat

Tietokannan huoltotoimenpiteet

• Bonnie Bakerin tärkein ohje DB2:lle on englanninkielessä tunnetut perustaidot ”reading, 'riting and 'ritmetics” (lukeminen, kirjoittaminen ja laskento), tree R's eli kolmen ärrää:– REORG (Reading) - uudelleenorganisointi– RUNSTATS (’Riting)- tilastointi– REBIND (’Ritmetics) - uudelleensidonta

Page 16: Tehokkaat eräohjelmat

Tehostaminen näkökulmat

• Tehostuksessa monta näkökulmaa1. Ylläpidollinen minimointi2. Vasteajan minimointi3. CPU:n minimointi

• yhden näkökulman suunnalta tehostaminen voi aiheuttaa toisen kustannuksen nousun

• tässä lopputyössä ajattelumalli oli täsmälleen vastakkaisessa järjestyksessä

Page 17: Tehokkaat eräohjelmat

Lukitukset

• Aikaisemmin meillä oli eräikkuna, yksinomaan eräajoille pyhitetty aikajakso– mahdollisti taulujen lukitsemisen yhdelle eräajolle

• tehostaa ajoja• yksinkertaistaa logiikkaa

• Nyt vaatimuksena on 24 x 7 käytettävyys– joko sivutason lukitukset– tai optimistinen aikaleimapohjainen lukitus

Page 18: Tehokkaat eräohjelmat

Lukitusstrategioiden vertailu

• Sivulukot ovat suositeltavia, kun kantaa käytetään kiivaasti (paljon online-käyttöä)

• ei päivitysten peruuttamista• vähemmän prosessointia• odottavista tapahtumista

suuri osa menee läpi

• Optimistinen lukitus on suositeltavaa, kun päivittäjiä on vähän

• kanta lukukäytössä kaiken aikaa

• mahdollistaa prosessoinnin useammalla peräkkäisellä stepillä

Page 19: Tehokkaat eräohjelmat

Ohjelmoinnin ajatusmallit

• Imperatiivinen paradigma• "ensin tee näin ja sitten näin"• perinteinen ohjelmointi.

• Funktionaalinen paradigma• "ratkaise yhtälö ja käytä tulosta hyväksi"• kaikki ohjelmat ovat funktioita ja koostuvat funktioista

• Looginen paradigma• "tulos löytyy käymällä säännöt ja faktat lävitse"• SQL kieli noudattaa tätä paradigmaa

• Olio-orientoitunut paradigma• "lähetä viestejä eri olioiden välillä, näin muuttaen niiden tiloja"

Page 20: Tehokkaat eräohjelmat

Olio-paradigma• Miten tietokantakäsittely

sijoittautuu olio-paradigman mukaisessa mallissa (Bjerg Jensen, 2006).

• Huomionarvoista tässä kuvassa on se, että resurssikerros on kokonaan alistettu liiketoimintakerrokselle. – Tämä on esteenä

resurssien kokonaisvaltaiselle optimoinnille.

Page 21: Tehokkaat eräohjelmat

The Real Thing

Page 22: Tehokkaat eräohjelmat

DB2 tehovinkkejä (1)• Käytä LOAD apuohjelmaa, jos voit

– LOAD … SHRLEVEL CHANGE vastaa toiminnallisesti lähes täysin ohjelmaa, jossa olisi INSERT + COMMIT lausepareja

• käyttökelpoinen vaikka keskellä päivää• nopeampi - mittausten perusteella 1/5 itse kirjoitetusta.• vie paljon vähemmän CPU:ta (toki aito LOAD vielä tuplasti

parempi)• Indeksitön aputaulu

– taulu, jossa ei indeksejä, on käytännössä peräkkäistiedosto.

• INSERT nopeus jopa kaksinkertainen, myös CPU kustannus puolitettu

• tilapäiseen tiedon tallentamiseen, kirjoitus esim. CICS tapahtumista ja käsittely eräajossa.

Page 23: Tehokkaat eräohjelmat

DB2 tehovinkkejä (2)

• Tiedon hakeminen käyttämällä RID:ä. – jos johonkin tietoon pitää palata uudestaan,

voidaan se hakea käyttämällä RID-tunnistetta.• SELECT from DELETE, UPDATE tai INSERT

– ohjelmassa voidaan samalla lauseella lukea ja poistaa tietoa

• DELETE + SELECT + INSERT ei sentään toimi– jos olisi toiminut, olisi saanut tehtyä MOVE-lauseen…

Page 24: Tehokkaat eräohjelmat

DB2 tehovinkkejä (3)

• Multi row FETCH– ohjelmallisesti vähän kömpelö toteuttaa– pitkällisen analysoinnin jälkeen vakuutusjärjestelmissä

vähän kohtia, jossa kannattaisi ottaa käyttöön (työmäärä vs säästöt)

– multi row SELECT voisi olla oikeasti näppärämpi

• singleton SELECT…FIRST 1 ROW ONLY– tälle löytyy paljon käyttöä– yksinkertaistaa koodia– ei kuitenkaan tuettuna GEN-kehittimessä vielä

Page 25: Tehokkaat eräohjelmat

Tietokannan rakenne

• Eräajolle sopiva kannan rakenne– Cluster-järjestys käsittelyjärjestys– mahdollisimman paljon INSERT only piirteitä

• kun ajo on käsitellyt materiaalin, niin uudet lisäykset voitaisiin yksikertaisesti lisätä LOAD/SHRLEVEL CHANGE stepillä kantaan

• jos kannassa detaljiriveistä riippuvaisia tietoja, niin tällöin voidaan joutua merkitsemään rivit keskeneräisiksi

– esimerkiksi summarivit voidaan päivittää vasta kun kaikki detaljirivit kannassa - keskeneräinen tilanne on epäeheä

Page 26: Tehokkaat eräohjelmat

Eräajon rakenne

Lukitseminen: aikaleimapohjainen optimistinen lukitus

Lukeminen: yksinomaan kannan cluster järjestyksessä

Käsitteleminen: yksittäinen tapaus ladataan muistiin tiedostosta ja INSERT sekä UPDATE tiedot kirjoitetaan tiedostoon

Päivitys: pääosin LOADilla javiimeistely ohjelmallisilla UPDATE lauseilla. Ne vakuutussopimukset, joihin on koskettu ohjelman alkuaikaleiman jälkeen, jätetään ennalleen.

Page 27: Tehokkaat eräohjelmat

Ositettu eräajo• Jako useampaan steppiin järkevää

– testaaminen helpottuu– kannan palautusta ei tarvita missään muualla kuin

viimeisissä päivityksiä ja lisäyksiä tekevissä stepeissä

– testitiedostojen monistaminen helppoa• vaikein osuus, itse uudistaminen, pyörii

käytännössä lähes ilman tietokantaa– ajoja voidaan testata vaikka rinnakkain

Page 28: Tehokkaat eräohjelmat

Autoturvan eräajot (1)

Page 29: Tehokkaat eräohjelmat

Autoturvan eräajot (2)

• Onnistunut kokonaisuus– vaikka online-osaajille haastava ajattelutavan

muutos– vaatii ja vaatisi enemmän kouluttamista

• Ei kuitenkaan vallankumousta– Laskutus- ja reskontra palvelut, joita on pakko

käyttää päivittävässä stepissä, on kallis

Page 30: Tehokkaat eräohjelmat

Pohdiskelua

Page 31: Tehokkaat eräohjelmat

Miksi vain vähän hyviä eräajoja (1)

• Olio-ohjelmoinnin periaatteet• Äärimmilleen vedetyt projektit /

rakentamiskustannuksien minimointi• Valmisohjelmissa ei varauduta suuriin

massoihin• Modulaarisissa ratkaisuissa painopiste online-

toiminnoissa– eräohjelmat saavat luvan käyttää valmiita

moduuleita, jotka sopivat huonosti eräkäyttöön

Page 32: Tehokkaat eräohjelmat

Miksi vain vähän hyviä eräajoja (2)• Taloudellinen lyhytnäköisyys

– elinkaaren aikaisia kustannuksia ei haluta ymmärtää– luullaan, että lisäämällä rautaa ongelmat poistuvat:

"Mooren laki" ratkaisee kaiken– ulkoiset toimittajat ja tarjouskilpailut: "halvimmat

tietojärjestelmät, maksoi mitä maksoi".• Maksaja eli liiketoiminta haluaa päättää ITSE

– mutta ei oikeasti osaa IT-teknologiaa– haluttomuus nähdä faktoja, jotka osoittavat

päätöksenteossa tulleita virheitä– rohkeutta korjata huonoja päätöksiä puuttuu (ja paljon)

Page 33: Tehokkaat eräohjelmat

Käyttökulut vs rakentamiskustannukset

Ohjelma IS30Koostuu 53 moduulistaKunkin moduulin keskimääräinen koko on 60 riviäOhjelman yhteenlaskettu rivimäärä 31801000 rivin keskimääräinen hinta 5000 €Koodauskustannus n. 16.000 €Muu projektityö n. 32.000 €

Rakennuskustannukset n. 48.000 €Käyttökustannukset kuukaudessa 1.550 €.Sovelluksen arvioitu käyttöikä on 20 vuotta.

Käyttökustannukset n. 372.000 €Järjestelmän ylläpito 3.000 € vuodessa.

Ylläpito n. 60.000 €YHTEENSÄ 432.000 €

Page 34: Tehokkaat eräohjelmat

Kokonaiskustannukset (1)

• Verrataan online moduuleista rakennettua eräohjelmaa ja valmiiksi erätehokkaaksi rakennettua ohjelmaa:Eräajotehokas ohjelmisto 11.300 riviä

Uudelleen käytettävät erä-I/O moduulit 4.800 riviäPäivitys ja lukitus logiikka 800 riviäVarsinainen logiikka 5.700 riviä

Tosiaika-moduuleista koottuna 11.860 riviäTosiaika I/O moduulit 6.160 riviäVarsinainen logiikka 5.700 riviä

Page 35: Tehokkaat eräohjelmat

Kokonaiskustannukset (2)

• Verrataan online moduuleista rakennettua eräohjelmaa ja valmiiksi erätehokkaaksi rakennettua ohjelmaa:

Tehokkaan eräajon kustannukset verrattuna tosiaika-moduuleista koottuun.Hankintahinta +10 % -4.800 €Käyttökustannukset -80 % +297.600 €Kokonaiskustannukset -69 % +292.800 €

Page 36: Tehokkaat eräohjelmat

Muita juttuja

Page 37: Tehokkaat eräohjelmat

Googlen MapReduce?• Osa NoSQL hypeä

– NoSQL tarkoittaa yleisesti ei-relaationaalisia tietovarastoja• Patentoitu (!) framework

– Map -steppi tuottaa lajitellun tiedoston– Reduce -steppi lomittaa tiedostot ja kirjoittaa tulosjoukon

tiedostoon, mahdollista jatkokäsittelyä varten• Työ voidaan jakaa valtavaan määrään rinnakkaisia ja

peräkkäisiä prosesseja, framework sisältää logiikan, jolla hallitaan työn sisäisiä riipuvuuksia

• Hadoop on Javalla toteutettu open source projekti, joka hyödyntää samaa periaatetta.