sas ohjelman suoritusajan mittaaminen ja koodin tehokkuuden parantaminen n.
Skip this Video
Loading SlideShow in 5 Seconds..
SAS ohjelman suoritusajan mittaaminen ja koodin tehokkuuden parantaminen PowerPoint Presentation
Download Presentation
SAS ohjelman suoritusajan mittaaminen ja koodin tehokkuuden parantaminen

play fullscreen
1 / 47
Download Presentation

SAS ohjelman suoritusajan mittaaminen ja koodin tehokkuuden parantaminen - PowerPoint PPT Presentation

jered
72 Views
Download Presentation

SAS ohjelman suoritusajan mittaaminen ja koodin tehokkuuden parantaminen

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