1 / 37

Tehokkaat eräohjelmat

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

toan
Download Presentation

Tehokkaat eräohjelmat

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tehokkaat eräohjelmat Osuuspankkikeskus Ville Hurmalainen

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

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

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

  5. The Hardware

  6. Laitteistot

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

  8. Muisti • Keskusmuisti • 64 bittiä tarjoaa teoriassa 16 exatavua, käytännössä paljon vähemmän • Sivuuttaminen • Eräajoille paha juttu • Trashing = tukehtuminen sivuuttamiseen

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

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

  11. 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ä

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

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

  14. Virittämisen muistilista • Varmistettava, että ajoympäristö on konfiguroitu kunnolla • Sijoitetaan mahdollisuuksien mukaan tiedot keskusmuistiin • Säännölliset huoltotoimenpiteet (Tree R's) • Vähennetään ja optimoidaan I/O operaatiot • Jaetaan työ rinnakkaisiin prosesseihin • Varautuminen ohjelma- ja laitteistohäiriöihin • Ohjelmistojen tehostaminen

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

  16. Tehostaminen näkökulmat • Tehostuksessa monta näkökulmaa • Ylläpidollinen minimointi • Vasteajan minimointi • 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ä

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

  18. 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ä

  19. 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"

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

  21. The Real Thing

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

  23. 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…

  24. 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ä

  25. 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ä

  26. 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 ja viimeistely ohjelmallisilla UPDATE lauseilla. Ne vakuutussopimukset, joihin on koskettu ohjelman alkuaikaleiman jälkeen, jätetään ennalleen.

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

  28. Autoturvan eräajot (1)

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

  30. Pohdiskelua

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

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

  33. 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 €

  34. 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ä

  35. 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 €

  36. Muita juttuja

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

More Related