tehokkaat eräohjelmat

Post on 18-Mar-2016

36 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

Tehokkaat eräohjelmat

OsuuspankkikeskusVille 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

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

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.

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

The Hardware

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).

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).

Muisti

• Keskusmuisti– 64 bittiä tarjoaa teoriassa 16 exatavua,

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

– Eräajoille paha juttu– Trashing = tukehtuminen sivuuttamiseen

CPU

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

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)

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ä

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

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

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

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

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ä

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

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ä

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"

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.

The Real Thing

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.

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…

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ä

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ä

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.

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

Autoturvan eräajot (1)

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

Pohdiskelua

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

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)

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 €

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ä

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 €

Muita juttuja

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.

top related