Tietokannan kyselyoptimointi moniydinprosessorilla
|
|
- Lauri Lehtinen
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 hyväksymispäivä arvosana arvostelija Tietokannan kyselyoptimointi moniydinprosessorilla Mikko Kuusinen Helsinki HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
2 HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta/Osasto Fakultet/Sektion Faculty/Section Laitos Institution Department Matemaattis-luonnontieteellinen tiedekunta Tekijä Författare Author Tietojenkäsittelytieteen laitos Mikko Kuusinen Työn nimi Arbetets titel Title Tietokannan kyselyoptimointi moniydinprosessorilla Oppiaine Läroämne Subject Tietojenkäsittelytiede Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages 15 sivua Seminaarityö Tiivistelmä Referat Abstract Työn tavoitteena on selvittää kuinka moniydinprosessoreilla saadaan hyviä tuloksia tietokantakyselyjä suoritettaessa. Tuloksina kolmea erilaista ratkaisua vertailtaessa saadaan, että nopeushyöty on suuri monissa hidastavissa tekijöissä, kuten välimuistin hukkaiskuissa (cache miss ) ja prosessorin pysähtymisissä (processor stall), mutta lopulliset hyödyt kyselyjen suorituksissa ovat pienemmät. Työssä myös selvitetään hieman sitä, mihin aika kuluu tietokantahakua prosessorilla laskettaessa. ACM Computing Classification System (CSS): D.4.1[Process Management] H.2 [Database Management] Avainsanat Nyckelord Keywords Tietokanta, moniydin, säie Säilytyspaikka Förvaringställe Where deposite Muuta
3 ii Sisältö 1 Johdanto 1 2 Prosessoria hidastavat tekijät Mihin aika kuluu Nopeutta useasta ytimestä Säikeet Apuydin ASYNC -operaattori Tulosten läpikäynti Yhteenveto 13 Lähteet 14
4 1 1 Johdanto Tietokantojen koon kasvaessa niiden vaatimat resurssit kasvavat samalla. Jotta tiedon määrä olisi hallittavissa ja tiedonhaku tästä määrästä olisi edelleen nopeaa, joudutaan laitteistoa ja ohjelmistoja päivittämään. Siinä missä ohjelmistojen algoritmeja ja toimintaperiaatteita voidaan kehittää yhä paremmaksi, niin voidaan kehittää myös laitteistoa. Siitä lähtien, kun laitteisto on sallinut useamman prosessorin toimia järjestelmässä, on sitä yritetty hyödyntää kaikin mahdollisin tavoin. Tänä päivänä usean prosessorin toiminta samalla alustalla on suurelta osin vaihtunut useamman ytimen sisältäviin prosessoreihin. Ratkaisut eroavat toisistaan muun muassa siten, että moniydinprosessoreilla on yhteinen välimuisti verrattuna usean yksiytimisen prosessorin toimintaan, joilla kaikilla on oma välimuistinsa. Nykyään moniydinprosessoreja löytyy lähes jokaisesta kodista ja työpaikalta, joten on itsestään selvää, että niitä täytyy myös pystyä hyödyntämään kunnolla. Tietokantojen yhteydessä moniydinprosessorien tuomaa hyötyä on selvitetty jo vähintään kymmenen vuoden ajan. Ensimmäinen mielestäni työni aiheeseen hyvin kuuluva julkaisu on Ailamakin ja kumppaneiden [ADH99] tutkimus siitä, mihin aika modernilla prosessorilla kuluu, kun prosessorilla ajetaan tietokannanhallintajärjestelmää. Tulokset ovat varmasti vielä vertailtavissa nykypäivän uusimpiin moniydinprosessoreihin, joten julkaisu on kymmenen vuoden iästään vielä hyvin paikkansa pitävä. Moniydinprosessoreita alettiin siis valjastaa tietokantojen käyttöön jo useita vuosia sitten. Nykyään moniydin prosessoreiden lisäksi on olemassa prosessoreita, jotka kykenevät ajamaan useaa säiettä yhtä aikaa. Myös tätä ominaisuutta on tutkittu tietokannanhallintajärjestelmien nopeuttamiseksi. Zhoun ja kumppanien [ZCR05] julkaisu tutkii kuinka Pentium 4 prosessorin samanaikainen säikeiden ajo voisi parantaa tietokantajärjestelmän nopeutta. Todennäköisesti tietokantojen suorituskykyä parantavia moniydinprosessoreita käsittelen kahden eri julkaisun muodossa. Kumpikin julkaisuista on viime vuodelta, joten niiden käsittelemät aiheet ja menetelmät ovat lähes uusinta, mitä alalla on julkaistu. Ensimmäisenä esittelen Papadopulosin ja kumppaneiden Apuydin (HelperCore DB ) ratkaisun [PST08]. Apuytimen ideana on, että ydin jolla ei ole muuta tekemistä voi pyytää välimuistiin muiden ytimien lähitulevaisuudessa tarvitsemaa tietoa. Toisena esittelen Ackerin ja kumppaneiden ratkaisun [ARB08], jolle he eivät ole antaneet mitään tiettyä
5 2 nimeä. Kutsun ratkaisua kuitenkin tästä lähtien nimellä ASYNC -operaattori (ASYNC operator), koska tekijät mallintavat rinnakkaisuutta uudella ASYNC operaattorilla kyselysuunnitelmassa. Ottaen huomioon julkaisujen erilaiset lähestymistavat tietokannan suorituskyvyn parantamiseksi, on mielenkiintoista nähdä mitkä lopulliset tulokset kummasakin tapauksessa ovat. Työssä käyn ensin läpi luvussa 2, mikä vie aikaa nykyisissä prosessoreissa tietokantojen hakuja laskettaessa. Luvussa 3 käyn läpi kolme tapaa, joilla moniydinprosessoreiden on tarkoitus parantaa suorituskykyä ja näiden tapojen testauksien tulokset. 2 Prosessoria hidastavat tekijät Riippuen sitä minkälaista ohjelmaa prosessorilla ajetaan sitä kuormitetaan eri lailla. Oli kyseessä sitten peli tai tietokannanhallintajärjestelmä, niin aina löytyy pullonkaula jostain järjestelmän arkkitehtuurista. Käyn tässä luvussa läpi syitä miksi tietokantakyselyt vaativat niin paljon järjestelmältä ja kuinka aika jakautuu prosessorilla tietokantahakua laskettaessa. 2.1 Mihin aika kuluu Prosessorit ovat kehittyneet viime vuosina suuresti ja kymmenen vuotta sitten ei tavallisella käyttäjällä ollut mahdollista saada sellaista laskentatehoa, mikä löytyy nykyään melkein jokaisesta tavallisesta pöytäkoneesta. Kuitenkin laitteistosta on aina yritetty ottaa irti kaikki mahdollinen hyöty. Näin oli myös kymmenen vuotta sitten kun Ailamaki ja kumppanit [ADH99] alkoivat tutkia mihinkä aika kuluu prosessorilla, kun tietokannanhallintajärjestelmä saa suoritettavakseen kyselyn. Heidän alustanaan toimi Pentium 2 prosessori ja käyttöjärjestelmänä Windows NT. Aikaisempien tutkimusten perusteella kirjoittajat olettavat, että suurin syy mikä aiheuttaa hidastumista on laskennan pysähtyminen jostain syystä. Prosessorilla on kuitenkin seuraavanlaisia operaatioita, joita se voi suorittaa sillä välin kun se odottaa, että laskenta voi jatkua: Ei-eristävä välimuisti, eli muita muistipyyntöjä voidaan suorittaa samalla kun yhtä muistipyyntöä odotetaan. Sekalaisen järjestyksen salliva suoritus, eli jos käsky x:n suoritus pysähtyy voidaan siirtyä suorittamaan käskyä y, jos y:n tulos ei riipu x:stä.
6 Haarautuvuuden ennustus, eli algoritmi yrittää arvata mikä olisi seuraava predikaatti ja laskee sen mukaan tuloksen [ADH99]. 3 Ailamaki ja kumppanit esittävät seuraavan kaavan kyselyyn kuluvalle ajalle T Q T Q =T C T M T B T R T OVL. Kaavassa T C on laskutoimitukseen kuluva hyödyllinen laskenta-aika, T M on aika, joka kuluu pysähdyksiin muistipyynnön takia, T B on aika, joka kuluu väärin menneisiin haarautuvuuden ennustuksiin, T R on aika, joka kuluu resurssien puutteesta johtuviin pysähdyksiin, ja T OVL on aika, joka vähennetään päällekkäin tapahtuneiden pysähdysten takia. Näistä muistipyyntöihin kuluva aika jaetaan julkaisussa vielä useaan pienempään osaan, mitkä voidaan jakaa muun muassa tason 1 ja 2 välimuistin harhaiskuihin (T L1D ja T L2D ). Myös resurssien puute voi johtua monesta syystä. Ailamaki ja kumppanit jakavat resurssien puutteen kolmeen osaan: funktionaalista yksikköä ei ole vapaana, käskyjen välillä on riippuvuuksia ja alusta riippuvaiset ominaisuudet [ADH99]. Kuluvan ajan testaukseen Ailamaki ja kumppanit [ADH99] käyttivät tietokantaa, jonka relaatiossa on 1,2 miljoonaa sadan tavun tietuetta. Testiajot suoritettiin peräkkäisellä välin valinnalla, indeksoidulla välin valinnalla ja peräkkäisellä liitoksella. Testit suoritettiin 400Mhz Pentium 2 prosessorilla, jolla oli tason 1 välimuistia 16KB tiedolle ja käskyille kummallekin ja tason 2 välimuistia 512KB. Vertailukohtana voin sanoa, että nykyaikaisesta Core Duo prosessorista löytyy kummallekin prosessorille 32KB tason 1 välimuistia sekä tiedolle että käskyille, 2MB tason 2 välimuistia ja kellotaajuus on yli 2Ghz. Testit suoritettiin neljälle eri tietokannanhallintajärjestelmälle, joidenka nimet
7 4 esitettiin julkaisussa vain A, B, C ja D kirjaimilla. Kuvassa 1. on testien tulokset jaettuna neljään komponenttiin T C, T M, T B ja T R. Laskenta-aika T C on jokaisessa alle puolet kyselyn suoritusajasta, eli prosessori käyttää yli puolet ajasta pysähtyneessä tilassa. Ailamaki ja kumppanit [ADH99] olivat kymmenen vuotta sitten sitä mieltä, että tilanne ei tule tulevaisuudessakaan tästä parantumaan, sillä vaikka prosessorien nopeus kasvaa ei muistin nopeus kasva samalla tahdilla. He olivatkin oikeassa, sillä uudemmissa artikkeleissa nimen omaan muistista haku mainitaan edelleen pahimpana pullonkaulana tietokantojen suorituskyvyssä [PST08, ZCR05]. Kuvasta myös huomataan, että ajan jakautuminen riippuu enemmän suoritettavasta kyselystä, kuin tietokannanhallintajärjestelmästä. Julkaisussa todetaan lisäksi, että eri tietokannanhallintajärjestelmien välillä on erilaisia optimointeja alusta kohtaisesti, mutta tietyn asian optimointi yleensä vahvistaa jonkin muun alueen pullonkaulaa. Täten optimoinnissa pitäisi aina keskittyä jokaiseen kolmeen hidastavaan tekijään. Kaikkiaan julkaisu vaikutti asialliselta ja siihen viitataan yhä paljon iästä huolimatta. Olisi erittäin mielenkiintoista mikäli testit saataisiin toteutettua uudelleen nykypäivän prosessorilla. Itse kuvittelisin, että muistiviive on nykyään vielä suuremaassa osassa, koska prosessorien nopeudet ovat kasvaneet hurjasti verrattuna muistin ja kiintolevyn nopeuksiin [ADH99]. 3 Nopeutta useasta ytimestä Koska yhden prosessorin suorituskykyä voidaan nostaa nykyisellään huomattavasti hitaammin kuin vielä vuotta sitten, on siis vain luonnollista, että prosessorien määrää on lisätty. Suorituskyvyn nostaminen ei kuitenkaan ole helppoa ohjelmistoissa, sillä usean ytimen käyttö vaatii ohjelmistollisia muutoksia ja aina useampaa ydintä ei yksinkertaisesti voi tehtävässä hyödyntää. Esittelen luvussa kolme eri tapaa, joilla tietokannanhallintajärjestelmien nopeutta yritetään parantaa. 3.1 Säikeet Otin Zhoun ja kumppaneiden julkaisun [ZCR05] tietokannanhallintajärjestelmien nopeuttamisesta yhtäaikaisella monisäikeisyydellä mukaan, koska mielestäni on mielenkiintoista nähdä kuinka pelkästään usean säikeen suorittaminen yhtä aikaa nopeuttaa, verrattuna kokonaan toisen prosessorin lisäämiseen. Monisäikeisyys eroaa toisen prosessorin lisäämisestä siten, että eri säikeet jakavat monia resursseja, mukaan
8 5 lukien prosessorin muistikaistan ja välimuistit. Tämän takia usean säikeen ajaminen yhtä aikaa on olennaisesti hitaampi kuin fyysisen prosessorin lisääminen. Zhou ja kumppanit tutkivat kolmea eri tapaa käyttää monisäikeisyyttä hyväksi. Ensimmäinen ja yksinkertaisin näistä on ajatella monisäikeisyyteen kykenevää prosessoria, siten kuin säikeitä ajaisi kokonaan oma fyysinen prosessori. Tämä ratkaisu vaatii tekijöiden mukaan vähiten vaivaa koodin muuttamisessa tietokannanhallintajärjestelmässä, jota yleensä voidaan ajaa moniydinprosessoreilla. Ratkaisu ei kuitenkaan ota huomioon resurssien jakamista loogisten prosessorien välillä. Toinen vaihtoehto on toteuttaa jokainen tietokantaoperaatio monisäikeisyyden vaatimalla tavalla. Tekijät kutsuvat tätä nimellä Kaksoissäikeistys (Bi-threaded). Ratkaisun haaste on päättää, kuinka jakaa työmäärä ja kuinka yhdistää tulokset eri säikeiltä. Kolmas ja samalla tekijöiden ehdottama uusi tapa on käyttää yhtä säiettä apuna tiedon aggressiiviseen ennalta hakuun. Jos tiedon ennalta haku tapahtuu tekijöiden mukaan optimaalisesti, niin pääsäie löytää tarvitsemansa tiedon välimuistista useammin. Lähes samaa ideaa, mutta kokonaan omalla ytimellä, käyttävät Papadopoulos ja kumppanit Apuydin ratkaisullaan aliluvussa 3.2 [PST08, ZCR05]. Zhoun ja kumppanien [ZCR05] ehdottamassa uudessa ratkaisussa he määrittävät Etukäteistyöskentelykokoelma (Work-ahead-set) tietorakenteen, mikä on jaettu pää- ja apusäikeen välillä, kuten kuvasta 2. ilmenee. Pääsäie syöttää tietorakenteeseen muistiviittauksia tiedosta, jota se tulee tarvitsemaan lähitulevaisuudessa, ja apusäie noutaa muistiviittausten mukaan tietoa välimuistiin. Apusäie siis vain lukee tietorakenteesta, joten tiedon oikeellisuus pääsäikeelle on taattu. Tekijät ovat sitä mieltä, että lisääntyvä koodin monimutkaisuus on kohtuullinen ja vaivan arvoinen, kun paremmat tulokset näkyvät mittauksissa. Etukäteistyöskentelykokoelma koostuu pareista (p,s), jossa p on muistiosoite ja s on tila, mikä ilmoittaa pääsäikeen laskennan tilan muistiosoitteessa. Koska tekijät halusivat tietorakenteesta mahdollisimman tehokkaan ja yksinkertaisen on se tietyn mittainen kehätaulukko. Järjestelmän suorituskykyyn vaikuttaa neljä eri asetusta. Tietorakenteen alkioihin voi olla useita tai vain yksi osoitin, tietorakenteen kokoa voi vaihtaa, apusäie voi liikkua tietorakenteessa joko eteenpäin tai taaksepäin ja apusäie voi jäädä tai olla jäämättä kiertosilmukkaan (spin-loop), kun se huomaa saman muistiosoitteen annetussa alkiossa. Mielestäni on kahtiajakoinen asia, että ratkaisussa on monta muuttujaa, joita voidaan vaihtaa. Muuttujille voidaan löytää hyvin toimivat oikeat arvot, mutta niiden löytyminen saattaa kestää. Mikäli arvoja ei säädetä voi hyöty jäädä pienek-
9 6 si tai pahimmassa tapauksessa tietokannan suorituskyky saattaa huonontua [ZCR05]. 3.2 Apuydin Apuydin lähestymistapa, kuten Papadopoulos ja kumppanit [PST08] kutsuvat omaa ratkaisuaan, perustuu siihen, että kaikilla ytimillä ei suoriteta samaa koodia. Ratkaisussa osa ytimistä suorittaa koodia, jonka suoritus epäsuorasti hyödyttää ohjelmaa. Toteutus keskittyy ratkaisemaan yhden pahimmista ongelmista tietokantaohjelmissa, eli muistiviiveen, suorittamalla tehokasta tiedon esinoutoa. Esinoudon suorittaa apuydin ja tiedon käyttää jokin muu ydin. Ainoa vaatimus laitteistotasolla on, että kumpikin ydin jakaa jonkin tason muistihierarkiasta. Apuydin vaatii tekijöiden mukaan minimaalisia muutoksia alkuperäiseen tietokannanhallintajärjestelmän koodiin ja heidän mukaansa se toimii kaikilla moniydinratkaisuilla. He kirjoittavat, että tehokas tapaa käyttää rinnakkaisuutta tietokannoissa on antaa kyselyt eri prosessorien suoritettavaksi. Tätä käytetäänkin muun muassa PostgreSQL 1 ja MySQL 2 järjestelmissä ja kutsutaan kyselyväliseksi (inter-query) samanaikaisuudeksi. Nämä järjestelmät eivät kuitenkaan tue kyselysisäistä (intra-query) samanaikaisuutta eli kyselyn jakoa useiksi samanaikaisiksi tehtäviksi. Kyselyvälisestä samanaikaisuudesta voi olla hyötyä tiettyyn pisteeseen asti kuten Papadopoulos ja kumppanit esittävät. He tekivät simuloidun kokeen jossa kahdeksalla ytimellä ajettiin testi siitä, kuinka monta ydintä on kannattavaa olla käytössä
10 7 Kokeen tuloksena oli, että kuuden samanaikaisen ytimen käytön jälkeen muistihauista johtuva viive oli niin suuri, että osa prosessoreista joutui vain odottamaan, eikä voinut suorittaa laskentaa. Tässä siis kaksi yli jäävää ydintä olisivat hyvin voineet olla kirjoittajien mukaan Apuytimiä [PST08]. Ollakseen tehokas Papadopoulos ja kumppanit esittivät Apuytimelle seuraavat kriteerit: 1) sen täytyy olla yksinkertainen liittää nykyisin tietokannanhallintajärjestelmiin, 2) sen täytyy hakea tieto muistista ennen kuin tietoa tarvitaan, mutta vasta niin myöhään, ettei tieto katoa ennen käyttöä ja 3) vaikka Apuytimen ja tietokantasäikeiden välille tarvitaan synkronointi, niin siitä täytyy seurata vain vähän kustannuksia. Tekijöiden mukaan kodat 1) ja 3) täyttyvät, koska Apuydin noutaa muistista muistin puskurin kokoisia osia ja työsäikeen tarvitsee kommunikoida Apuytimen kanssa vain seuraavaksi tarvittavasta lohkosta. Kohta 2) täyttyy tapauskohtaisesti, sillä etukäteen haettavien lohkojen määrä riippuu tilanteesta. Tekijät kirjoittavat, että ihannetilanteessa noudettavien lohkojen määrä riippuisi suoritettavasta kyselystä. Itse en aivan ymmärrä miksi nimen omaan näillä ratkaisuilla liittäminen nykyisiin järjestelmiin on vaivatonta. Tekijät myös myöntävät kohdasta 2), että he itsekään eivät tiedä mikä arvo lohkojen noudolle on sopiva ja lupaavat palata asiaan. Tämä tuo mielestäni suurta epävarmuutta ratkaisun lopullisesta suorituskyvystä [PST08]. Kuvassa 3. on pseudokoodi työsäikeelle ja Apuytimelle. Apuytimen puolella on yksinkertainen silmukka, joka tarkistaa ilmoitusta joltain työsäikeeltä. Esimerkiksi jos jokin työsäie pyytää uutta lohkoa, jota ei ole esinoudettu, niin apuydin alkaa noutaa tietolohkoja. Sen tehtävä on noutaa d kappaletta lohkoja alkaen pyydetystä lohkosta. Kuvan 3.
11 8 ratkaisussa on käytetty aktiivista odotusta (busy-wait) synkronoinnissa, koska tekijöiden mukaan se vähentää työsäikeen ylimääräistä työtä ja Apuytimellä on kuitenkin oma prosessori käytössä, joten aika ei ole muusta laskennasta pois. Ratkaisu ei ole kaikkein paras esimerkiksi energian säästön kannalta, minkä tekijät itsekin myöntävät. On mielestäni lisäksi kyseenalaista halutaanko prosessorin vain pyörittävän tyhjäkäynnillä silmukkaa, jos hyödyllistäkin työtä olisi mahdollista tehdä [PST08]. 3.3 ASYNC -operaattori Ackerin ja kumppaneiden [ARB08] lähestymistapa tiivistää epäsynkronisen relaatiokyselyn suorituksen läpinäkyväksi relaatio-operaattoriksi. Kaikki toteutus on piilotettuna tämän operaattorin sisälle ja sen käyttö asettaa tekijöiden mukaan minimaalisesti vaatimuksia toisille relaatio-operaattoreille. Operaattori tukee aikaisemmista ratkaisuista poiketen luonnostaan kyselysisäistä samanaikaisuutta ja ratkaisee järjestyksen säilyttämisen ongelman. Tekijät tiivistävät samanaikaisuuden toteutuksen kaksivaiheiseen kyselyn suunnittelun optimointiin. Ensimmäisessä vaiheessa optimointia suunnitellaan kuinka kysely pitäisi suorittaa samanaikaisena. Toinen vaihe dynaamisesti jalostaa kyselysuunnitelman suoritusvaiheessa uudelleen tasapainottamalla suorittavat säikeet tasapainoon, joka takaa parhaan mahdollisen samanaikaisuuden rajatuille resursseille. Tekijät jakavat resurssit, jotka ratkaisu ottaa huomioon, muuan muassa seuraaviksi: väylä tai prosessori riippuvuus, monikon koko, monikkojen määrä sivua kohti ja tehtävään arviolta kuluva aika. Hitaita tehtäviä nopeutetaan määräämällä niille useampia säikeitä ja nopeat tehtävät voivat samalla odottaa sisäänmenopuskureissa [ARB08]. Tekijät mallintavat samanaikaisuuden uutena ASYNC operaattorina kyselynsuunnittelussa. Tämä operaattori on abstraktio säikeiden rajoista operaattoripuussa. Toisin sanoen tieto, joka kulkee ASYNC solmun läpi kulkeutuu säikeeltä toiselle. Solmu voi olla minkä tahansa kahden operaattorin välissä peräkkäisessä kyselynsuunnittelussa. Monikoiden vaihto säikeiden välillä tapahtuu puskurin välityksellä, joka on kapseloitu ja ohjattu jokaisella ASYNC operaattorilla. Puskuriin pääsy on synkronoitu ja se muistuttaa klassista tuottajat-kuluttajat ongelmaa. Kyselyvälinen samanaikaisuus mallinnetaan yksinkertaisesti lisäämällä ASYNC solmuja operaattoripuuhun. Kuvassa 4. tämä on kohta (c). Kyselysisäinen samanaikaisuus mallinnetaan tunnistamalla operaattoripuun sisällä kanavan osia, jotka ovat sopivia samanaikaiseen suoritukseen.
12 9 Kuinka tunnistaminen oikein tapahtuu jää julkaisussa selvittämättä. Kuvassa 4. on esimerkki kyselysisäisestä toteutuksesta (d). Tässä alempi ASYNC solmu toimii tiedon jakajana eli jakaa sisään tulevan tiedon kanavien sisäänmenopuskureihin ja ylempi solmu yhdistää tulokset kanavien ulostulopuskureista [ARB08]. Julkaisussa on todella paljon asiaa sen takia, että kaikki käydään hyvin perusteellisesti läpi. Itse sain sellaisen kuvan, että ASYNC operaattoria voidaan ja pitääkin säätää kokoajan ajon aikana riippuen lähes kaikesta mahdollisesta, kuten operaattorin asetuksista ja suoritettavasta kyselystä. Ratkaisu tuntuu operaattorin sisällä lopulta hyvin monimutkaiselta ja tekijät toteavatkin muutamassa kohtaa, että he olettavat, että tietyt asiat ovat tai menevät aina optimaalisesti. 3.4 Tulosten läpikäynti Zhoun ja kumppanien [ZCR05] julkaisun tuloksissa otettiin huomioon vain tason 2 välimuistin harhaosumat ja prosessorin kanavan tyhjennys, mikä saattaa johtua esimerkiksi väärässä järjestyksessä muistista lukemisen takia. Nämä kaksi valittiin siksi, koska ne olivat heidän testiensä mukaan selkeästi suurimmat hidastavat tekijät. Kuvassa 5. ja 6. on vasemmalla ensin yhden ja kahden säikeen testien tulokset. Kolmantena ja neljäntenä tulevat säikeet joihin on lisätty etukäteistyöskentelykokoelman vaatima lavastettu operaattori (staged operator). Viidentenä ja kuudentena ovat Kaksoissäikeistykset, jotka osittavat sisään tulevan tiedon ja laskevat sen lomittain. Lopulta viimeisenä kuvassa 5. on Etukäteistyöskentelykokoelman tulos ja kuvassa 6. sekä pääsäikeen että apusäikeen
13 10 tulokset [ZCR05]. Mielestäni kuvasta 5. voi nähdä, että suoritusteho kasvaa huomattavasti kun järjestelmään lisätään yksi säie lisää. Mitään valtavaa hyötyä ei kuitenkaan Zhoun ja kumppanien [ZCR05] Etukäteistyöskentelykokoelmasta ole tähän verrattuna. Tekijät laskivat, että kahteen säikeeseen verrattuna heidän ratkaisunsa kävi CSB+ puun tapauksessa parhaimmillaan 10% ja liitoksessa 4,3% enemmän monikkoja läpi sekunnissa. Kuvan 6. tuloksista nähdään kuitenkin, että tekijöiden perusidea Etukäteistyöskentelykokoelmassa toimii todella hyvin. Pääsäikeen välimuistin hukkaiskut ovat selkeästi vähemmät kuin minkään muun. Mielestäni tekijöiden ratkaisu toimii siis nimen oman niin kuin he ajattelivatkin: pääsäie laskee ja apusäie suorittaa muistista haun. Harmi sinänsä, että tästä ratkaisusta ei ole olennaisesti parempaa hyötyä verrattuna kahteen säikeen perustoteutukseen. Luulen myös, että on helpompaa toteuttaa tietokannanhal-
14 lintajärjestelmä tukemaan kahta säiettä perinteisesti, kuin käyttää toteutuksessa Etukäteistyöskentelykokoelmaa [ZCR05]. 11 Papadopoulos ja kumppanit [PST08] ovat samalla linjalla Zhoun ja kumppanien [ZCR05] kanssa siinä, että tuloksissa otetaan huomioon vain kaksi eniten vaikuttavaa tekijää. He pitävät eniten suorituskykyyn vaikuttavina tekijöinä tason 2 välimuistin harhaosumia ja prosessorin pysähtyneisyyttä. Kuvassa 7. on esillä kohdassa (a) kuinka paljon Apuytimen käyttö vähentää prosessorin pysähdyksiä tietyillä kyselyillä. 22 kyselystä pysähdykset vähenivät yli 40% kahdeksassa tapauksessa ja 19 tapauksessa vähennys oli yli 20%. Kohdassa (b) on tason 2 harhaiskujen väheneminen käytettäessä Apuydintä. Kuvasta näkee, että 21 tapauksessa harhaiskut vähenivät yli 60%. Tekijöiden mielestä on tärkeä mainita, että heidän testeissä käyttämänsä Core Duo prosessori sisältää laitteistotason ennalta noudon. Tästä huolimatta heidän mukaansa Apuydin auttaa tämän ominaisuuden päälle poistaen vielä puolet harhaiskujen määrästä. Teoreettisella tasolla Apuydin mielestäni on erittäin vaikuttava ja lukujen mukaan nopeutus kyselyjä suoritettaessa pitäisi olla huomattava [PST08]. Kuvassa 8. on Papadopouloksen ja kumppanien [PST08] tulokset Apuytimelle suoritettaessa 22 kyselyä, samat kuin kuvassa 7., eri kokoisille tietokannoille ja laskettaessa kuinka paljon suoritusaika lyhenee. Kyselystä riippuen huomataan, että parhaimmillaan hyöty on noin 20% verrattuna pelkkään kahden prosessoin käyttöön, mutta yleensä nopeushyöty jää viiden ja vajaan 15 prosentin väliin. Tuloksista voi lukea myös sen, että hyöty ei skaalaudu lineaarisesti tietokannan koon kasvaessa. 50MB kokoiseen tietokantaan asti hyöty näyttää kasvavan, mutta 100MB tietokannalla hyöty on yleensä joko
15 hieman parempi tai huonompi kuin 50MB tietokannalla. Mielestäni Apuytimen käytöstä on selkeästi hyötyä tietokantojen suorituskykyyn, vaikkei nopeutus aina olekaan suuri. 12 Julkaisussa ei myöskään tullut ilmi mitään miksi ratkaisun liittäminen tietokannanhallintajärjestelmään olisi hankalaa ja testit suoritettiinkin Apuydin liitettynä PostgreSQL tietokantaan. Vertailtaessa Apuydintä Etukäteistyöskentelykokoelmaan voin sanoa, että idea on kummassakin oikea, mutta Etukäteistyöskentelykokoelman toteutus säikeille ei ole yhtä hyödyllinen. Sen hyödyllisyys kärsii, koska kahden säikeen samanaikainen ajaminen ei vain korvaa kokonaan toista prosessoria. On harmi, ettei Apuytimen testituloksissa ollut mukana yhden prosessorin ratkaisua, sillä tuloksia olisi ollut mielenkiintoista vertailla [PST08, ZCR05]. ASYNC -operaattorin testaukseen Acker ja kumppanit [ARB08] käyttivät 387 kyselyn kyselysarjaa. Kuvassa 9. ovat näille kyselyille suoritettujen testiajojen tulokset. Lyhyiden kyselyjen sarjassa (1-219) kyselyt kestävät alta 10ms, joten mahdollinen hyöty samanaikaisuudesta on tekijöiden mukaan olematon. Enin aika tässä sarjassa kuluu asiakkaan ja palvelijan välisessä kommunikaatiossa, eikä suorittimen nopeuksista ole siten hyötyä. Keskipitkät kyselyt ( ) kestävät ms ja niissä osassa ASYNC -operaattorista on hyötyä ja osassa taas ei. Tekijöiden mukaa ASYNC -operaattorista aiheutuvat kustannukset ovat näille kyselyille kolmen prosentin luokkaa, mikä toisaalta
16 13 tarkoittaa sitä, ettei hyötykään ole kovin suuri. Pitkissä kyselyissä ( ), jotka kestävät yli 600ms hyöty taas on selkeästi havaittavissa. Tekijöiden mukaan jopa niin hyvin, että suoritus on lähellä arvioitua optimi hyötyä. Kaiken kaikkiaan samanaikaisuus vähentää kokonaisuudessa kuluvaa aikaa alle 70%. Siinä missä pelkällä kahden suorittimen käytöllä tekijät saivat kyselyjen suoritusajaksi 226,5 sekuntia, niin ASYNC -operaattorilla aikaa kului 156 sekuntia [ARB08]. Mielestäni ASYNC -operaattorin tulokset ovat varsinkin pitempään kestävillä kyselyillä huomattavat. Toisaalta taas operaattorista aiheutuva lisäys laskentaan saattaa aiheuttaa suoritusajan pitenemisen lyhyemmille kyselyille. Ikävästi kuvat tuloksista ovat pienenpuoleisia ja niihin on laitettu mielestäni liikaa asiaa ja liian vähän selittäviä tekijöitä, joten tulosten tulkinta vaikeutuu. Esimerkiksi kaikkien muiden tässä käsittelemieni artikkelien taulukot ja testitulokset ovat huomattavasti helpommin tulkittavissa. Testitulosten valossa, niin kuin niitä parhaiten voi tulkita, pidän kuitenkin ASYNC -operaattorin käyttöä hyödyllisenä vaihtoehtona. Varsinkin jos sen liittäminen järjestelmään on yhtä vaivatonta, kuin tekijät itse antavat ymmärtää. 4 Yhteenveto Kävin työssä ensin läpi mihin aika prosessorilla kuluu tietokantakyselyä suoritettaessa. Ailamakin ja kumppaneiden [ADH99] julkaisusta kävi varsin selkeästi selville, kuinka muistista haut ja resurssien puute ovat suurin hidaste kyselyn tuloksen valmistumiselle. Mielestäni oli jopa hälyttävää, että prosessorin laskenta-aikaa käytettiin alle puolet kyselyn suoritusajasta. Julkaisun perusteella voi siis päätellä, että tarvetta paremmalle
17 14 tiedon ennalta hauelle löytyy todella paljon. Nimen omaan tiedon ennalta haun ideaan perustuvakin Zhoun ja kumppaneiden [ZCR05] sekä Papadopouloksen ja kumppaneiden [PST08] ratkaisut. Kummassakin pyritään parantamaan suorituskykyä samalla idealla: yksi ydin tai säie noutaa tietoa, mitä muut tulevat tarvitsemaan. Säikeiden tapauksessa hyöty jää lopulta pieneksi, mutta ytimien tapauksessa hyöty on kohtalaisen suurta. Acker ja kumppanit [ARB08] ovat tässä eri linjalla ja heidän ratkaisuna on jakaa yhden kyselyn suoritus tasaisesti usealle säikeelle. Ratkaisu vaatii laskenta-aikaa prosessorilta koko ajan, joten lyhyet ja keskipitkät kyselyt kärsivät tästä. Pidempään kestäville kyselyille hyöty taas on suuri. Minusta kiinnostavina yksityiskohtina voin mainita myös, että Zhoun ja kumppaneiden [ZCR05] testien tuloksista voi päätellä, että pelkästään samanaikaisesti suoritettavien säikeiden lisäys parantaa huomattavasti kyselyjen suoritusta. Lisäksi Papadopouloksen ja kumppaneiden [PST08] testistä voi päätellä, että pelkästään ytimien lisääminen johtaa lopulta muistikaistan tukkeutumiseen ja täten prosessorin ytimien pysähtymisiin. Ratkaisua jossa moniydinprosessoreita siis käytetään älykkäästi, eli jokainen ydin ei aina laske vain yhtä kyselyä, tarvitaan kipeästi. Julkaisujen perusteella ratkaisuja on onneksi keksitty, nyt kun vain ne pääsisivät käyttöön asti. Lähteet ADH99 ARB08 PST08 ZCR05 A. Ailamaki, D. J. DeWitt, M. D. Hill ja D. A. Wood. DBMSs On A Modern Processor: Where Does Time Go? In Proceedings of the Very Large Data Bases (VLDB'99), Morgan Kaufmann, Edinburgh, Scotland, UK, 1999, sivut R. Acker, C. Roth ja R. Bayer. Parallel Query Processing in Databases on Multicore Architectures. Algorithms and Architectures for Parallel Processing, 5022:2 13. Springer Berlin / Heidelberg, K. Papadopoulos, K. Stavrou ja P. Trancoso. HelperCore DB : Exploiting Multicore Technology to Improve Database Performance. In Proceedings of the Parallel and Distributed Processing (IPDPS'08), IEEE International Symposium, Miami, Florida, USA, 2008, sivut J. Zhou, J. Cieslewicz, K. A. Ross ja M. Shah. Improving Database Per-
18 15 formance on Simultaneous Multithreading Processors. In Proceedings of the Very Large Data Bases (VLDB'05), ACM, Trondheim, Norway, 2005, sivut
arvostelija OSDA ja UDDI palveluhakemistoina.
Hyväksymispäivä Arvosana arvostelija OSDA ja UDDI palveluhakemistoina. HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta/Osasto Fakultet/Sektion Faculty/Section Laitos Institution
Rinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi
Rinnakkaisuuden hyväksikäyttö peleissä Paula Kemppi 24.4.2008 Esityksen rakenne Johdantoa Rinnakkaisuus Pelimoottorien rinnakkaisuuden mallit Funktionaalisen rinnakkaisuuden malli Rinnakkaisen tiedon malli
VÄLIMUISTITIETOISET PUSKURIT. Markus Montonen
VÄLIMUISTITIETOISET PUSKURIT Markus Montonen Sisällys 1. Johdanto 2. L1-välimuistin puskuroinnin ongelma ja ratkaisuehdotus 3. L1-välimuistin puskurioperaation kokeellinen tutkiminen 4. L2-välimuistin
Algoritmit 1. Luento 3 Ti Timo Männikkö
Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien
Selainpelien pelimoottorit
Selainpelien pelimoottorit Teemu Salminen Helsinki 28.10.2017 Seminaaritutkielma Helsingin yliopisto Tietojenkäsittelytiede ! 1 HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta
Aika/Datum Month and year Kesäkuu 2012
Tiedekunta/Osasto Fakultet/Sektion Faculty Laitos/Institution Department Filosofian, historian, kulttuurin ja taiteiden tutkimuksen laitos Humanistinen tiedekunta Tekijä/Författare Author Veera Lahtinen
Koht dialogia? Organisaation toimintaympäristön teemojen hallinta dynaamisessa julkisuudessa tarkastelussa toiminta sosiaalisessa mediassa
Kohtdialogia? Organisaationtoimintaympäristönteemojenhallinta dynaamisessajulkisuudessatarkastelussatoiminta sosiaalisessamediassa SatuMariaPusa Helsinginyliopisto Valtiotieteellinentiedekunta Sosiaalitieteidenlaitos
Välimuistitietoiset puskurit.
hyväksymispäivä arvosana arvostelija Välimuistitietoiset puskurit. Markus Montonen Helsinki 02.03.2011 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY
Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo
Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...
Tietorakenteet ja algoritmit - syksy 2015 1
Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä
TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2
TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos TKT-3200 Tietokonetekniikka I Harjoitustyö 4: Cache, osa 2.. 2010 Ryhmä Nimi Op.num. 1 Valmistautuminen Cache-työn toisessa osassa
CUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen
CUDA Moniydinohjelmointi 17.4.2012 Mikko Honkonen Yleisesti Compute Unified Device Architecture Ideana GPGPU eli grafiikkaprosessorin käyttö yleiseen laskentaan. Nvidian täysin suljetusti kehittämä. Vuoden
Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen
Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:
Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen
Seminaari: Keskusmuistitietokannat Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen Sisältö Johdanto Esiteltävien menetelmien taustoja Hajautetun tietokannan spekuloiva samanaikaisuuden
Pro gradu -tutkielma Meteorologia SUOMESSA ESIINTYVIEN LÄMPÖTILAN ÄÄRIARVOJEN MALLINTAMINEN YKSIDIMENSIOISILLA ILMAKEHÄMALLEILLA. Karoliina Ljungberg
Pro gradu -tutkielma Meteorologia SUOMESSA ESIINTYVIEN LÄMPÖTILAN ÄÄRIARVOJEN MALLINTAMINEN YKSIDIMENSIOISILLA ILMAKEHÄMALLEILLA Karoliina Ljungberg 16.04.2009 Ohjaajat: Ari Venäläinen, Jouni Räisänen
Algoritmit 1. Luento 1 Ti Timo Männikkö
Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017
811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu
811312A Tietorakenteet ja algoritmit, 2018-2019, Harjoitus 3, Ratkaisu Harjoituksessa käsitellään algoritmien aikakompleksisuutta. Tehtävä 3.1 Kuvitteelliset algoritmit A ja B lajittelevat syötteenään
Käyttöjärjestelmät: poissulkeminen ja synkronointi
Käyttöjärjestelmät: poissulkeminen ja synkronointi Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Lähteet Stallings, W. Operating Systems Haikala, Järvinen, Käyttöjärjestelmät Eri Web-lähteet
Tietojärjestelmä tuotantoympäristössä. Sovellusohjelmat Helsingin ammattikorkeakoulu Stadia / Tekniikka ja liikenne Vesa Ollikainen
Tietojärjestelmä tuotantoympäristössä Tausta ja tavoitteet Tausta Kurssilla on opiskeltu suunnittelemaan ja toteuttamaan tietokanta, joka on pieni perustuu selkeisiin vaatimuksiin on (yleensä) yhden samanaikaisen
Tietokoneen muisti nyt ja tulevaisuudessa. Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu
Tietokoneen muisti nyt ja tulevaisuudessa Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu Yleisesti Muisti on yksi keskeisimmistä tietokoneen komponenteista Random Access Memory on yleistynyt
SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet
SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet A271117, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin
Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages
Tiedekunta/Osasto Fakultet/Sektion Faculty Laitos Institution Department Tekijä Författare Author Työn nimi Arbetets titel Title Oppiaine Läroämne Subject Työn laji Arbetets art Level Aika Datum Month
Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä
hyväksymispäivä arvosana arvostelija Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä Tuomas Husu Helsinki 20.2.2010 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisältö i 1 Johdanto
MEMS-muisti relaatiotietokannoissa
MEMS-muisti relaatiotietokannoissa Antti Tikka Espoo 28.2.2009 Seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta/Osasto
jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja
Tietokanta Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja mikä tahansa tietokokoelma? --> erityispiirteitä Tietokanta vs. tiedosto 1
Tietokanta (database)
Tietokanta Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja 1 Tiedosto Ohjelmointikielissä apumuistiin tallennettuja tietoja käsitellään
Tietorakenteet, laskuharjoitus 7, ratkaisuja
Tietorakenteet, laskuharjoitus, ratkaisuja. Seuraava kuvasarja näyttää B + -puun muutokset lisäysten jälkeen. Avaimet ja 5 mahtuvat lehtisolmuihin, joten niiden lisäys ei muuta puun rakennetta. Avain 9
Grafiikkasuorittimen käyttö keskusmuistitietokannoissa
Grafiikkasuorittimen käyttö keskusmuistitietokannoissa Matti Nauha Helsinki 9.3.2012 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI
PN-puu. Helsinki Seminaari: Tietokannat nyt HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
PN-puu Erno Härkönen Helsinki 24.10.2006 Seminaari: Tietokannat nyt HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta/Osasto
Maailman muutosta tallentamassa Marko Vuokolan The Seventh Wave -valokuvasarja avauksena taidevalokuvan aikaan
Maailman muutosta tallentamassa Marko Vuokolan The Seventh Wave -valokuvasarja avauksena taidevalokuvan aikaan Pro gradu -tutkielma 31.1.2012 Helsingin yliopisto Humanistinen tiedekunta Filosofian, historian,
Hallintomallit Suomen valtionhallinnon tietohallintostrategioissa
Hallintomallit Suomen valtionhallinnon tietohallintostrategioissa Lauri Eloranta Helsingin yliopisto Valtiotieteellinen tiedekunta Viestintä Pro gradu -tutkielma, 2014 Hallintomallit)Suomen)valtionhallinnon)tietohallintostrategioissa
Rinnakkaistietokoneet luento S
Rinnakkaistietokoneet luento 5 521475S Silmukalliset ohjelmat Silmukat joissa ei ole riippuvuussyklejä voidaan vektoroida eli suorittaa silmukan vektorointi Jokainen yksittäinen käsky silmukan rungossa
Katsaus korruption vaikutuksesta Venäjän alueelliseen talouskasvuun ja suoriin ulkomaisiin investointeihin
INSTITUUTIOTTALOUSKASVUNEDELLYTYKSENÄ KatsauskorruptionvaikutuksestaVenäjänalueelliseentalouskasvuunjasuoriin ulkomaisiininvestointeihin2000 2010 AshekMohamedTarikHossain HelsinginYliopisto Valtiotieteellinentiedekunta
811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto
811312A Tietorakenteet ja algoritmit 2015-2016 I Johdanto Sisältö 1. Algoritmeista ja tietorakenteista 2. Algoritmien analyysistä 811312A TRA, Johdanto 2 I.1. Algoritmeista ja tietorakenteista I.1.1. Algoritmien
PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER
PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER Group 16 Ville Laatu Henri Myllyoja - i SISÄLLYSLUETTELO 1. DEBUGGERI YLEISESTI... II 1.1 Debuggerin käyttämien... ii 1.2 Debuggerin käynnistäminen... ii
! #! %! & #!!!!! ()) +
! #! %! & #!!!!! ()) + Tiedekunta/Osasto Fakultet/Sektion Faculty Humanistinen tiedekunta Laitos Institution Department Taiteiden tutkimuksen laitos Tekijä Författare Author Matti Pesonen Työn nimi Arbetets
Arkkitehtuurinen reflektio
Arkkitehtuurinen reflektio Toni Ruokolainen Toni.Ruokolainen@cs.helsinki.fi Helsinki 6.10.2003 Tiivistelmä HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET
Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto
Tietokanta Tiedosto Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja Ohjelmointikielissä apumuistiin tallennettuja tietoja käsitellään
2 Konekieli, aliohjelmat, keskeytykset
ITK145 Käyttöjärjestelmät, kesä 2005 Tenttitärppejä Tässä on lueteltu suurin piirtein kaikki vuosina 2003-2005 kurssin tenteissä kysytyt kysymykset, ja mukana on myös muutama uusi. Jokaisessa kysymyksessä
AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta
AVL-puut eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta pohjana jo esitetyt binäärihakupuiden operaatiot tasapainotus vie pahimmillaan lisäajan lisäys- ja
Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen
Helsingin Yliopisto, tietojenkäsittelytieteen laitos Rinnakkaisohjelmointi (syksy 2006) Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen a. Käyttötarkoitus ja sovellusalue
Luku 8. Aluekyselyt. 8.1 Summataulukko
Luku 8 Aluekyselyt Aluekysely on tiettyä taulukon väliä koskeva kysely. Tyypillisiä aluekyselyitä ovat, mikä on taulukon välin lukujen summa tai pienin luku välillä. Esimerkiksi seuraavassa taulukossa
Tietokoneen toiminta, K Tavoitteet (4)
Jakso 12 Yhteenveto Keskeiset asiat 1 Tavoitteet (4) Ymmärtää tietokonejärjestelmän keskeiset piirteet sillä suoritettavan ohjelman näkökulmasta Miten tietokonejärjestelmä suorittaa sille annettua ohjelmaa?
Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000
Jakso 12 Yhteenveto Keskeiset asiat 1 Tavoitteet (4) Ymmärtää tietokonejärjestelmän keskeiset piirteet sillä suoritettavan ohjelman näkökulmasta Miten tietokonejärjestelmä suorittaa sille annettua ohjelmaa?
58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut
58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut 1. Palautetaan vielä mieleen O-notaation määritelmä. Olkoon f ja g funktioita luonnollisilta luvuilta positiivisille
D B. Tietokannan hallinta kertaus
TKHJ:n pääkomponentit metadata TKHJ:ssä Tiedostojen käsittely puskurien rooli tiedostokäsittelyssä levymuistin rakenne ja käsittely mistä tekijöistä hakuaika muodostuu jonotus jos useita samanaikaisia
Kontrollipolkujen määrä
Testaus Yleistä Testaus on suunnitelmallista virheiden etsimistä Tuotantoprosessissa ohjelmaan jää aina virheitä, käytettävistä menetelmistä huolimatta Hyvät menetelmät, kuten katselmoinnit pienentävät
Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14
Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2
Kahden virtualisointiohjelmiston suorituskyvyn testaus (valmiin työn esittely)
Kahden virtualisointiohjelmiston suorituskyvyn testaus (valmiin työn esittely) Jani Laine 31.10.2017 Ohjaaja: DI Jimmy Kjällman Valvoja: Prof. Kai Virtanen Työn saa tallentaa ja julkistaa Aalto-yliopiston
Algoritmit 1. Luento 10 Ke Timo Männikkö
Algoritmit 1 Luento 10 Ke 14.2.2018 Timo Männikkö Luento 10 Algoritminen ongelmanratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Lisäyslajittelu Valintalajittelu Permutaatiot
Tehtävä 2: Tietoliikenneprotokolla
Tehtävä 2: Tietoliikenneprotokolla Johdanto Tarkastellaan tilannetta, jossa tietokone A lähettää datapaketteja tietokoneelle tiedonsiirtovirheille alttiin kanavan kautta. Datapaketit ovat biteistä eli
1. a) Laadi suoraviivaisesti kyselyä vastaava optimoimaton kyselypuu.
Helsingin yliopisto, Tietojenkäsittelytieteen laitos Kyselykielet, s 2006, Harjoitus 5 (7.12.2006) Tietokannassa on tietoa tavaroista ja niiden toimittajista: Supplier(sid,sname,city,address,phone,etc);
(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.
Loppu seuraa suoralla laskulla: n n Tave TR = p j (1 + b (i, j)) j=1 = 1 + 1 i
Graafin 3-värittyvyyden tutkinta T Graafiteoria, projektityö (eksakti algoritmi), kevät 2005
Graafin 3-värittyvyyden tutkinta T-79.165 Graafiteoria, projektityö (eksakti algoritmi), kevät 2005 Mikko Malinen, 36474R 29. maaliskuuta, 2005 Tiivistelmä Artikkelissa käydään läpi teoriaa, jonka avulla
4. Funktion arvioimisesta eli approksimoimisesta
4. Funktion arvioimisesta eli approksimoimisesta Vaikka nykyaikaiset laskimet osaavatkin melkein kaiken muun välttämättömän paitsi kahvinkeiton, niin joskus, milloin mistäkin syystä, löytää itsensä tilanteessa,
811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen
Samanaikaisuuden hallinta Snapshot Isolationin avulla
hyväksymispäivä arvosana arvostelija Samanaikaisuuden hallinta Snapshot Isolationin avulla Olli Korhonen Helsinki 4.3.2009 Seminaarityö HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO
Tutoriaaliläsnäoloista
Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus
D B. Levykön rakenne. pyöriviä levyjä ura. lohko. Hakuvarsi. sektori. luku-/kirjoituspää
Levyn rakenne Levykössä (disk drive) on useita samankeskisiä levyjä (disk) Levyissä on magneettinen pinta (disk surface) kummallakin puolella levyä Levyllä on osoitettavissa olevia uria (track), muutamasta
Luonnontieteiden popularisointi ja sen ideologia
Luonnontieteiden popularisointi ja sen ideologia Tapauksina Reino Tuokko ja Helsingin Sanomat 1960-luvulla Ahto Apajalahti Helsingin yliopisto Humanistinen tiedekunta Suomen ja Pohjoismaiden historia Pro
Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms.
Kokeellinen algoritmiikka (3 ov) syventäviä opintoja edeltävät opinnot: ainakin Tietorakenteet hyödyllisiä opintoja: ASA, Algoritmiohjelmointi suoritus harjoitustyöllä (ei tenttiä) Kirjallisuutta: Johnson,
5. Numeerisesta derivoinnista
Funktion derivaatta ilmaisee riippumattoman muuttujan muutosnopeuden riippuvan muuttujan suteen. Esimerkiksi paikan derivaatta ajan suteen (paikan ensimmäinen aikaderivaatta) on nopeus, joka ilmaistaan
Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu
Liite 1: skenaariot ja PoC tulokset 1. Palvelun kehittäjän näkökulma Tilanne Vaatimus Ongelma jos vaatimus ei toteudu Palvelun uusi versio on Palveluiden kehittäminen voitava asentaa tuotantoon vaikeutuu
3 Raja-arvo ja jatkuvuus
3 Raja-arvo ja jatkuvuus 3. Raja-arvon käsite Raja-arvo kuvaa funktion kättätmistä jonkin lähtöarvon läheisdessä. Raja-arvoa tarvitaan toisinaan siksi, että funktion arvoa ei voida laskea kseisellä lähtöarvolla
1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:
Tietorakenteet, laskuharjoitus 10, ratkaisuja 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: SamaLuku(T ) 2 for i = 1 to T.length 1 3 if T [i] == T [i + 1] 4 return True 5 return
Stabiloivat synkronoijat ja nimeäminen
Stabiloivat synkronoijat ja nimeäminen Mikko Ajoviita 2.11.2007 Synkronoija Synkronoija on algoritmi, joka muuntaa synkronoidun algoritmin siten, että se voidaan suorittaa synkronoimattomassa järjestelmässä.
Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?
Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön? 2013-2014 Lasse Lensu 2 Systeemiohjelmat ovat tietokoneen laitteistoa lähellä olevia ohjelmia,
Tietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Kurssin sisältö pääpiirteittäin Tarvittavat pohjatiedot Avainsanat Abstraktio Esimerkkiohjelman tehtäväkuvaus Abstraktion käyttö tehtävässä Abstrakti tietotyyppi Hyötyjä ADT:n
Intel Pentium Pro -prosessori. tietokonearkkitehtuurit, syksy -96 Ari Rantanen
Intel Pentium Pro -prosessori tietokonearkkitehtuurit, syksy -96 Ari Rantanen Tarkasteltavat aiheet Katsaus Pentium Pro:n ominaisuuksiin Käskyn suoritus Pentium Pro:n liukuhihnalla Pentium Pro:n suorituskyky
4 Tehokkuus ja algoritmien suunnittelu
TIE-20100 Tietorakenteet ja algoritmit 52 4 Tehokkuus ja algoritmien suunnittelu Tässä luvussa pohditaan tehokkuuden käsitettä ja esitellään kurssilla käytetty kertaluokkanotaatio, jolla kuvataan algoritmin
Algoritmit 2. Luento 13 Ti Timo Männikkö
Algoritmit 2 Luento 13 Ti 30.4.2019 Timo Männikkö Luento 13 Simuloitu jäähdytys Merkkijonon sovitus Horspoolin algoritmi Ositus ja rekursio Rekursion toteutus Algoritmit 2 Kevät 2019 Luento 13 Ti 30.4.2019
Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä
Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta Hajautettu tietokanta Jokainen hajautettu tietokanta muodostaa oman kokonaisuutensa Loogisesti yhtenäinen data on hajautettu tietokantoihin (eri
Puuhakemistoista flash-levyllä
Puuhakemistoista flash-levyllä Antti Tikka Espoo 23.10.2009 Seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta/Osasto
Yleisen PSCR-menetelmän toteutus ohjelmoitavalla näytönoh
Yleisen n toteutus ohjelmoitavalla näytönohjaimella Mirko Myllykoski mirko.myllykoski@jyu.fi 15.2.2011 Mitä teen? Tarkoituksena toteuttaa (ja osin jo toteutettukin) stä versio ohjelmoitavalle näytönohjaimelle
Tiedekunta/Osasto Fakultet/Sektion Faculty Valtiotieteellinen tiedekunta
Tiedekunta/Osasto Fakultet/Sektion Faculty Valtiotieteellinen tiedekunta Laitos Institution Department Politiikan ja talouden tutkimuksen laitos Tekijä Författare Author Virta, Mikko Antero Työn nimi Arbetets
Luento 1 Tietokonejärjestelmän rakenne
Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Luento
Helsingin yliopisto/tktl Kyselykielet, s 2006 Optimointi Harri Laine 1. Kyselyn optimointi. Kyselyn optimointi
Miksi optimoidaan Relaatiotietokannan kyselyt esitetään käytännössä SQLkielellä. Kieli määrittää halutun tuloksen, ei sitä miten tulos muodostetaan (deklaratiivinen kyselykieli) Tietokannan käsittelyoperaatiot
TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö
TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö Tekijät: Eemeli Honkonen Joni Metsälä Työ palautettu: SISÄLLYSLUETTELO: 1 SEMINAARITYÖN KUVAUS... 3 2 TIETOKANTA... 3 2.1 MITÄ TIETOKANNAT SITTEN OVAT?... 3
Matemaatiikan tukikurssi
Matemaatiikan tukikurssi Kurssikerta 1 1 Funktiot Funktion määritelmä Funktio on sääntö, joka liittää kahden eri joukon alkioita toisiinsa. Ollakseen funktio tämän säännön on liitettävä jokaiseen lähtöjoukon
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print
Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus
Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone
Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä
Edistymisraportti v. T4 (Toteutus 4) Päivitetty 15.3.2001 klo 18:13 2 (8) Sisällys 1 PROJEKTIN TILA...3 2 SUORITETUT TEHTÄVÄT...6 3 KÄYTETYT MENETELMÄT...7 4 ONGELMAT...8 EDISTYMISRAPORTTI 2 3 (8) 1. Projektin
Oppimistavoitteet kurssilla Rinnakkaisohjelmointi
17.5.2006 1/5 Oppimistavoitteet kurssilla Rinnakkaisohjelmointi Rinnakkaisuus ja rinnakkaisuuden soveltaminen tietojenkäsittelyjärjestelmissä Kurssin Tietokoneen toiminta perusteella ymmärtää, miten ohjelman
58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen)
58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen) 1. Avaimet 1, 2, 3 ja 4 mahtuvat samaan lehtisolmuun. Tässä tapauksessa puussa on vain yksi solmu, joka on samaan aikaan juurisolmu
815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/
Software product lines
Thomas Gustafsson, Henrik Heikkilä Software product lines Metropolia Ammattikorkeakoulu Insinööri (AMK) Tietotekniikan koulutusohjelma Asiantuntijateksti 17.11.2013 Sisällys 1 Johdanto 1 2 Software product
Demo 1: Simplex-menetelmä
MS-C2105 Optimoinnin perusteet Malliratkaisut 3 Ehtamo Demo 1: Simplex-menetelmä Muodosta lineaarisen tehtävän standardimuoto ja ratkaise tehtävä taulukkomuotoisella Simplex-algoritmilla. max 5x 1 + 4x
Testauksen tuki nopealle tuotekehitykselle. Antti Jääskeläinen Matti Vuori
Testauksen tuki nopealle tuotekehitykselle Antti Jääskeläinen Matti Vuori Mitä on nopeus? 11.11.2014 2 Jatkuva nopeus Läpäisyaste, throughput Saadaan valmiiksi tasaiseen, nopeaan tahtiin uusia tuotteita
Seminaari: HL7 versio 2
hyväksymispäivä arvosana arvostelija Seminaari: HL7 versio 2 Markus Koski Helsinki 29.9.2014 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF
58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut
Tietorakenteet ja algoritmit (syksy 0) Toinen välikoe, malliratkaisut. (a) Alussa puu näyttää tältä: Lisätään 4: 4 Tasapaino rikkoutuu solmussa. Tehdään kaksoiskierto ensin oikealle solmusta ja sitten
A271117 TIETOKANNAT, 3 op Syksy 2008 - TI07. Teemu Saarelainen, lehtori Tietotekniikka teemu.saarelainen@kyamk.fi
A271117 TIETOKANNAT, 3 op Syksy 2008 - TI07 Teemu Saarelainen, lehtori Tietotekniikka teemu.saarelainen@kyamk.fi A271117 TIETOKANNAT Tavoitteet Oppia tietokantojen suunnitteluperiaatteet Osata käyttää
IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit
IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
LIITE. asiakirjaan. komission delegoitu asetus
EUROOPAN KOMISSIO Bryssel 12.10.2015 C(2015) 6823 final ANNEX 1 PART 6/11 LIITE asiakirjaan komission delegoitu asetus kaksikäyttötuotteiden vientiä, siirtoa, välitystä ja kauttakulkua koskevan yhteisön
Laita tietokone testipenkkiin
KUINKA TIETOKONEESI PÄRJÄÄ UUSIMPIA MALLEJA VASTAAN? Suoritin Laita tietokone testipenkkiin 2D-grafiikka Passmark Performance Test tutkii tietokoneen suorituskykyä lukuisten testien avulla. Tämän jälkeen
Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Satunnaisalgoritmit Topi Paavilainen Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Helsinki, 23. helmikuuta 2014 1 Johdanto Satunnaisalgoritmit ovat algoritmeja, joiden
KRYSP-rajapintojen suorituskykytestaukset. Jari Torvinen 12.2.2014
KRYSP-rajapintojen suorituskykytestaukset Jari Torvinen 12.2.2014 1 Esityksen sisältö Rajapintojen käyttöönoton tilanne Kuopiossa Miksi suorituskykytestaus? Suorituskykytestauksen toteuttaminen Testaustulosten
ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014
18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
TIETOJEN TUONTI TIETOKANNASTA + PIVOT-TAULUKON JA OLAP-KUUTION TEKO
TIETOJEN TUONTI TIETOKANNASTA + PIVOT-TAULUKON JA OLAP-KUUTION TEKO JOUNI HUOTARI 2005-2010 OLAP-OHJETEKSTIT KOPIOITU MICROSOFTIN OHJATUN OLAP-KUUTION TEKO-OHJEESTA ESIMERKIN KUVAUS JA OLAP-MÄÄRITELMÄ
Joonas Haapala Ohjaaja: DI Heikki Puustinen Valvoja: Prof. Kai Virtanen
Hävittäjälentokoneen reitin suunnittelussa käytettävän dynaamisen ja monitavoitteisen verkko-optimointitehtävän ratkaiseminen A*-algoritmilla (valmiin työn esittely) Joonas Haapala 8.6.2015 Ohjaaja: DI
JHS 180 Paikkatiedon sisältöpalvelut Liite 4 INSPIRE-palvelujen laadun testaus
JHS 180 Paikkatiedon sisältöpalvelut Liite 4 INSPIRE-palvelujen laadun testaus Versio: 28.2.2013 Julkaistu: 28.2.2013 Voimassaoloaika: toistaiseksi Sisällys 1 Yleiset vaatimukset... 2 2 Latauspalvelun