Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

SAS ohjelman suoritusajan mittaaminen ja koodin tehokkuuden parantaminen SAS Technical Clubin kokoontuminen 17.9.2009 Virpi Virtanen Tieto-Tapiola Oy.

Samankaltaiset esitykset


Esitys aiheesta: "SAS ohjelman suoritusajan mittaaminen ja koodin tehokkuuden parantaminen SAS Technical Clubin kokoontuminen 17.9.2009 Virpi Virtanen Tieto-Tapiola Oy."— Esityksen transkriptio:

1 SAS ohjelman suoritusajan mittaaminen ja koodin tehokkuuden parantaminen SAS Technical Clubin kokoontuminen 17.9.2009 Virpi Virtanen Tieto-Tapiola Oy

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

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 Nimi Tyyppi koko PDV Bufferi Data uusi; Set vanha; A = B; X = 3 * y; Run;

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 Indeksin plussat ja miinukset 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

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 Antaa DB2:n tehdä se työ 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;

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.


Lataa ppt "SAS ohjelman suoritusajan mittaaminen ja koodin tehokkuuden parantaminen SAS Technical Clubin kokoontuminen 17.9.2009 Virpi Virtanen Tieto-Tapiola Oy."

Samankaltaiset esitykset


Iklan oleh Google