1 / 47

SAS ohjelman suoritusajan mittaaminen ja koodin tehokkuuden parantaminen

SAS ohjelman suoritusajan mittaaminen ja koodin tehokkuuden parantaminen. SAS Technical Clubin kokoontuminen 17.9.2009 Virpi Virtanen Tieto-Tapiola Oy. Kokemuksia Koodin toiminta Resurssimittareita CPU käytön vähentäminen I/O. Levytila Muistin käytön optimointia

jered
Download Presentation

SAS ohjelman suoritusajan mittaaminen ja koodin tehokkuuden parantaminen

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. SAS ohjelman suoritusajan mittaaminen ja koodin tehokkuuden parantaminen SAS Technical Clubin kokoontuminen 17.9.2009 Virpi Virtanen Tieto-Tapiola Oy

  2. Kokemuksia Koodin toiminta Resurssimittareita CPU käytön vähentäminen I/O Levytila Muistin käytön optimointia Verkkoliikenteen vähentäminen Sisältö

  3. Kokemuksia? • Mikä on omassa kokemuspiirissäsi kriittisin tekijä? • Suoritukseen kulunut aika? (seinäkello) • CPU? • Muistin määrä? • Levytilan määrä? • I/O operaatioiden määrä? • SAS taidot?

  4. Tehokkuuden vaihtokaupat • Datamäärän pienentäminen esimerkiksi compressoimalla yleensä lisää CPU:n käyttöä. • I/O:n vähentäminen kasvattaa muistin käyttöä. • Tehokas ohjelma on hidas kirjoittaa ja se pitää testata paremmin, kuin MUTU-tehokas ohjelma.

  5. Koodin oikeellisuus ja toiminta • SQL-optio noexec määrittää, että koodi käännetään, muttei suoriteta • Validate-select-lauseen kanssa SQL:ssä. • Kun määritellään options obs=1 käsitellään vain yksi rivi dataa. • Options obs=max palauttaa alkutilanteen.

  6. Data-vaiheen käyttäminen • Koodi käännetään ja suoritetaan. Testaus voidaan tehdä obs=0 arvolla. • Debuggeri! • Bufferillinen aineistoa ladataan taulusta, where-ehtoa sovelletaan bufferiin. • PDV:ssä sovelletaan if-ehtoa. • PDV:ssä oleva havainto käy läpi jokaisen lauseen.

  7. Kaaviokuva Data-vaiheesta Bufferi PDV Nimi Tyyppi koko Data uusi; Set vanha; A = B; X = 3 * y; Run; Bufferi

  8. Vaihtoehtoja SQL:lle data yhdistyksessä • Formaattien käyttäminen • Data-vaiheessa point-option käyttäminen (Muista STOP-lause) • Makromuuttujien käyttäminen • Hash-tablet • Array

  9. SASTRACE • OPTION SASTRACE=’,,,d’|’,,t,’|’,,t,s’; • Näyttää mitä ACCESS enginen kautta suoritetaan tietokannassa hakuja. • ’,,,d’ – kaikki SQL lauseet lokiin • ’,,t,’ – kaikki säikeistystiedot lokiin • ’,,t,s’ – säikeistystiedot ja ajankäytön tiedot lokiin.

  10. db2dbug Options db2dbug; Saadaan listattua lokiin se, mitä ’oikeasti’ tapahtuu kun ollaan yhteydessä db2:een. Options obs=1; on pienin arvo, jota voidaan käyttää db2dbug-option kanssa testitilanteessa koodin todellista luonnetta arvioitaessa.

  11. Resurssimittareita • Resursseja kannattaa mitata käyttämällä lokiin kirjautuvia tietoja. • Options Fullstimer; antaa enemmän tietoja lokiin. • SAS lokin kertoma tieto ei aina kerro kaikkia tarvittavia resursseja.

  12. Keinoja mitata resursseja • Numeerinen mittaus koodin tehokkuudelle vaatii hieman sorminäppäryyttä. • Hehtaarille osuvan arvion tehokkaasta tekniikasta voi tehdä helposti, mutta oikeaan osuvan ratkaisun löytämien ja ongelmakohtien syiden karsiminen voi olla työlästä. • Lähde liikkeelle MUTU periaatteesta!

  13. Windows-maailma • Windowsin task manager kertoo, kuinka paljon resursseja tarvitaan ohjelman suorituksen aikana. • Resurssien tarpeen arviointi on summittaista.

  14. Mainframe • Rsubmit • Portaali • Koodin ajaminen mainframen SASilla • Miten mitata PDF tiedoston luomiseen kuluva aika??! Seinäkellolla?

  15. Miten optimoida pdf-tiedoston luontia • PDF tiedosto vaatii enemmän resursseja, kuin HTML-tiedostoon kirjoittaminen. • Asettelullinen ODS LAYOUT-tekniikka vaatii enemmän resursseja, kuin asettelematon tekniikka. • Muisti voi loppua kesken dokumentin kirjoituksen, varsinkin kun käytetään sisällysluetteloa. • Optioiden käyttöä kannattaa välttää!

  16. Proc Sql • Proc Sql stimer; • Saadaan käyttöön resurssimittari jokaiselle proc sql:n lauseelle.

  17. ARM • SAS versiosta 8.2 lähtien on ollut käytössä ARM makrot. • ARM=Application Performance Measurement • Erilliseen lokitiedostoon kerätään suoritusaikoja.

  18. 9.2 Code Analyzer? • 9.2 SAS tuo mukanaan koodi analysjoijan, SCAPROC-proseduurin, joka tarjoaa lisätietoja • Lukemisesta ja kirjoittamisesta • Makromuuttujista • Stepeistä • Suoritusajasta

  19. CPU • CPU:n käyttöä on helppo ohjelmassa optimoida. • Proseduurit on optimoitu CPU:n käytön suhteen. • CPU:ta kuluu PDV:n arvojen käsittelyyn: • Numeeriset arvot puretaan aina 8 merkin mittaisiksi • Kompressoidut tiedot puretaan auki

  20. CPU • Hiperspace:n käyttö on mahdollista. • Hiperspace tarkoittaa High Performance Dataspacea. • Hiperspace on prosessorin sisäinen väliaikainen alue, ei kuitenkaan muistissa. • Hiperspace voi säästää runsaasti pienten tai keskikokoisten datojen käsittelyn vaatimia resursseja.

  21. CPU • Suorita vain tarvittavat lauseet. • Data-vaiheessa kannattaa sijoittaa poissulkevat if-ehdot mahdollisimman aikaiseen vaiheeseen. • Ehtolauseita kannattaa käyttää: • Tyypillisin havainto ensimmäiseen ehtoon • Jos ehdossa funktio, käytetään sitä kerran • If –then –else • Select –when –otherwise –end

  22. CPU • Vältä datan useaa läpikäyntiä: • Tee kaikki mahdollinen yhden data-vaiheen aikana. • Poista tuplat sort-proseduurissa. • Proc SQL voi huomaamatta käydä datan läpi useampaan kertaan. • Käytä data-vaihetta SQL:n sijaan (voi muuttua tulevaisuudessa). • Hash table?!

  23. Useampi CPU • Säikeistys on käytössä mainframella. • PC:llä säikeistys on käytettävissä, jos on useampia CPU:ita. • Säikeistyksen käytöstä näkyy tieto mm. siinä, että CPU aika on suurempi, kuin todellinen aika.

  24. I/O:n vähentäminen • Käsittele vain tarvittavat muuttujat ja havainnot: • Keep- ja Drop- optioita kannattaa käyttää lähdedatan määrittämisen yhteydessä. • Käytä Where-ehtoa. • Käytä indeksejä.

  25. Indeksien käyttö • On mahdollista lisätä tehokkuutta käyttämällä indeksejä. • Indeksien käytön kustannuksena on indeksitaulujen vaatima tila levyltä ja indeksien ylläpidon vaatimat resurssit. • Proc SQL ja Datasets ovat käytössä indeksien ylläpidossa.

  26. Indeksin käyttömahdollisuudet • Indeksejä käytetään silloin, kun niiden käyttö on tehokasta. • Where-ehdossa • viitattaessa yksinkertaisen indeksin arvoon • komposiitti-indekseissä viitattaessa ensimmäiseen avainarvoon

  27. Suosituksia Indekseille • Vähän indeksejä • Ei alle 3 sivuisille datoille • Indeksitaulun ylläpitokustannukset pitää ottaa huomioon • Valitse where-ehtoon sopivia indeksejä • Indeksi ei saa olla liian yleinen

  28. HYÖDYT Nopea pääsy pieniin osajoukkoihin Arvot palautuvat järjestyksessä Voi pakottaa yksikäsitteisyyteen Yhdistyskriteeri HAITAT Lisää CPU:n ja I/O:n tarvetta luotaessa ja ylläpidettäessä Kasvattaa CPU:ta dataa luettaessa Vie enemmän levytilaa Vie enemmän muistia indeksitauluille ja SAS C koodille käytön aikana Indeksin plussat ja miinukset

  29. Muistin käytön optimointia • SAS lataa tiedon yksi sivu kerrallaan bufferiin. • Bufferista tieto ladataan PDV:hen muistiin. • Muistissa pitää olla tilaa ohjelmalle, sorttaamiselle ja makromuuttujille. • Suorituksen aikana tarvitaan tila PDV:lle eli muuttujille ja mahdollisille array-rakenteille.

  30. Bufferin koon määrittäminen • Bufferin koko kannattaa määrittää aineiston kokoon suhteutettuna. • Liian suuri bufferin koko vie ylimääräisiä resursseja. • Liian pieni bufferi aiheuttaa sivutusta. • Normaalitilanteessa SAS haarukoi bufferin koon kohtuulliselle tasolle.

  31. Useamman bufferin käyttö • Dataa käytettäessä on mahdollista määrittää useampi bufferi käyttöön. • Systeemioptioissa voidaan määritellä bufferien lukumäärä.

  32. SASFILE-lause • Mikäli samaa dataa käytetään useamman proseduurin ja data-vaiheen aikana on järkevää pitää se muistissa buffereissa. • Datan voi avata tällöin SASFILE-lauseella ja pitää avoimena siihen asti, kunnes sen käsitteleminen on lopetettu. • Tekniikka säästää I/O operaatioita ja muistia.

  33. SASFILE-lause • libname mydata 'SAS-data-library'; • sasfile mydata.census.data open; data test1; set mydata.census; run; data test2; set mydata.census; run; proc summary data=mydata.census print; run; data mydata.census; modify mydata.census; . . (statements to modify data) . run; • sasfile mydata.census close;

  34. Muokkaus lähellä lähdettä • Datan käsittely voi tapahtua puhtaasti Mainframella tai osin Mainframella ja osin PC:llä. • Tulokset voidaan tuottaa kokonaan tai osittain Mainframella. • Käsittely voi olla interaktiivista, eräajoa tai stored proc suoritusta.

  35. proc sql; connect to db2 (ssid = testi); create table vaksopim20 as select * from connection to db2 ( select vsop, asno, apvm, asyy, ppvm, paaerakk, mtapa, vstila from kirjasto.sopim where ppvm> '01.01.2006' order by vsop ); quit; Antaa DB2:n tehdä se työ

  36. Sorttaus Mainframella • Mainframella käytetään alle 4M tiedostojen lajittelussa SAS:ia oletusarvoisesti. • Yli 4M tiedostojen lajittelemiseen käytetään Dfsort-ohjelmaa. • PC:llä käytetään SAS sorttausta.

  37. Sorttaus ja vaihtoehdot • Aineiston järjestämisen vaihtoehtona on indeksien käyttäminen. • Aineisto voidaan joissain proseduureissa ottaa käyttöön myös järjestämättömänä. • By-käsittely voi korvata aineiston järjestämisen ryhmitellyn aineiston ollessa kyseessä.

  38. Sorttaus resurssit • Aineiston järjestäminen vaatii resursseja sen mukaan • Voidaanko työ säikeistää • Havaintojen pituus • By-muuttujien lukumäärä • By-muuttujien pituudet • Ympäristö • Kirjasto, johon aineisto kirjoitetaan

  39. Tilan tarpeen pienentäminen • Tilan tarvetta on mahdollista vähentää compressoimalla aineisto tai vähentämällä numeeristen muuttujien pituutta. • Compressointi on näistä kahdesta tekniikasta suositeltavampi. • Tiivistystekniikoita on kaksi, toinen optimoitu merkkimuotoiselle datalle ja toinen numeeriselle datalle.

  40. Näkymät • Näkymän määritteleminen säästää tilantarvetta, mutta kasvattaa I/O:ta • Näkymä voidaan määritellä data-vaiheella tai luoda SQL:llä. • Näkymän avulla voidaan piilottaa monimutkaista ohjelmointilogiikkaa. • Näkymän luontikoodi voidaan kirjata ulos myös data-vaiheesta.

  41. Muita tekniikoita • Arrayn, Hash-tablen ja makromuuttujien käytöllä voidaan korvata datan lukemista ja yhdistämistä • Point-optio data-vaiheessa antaa mahdollisuuden päästä suoraan kiinni haluttuun havaintoon • Formaattimääritykset voidaan muokata tauluissa ja vähentää koodaustarvetta

  42. Tiivistelmä Teesit naulattavaksi työhuoneen oveen

  43. CPU:n käytön tehostaminen • Suorita vain tarvittavat lauseet • Vältä datan liian montaa läpikäyntiä • Lue ja kirjoita vain se data, jota tarvitset • Älä kompressoi SAS tauluja

  44. I/O:n vähentäminen • Käsittele vai tarvittavat muuttujat ja havainnot • Vähennä datan läpikäyntiä • Säädä BUFNO= ja BUFSIZE= optiot • Tee datasta SAS taulu, jos käytät sitä useammin kuin kerran • Käytä indeksejä

  45. Levytilan vähentäminen • Käytä vain tarvittavia muuttujia. • Lyhennä numeeristen muuttujien vaatimaa tilaa (ei ensisijainen menetelmä). • Kompressoi data.

  46. Muistin käytön vähentäminen • Käytä KEEP= ja DROP= optioita. • Käytä pientä sivukokoa. Tämä vähentää myös I/O:ta, jos aineistoa käydään läpi satunnaisessa järjestyksessä. • Käytä pientä BUFNO= arvoa kun data käydään läpi satunnaisesti. • Tee aineistosta pieni kopio, jossa on mukana vain tarvittavat muuttujat ja havainnot.

  47. Verkkoliikenne • Muokkaa data mahdollisimman lähellä sen alkuperäistä sijoituspaikkaa. • Siirrä osajoukkoa tai summattua dataa.

More Related