sas ohjelman suoritusajan mittaaminen ja koodin tehokkuuden parantaminen

Download SAS ohjelman suoritusajan mittaaminen ja koodin tehokkuuden parantaminen

Post on 12-Feb-2016

46 views

Category:

Documents

0 download

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

  • SAS ohjelman suoritusajan mittaaminen ja koodin tehokkuuden parantaminenSAS Technical Clubin kokoontuminen 17.9.2009Virpi VirtanenTieto-Tapiola Oy

  • SisltKokemuksiaKoodin toimintaResurssimittareitaCPU kytn vhentminen I/O

    LevytilaMuistin kytn optimointiaVerkkoliikenteen vhentminen

  • Kokemuksia?Mik on omassa kokemuspiirisssi kriittisin tekij?Suoritukseen kulunut aika? (seinkello)CPU?Muistin mr?Levytilan mr?I/O operaatioiden mr?SAS taidot?

  • Tehokkuuden vaihtokaupatDatamrn pienentminen esimerkiksi compressoimalla yleens lis CPU:n kytt.I/O:n vhentminen kasvattaa muistin kytt.Tehokas ohjelma on hidas kirjoittaa ja se pit testata paremmin, kuin MUTU-tehokas ohjelma.

  • Koodin oikeellisuus ja toimintaSQL-optio noexec mritt, ett koodi knnetn, muttei suoritetaValidate-select-lauseen kanssa SQL:ss.Kun mritelln options obs=1 ksitelln vain yksi rivi dataa. Options obs=max palauttaa alkutilanteen.

  • Data-vaiheen kyttminenKoodi knnetn 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 ky lpi jokaisen lauseen.

  • Kaaviokuva Data-vaiheestaNimiTyyppikokoPDVBufferiBufferiData uusi;Set vanha;A = B;X = 3 * y;Run;

  • Vaihtoehtoja SQL:lle data yhdistyksessFormaattien kyttminenData-vaiheessa point-option kyttminen (Muista STOP-lause)Makromuuttujien kyttminenHash-tabletArray

  • SASTRACEOPTION SASTRACE=,,,d|,,t,|,,t,s;Nytt mit ACCESS enginen kautta suoritetaan tietokannassa hakuja.,,,d kaikki SQL lauseet lokiin,,t, kaikki sikeistystiedot lokiin,,t,s sikeistystiedot ja ajankytn tiedot lokiin.

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

  • ResurssimittareitaResursseja kannattaa mitata kyttmll lokiin kirjautuvia tietoja. Options Fullstimer; antaa enemmn tietoja lokiin.SAS lokin kertoma tieto ei aina kerro kaikkia tarvittavia resursseja.

  • Keinoja mitata resurssejaNumeerinen mittaus koodin tehokkuudelle vaatii hieman sorminppryytt. Hehtaarille osuvan arvion tehokkaasta tekniikasta voi tehd helposti, mutta oikeaan osuvan ratkaisun lytmien ja ongelmakohtien syiden karsiminen voi olla tylst. Lhde liikkeelle MUTU periaatteesta!

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

  • MainframeRsubmit PortaaliKoodin ajaminen mainframen SASilla

    Miten mitata PDF tiedoston luomiseen kuluva aika??! Seinkellolla?

  • Miten optimoida pdf-tiedoston luontiaPDF tiedosto vaatii enemmn resursseja, kuin HTML-tiedostoon kirjoittaminen.Asettelullinen ODS LAYOUT-tekniikka vaatii enemmn resursseja, kuin asettelematon tekniikka.Muisti voi loppua kesken dokumentin kirjoituksen, varsinkin kun kytetn sisllysluetteloa.Optioiden kytt kannattaa vltt!

  • Proc SqlProc Sql stimer;Saadaan kyttn resurssimittari jokaiselle proc sql:n lauseelle.

  • ARMSAS versiosta 8.2 lhtien on ollut kytss ARM makrot.ARM=Application Performance MeasurementErilliseen lokitiedostoon kertn suoritusaikoja.

  • 9.2 Code Analyzer?9.2 SAS tuo mukanaan koodi analysjoijan, SCAPROC-proseduurin, joka tarjoaa listietoja Lukemisesta ja kirjoittamisesta Makromuuttujista Stepeist Suoritusajasta

  • CPUCPU:n kytt on helppo ohjelmassa optimoida.Proseduurit on optimoitu CPU:n kytn suhteen.CPU:ta kuluu PDV:n arvojen ksittelyyn:Numeeriset arvot puretaan aina 8 merkin mittaisiksiKompressoidut tiedot puretaan auki

  • CPUHiperspace:n kytt on mahdollista.Hiperspace tarkoittaa High Performance Dataspacea.Hiperspace on prosessorin sisinen vliaikainen alue, ei kuitenkaan muistissa. Hiperspace voi sst runsaasti pienten tai keskikokoisten datojen ksittelyn vaatimia resursseja.

  • CPUSuorita vain tarvittavat lauseet.Data-vaiheessa kannattaa sijoittaa poissulkevat if-ehdot mahdollisimman aikaiseen vaiheeseen. Ehtolauseita kannattaa kytt: Tyypillisin havainto ensimmiseen ehtoonJos ehdossa funktio, kytetn sit kerranIf then else Select when otherwise end

  • CPUVlt datan useaa lpikynti:Tee kaikki mahdollinen yhden data-vaiheen aikana.Poista tuplat sort-proseduurissa.Proc SQL voi huomaamatta kyd datan lpi useampaan kertaan.Kyt data-vaihetta SQL:n sijaan (voi muuttua tulevaisuudessa).Hash table?!

  • Useampi CPUSikeistys on kytss mainframella. PC:ll sikeistys on kytettviss, jos on useampia CPU:ita.Sikeistyksen kytst nkyy tieto mm. siin, ett CPU aika on suurempi, kuin todellinen aika.

  • I/O:n vhentminenKsittele vain tarvittavat muuttujat ja havainnot:Keep- ja Drop- optioita kannattaa kytt lhdedatan mrittmisen yhteydess.Kyt Where-ehtoa.Kyt indeksej.

  • Indeksien kyttOn mahdollista list tehokkuutta kyttmll indeksej.Indeksien kytn kustannuksena on indeksitaulujen vaatima tila levylt ja indeksien yllpidon vaatimat resurssit.Proc SQL ja Datasets ovat kytss indeksien yllpidossa.

  • Indeksin kyttmahdollisuudetIndeksej kytetn silloin, kun niiden kytt on tehokasta.Where-ehdossa viitattaessa yksinkertaisen indeksin arvoonkomposiitti-indekseiss viitattaessa ensimmiseen avainarvoon

  • Suosituksia IndekseilleVhn indeksejEi alle 3 sivuisille datoilleIndeksitaulun yllpitokustannukset pit ottaa huomioonValitse where-ehtoon sopivia indeksejIndeksi ei saa olla liian yleinen

  • Indeksin plussat ja miinuksetHYDYTNopea psy pieniin osajoukkoihinArvot palautuvat jrjestyksessVoi pakottaa yksiksitteisyyteenYhdistyskriteeri HAITATLis CPU:n ja I/O:n tarvetta luotaessa ja yllpidettessKasvattaa CPU:ta dataa luettaessaVie enemmn levytilaaVie enemmn muistia indeksitauluille ja SAS C koodille kytn aikana

  • Muistin kytn optimointiaSAS 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.

  • Bufferin koon mrittminenBufferin koko kannattaa mritt aineiston kokoon suhteutettuna. Liian suuri bufferin koko vie ylimrisi resursseja.Liian pieni bufferi aiheuttaa sivutusta.Normaalitilanteessa SAS haarukoi bufferin koon kohtuulliselle tasolle.

  • Useamman bufferin kyttDataa kytettess on mahdollista mritt useampi bufferi kyttn.Systeemioptioissa voidaan mritell bufferien lukumr.

  • SASFILE-lauseMikli samaa dataa kytetn useamman proseduurin ja data-vaiheen aikana on jrkev pit se muistissa buffereissa.Datan voi avata tllin SASFILE-lauseella ja pit avoimena siihen asti, kunnes sen ksitteleminen on lopetettu. Tekniikka sst I/O operaatioita ja muistia.

  • SASFILE-lauselibname 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;

  • Muokkaus lhell lhdettDatan ksittely voi tapahtua puhtaasti Mainframella tai osin Mainframella ja osin PC:ll.Tulokset voidaan tuottaa kokonaan tai osittain Mainframella.Ksittely voi olla interaktiivista, erajoa tai stored proc suoritusta.

  • Antaa DB2:n tehd se typroc 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;

  • Sorttaus MainframellaMainframella kytetn alle 4M tiedostojen lajittelussa SAS:ia oletusarvoisesti. Yli 4M tiedostojen lajittelemiseen kytetn Dfsort-ohjelmaa.PC:ll kytetn SAS sorttausta.

  • Sorttaus ja vaihtoehdotAineiston jrjestmisen vaihtoehtona on indeksien kyttminen.Aineisto voidaan joissain proseduureissa ottaa kyttn mys jrjestmttmn.By-ksittely voi korvata aineiston jrjestmisen ryhmitellyn aineiston ollessa kyseess.

  • Sorttaus resurssitAineiston jrjestminen vaatii resursseja sen mukaanVoidaanko ty sikeistHavaintojen pituusBy-muuttujien lukumrBy-muuttujien pituudetYmpristKirjasto, johon aineisto kirjoitetaan

  • Tilan tarpeen pienentminenTilan tarvetta on mahdollista vhent compressoimalla aineisto tai vhentmll numeeristen muuttujien pituutta. Compressointi on nist kahdesta tekniikasta suositeltavampi. Tiivistystekniikoita on kaksi, toinen optimoitu merkkimuotoiselle datalle ja toinen numeeriselle datalle.

  • NkymtNkymn mritteleminen sst tilantarvetta, mutta kasvattaa I/O:taNkym voidaan mritell data-vaiheella tai luoda SQL:ll.Nkymn avulla voidaan piilottaa monimutkaista ohjelmointilogiikkaa.Nkymn luontikoodi voidaan kirjata ulos mys data-vaiheesta.

  • Muita tekniikoitaArrayn, Hash-tablen ja makromuuttujien kytll voidaan korvata datan lukemista ja yhdistmistPoint-optio data-vaiheessa antaa mahdollisuuden pst suoraan kiinni haluttuun havaintoonFormaattimritykset voidaan muokata tauluissa ja vhent koodaustarvetta

  • TiivistelmTeesit naulattavaksi tyhuoneen oveen

  • CPU:n kytn tehostaminenSuorita vain tarvittavat lauseetVlt datan liian mont