Java-pohjaiset ohjelmalliset transaktiomuistit

Erilaiset järjestelmät suorittavat nykypäivänä yhä enemmän rinnakkaista laskentaa prosessorien ja niiden laskentaytimien lukumäärän kasvaessa. Tämän seurauksena perinteiset lukkoihin perustuvat rinnakkaisuuden hallintamenetelmät tulevat koko ajan monimutkaisemmiksi käyttää ja implementoida. Ohjelmal...

Full description

Bibliographic Details
Main Author: Ollila, A. (Antti)
Format: Dissertation
Language:Finnish
Published: University of Oulu 2015
Subjects:
Online Access:http://urn.fi/URN:NBN:fi:oulu-201505211559
http://nbn-resolving.de/urn:nbn:fi:oulu-201505211559
id ndltd-oulo.fi-oai-oulu.fi-nbnfioulu-201505211559
record_format oai_dc
spelling ndltd-oulo.fi-oai-oulu.fi-nbnfioulu-2015052115592018-06-20T04:57:41ZJava-pohjaiset ohjelmalliset transaktiomuistitOllila, A. (Antti)info:eu-repo/semantics/openAccess© Antti Ollila, 2015Information Processing ScienceErilaiset järjestelmät suorittavat nykypäivänä yhä enemmän rinnakkaista laskentaa prosessorien ja niiden laskentaytimien lukumäärän kasvaessa. Tämän seurauksena perinteiset lukkoihin perustuvat rinnakkaisuuden hallintamenetelmät tulevat koko ajan monimutkaisemmiksi käyttää ja implementoida. Ohjelmalliset transaktiomuistit ovat vaihtoehto perinteisille lukkoihin perustuville rinnakkaisuuden hallintamenetelmille. Ne lupaavat estää yhden perinteisten lukkojen pahimmista haittapuolista, eli lukkiutumien tapahtumisen, sekä yksinkertaistaa rinnakkain suoritettavan koodin kirjoittamista. Tässä pro gradu -tutkielmassa käytettiin tutkimusmenetelmänä teknologiavertailua, jonka tavoitteena oli selvittää ovatko ohjelmalliset transaktiomuistit varteenotettava vaihtoehto perinteisille lukkoihin perustuville ratkaisuille. Tutkielmassa kahteen valittuun synkronointiongelmaan, eli tuottaja-kuluttaja- ja lukija-kirjoittaja-ongelmaan, luotiin ratkaisut käyttäen yleiskatsauksessa valittuja erilaisia Javaan pohjautuvia ohjelmallisia transaktiomuistitoteutusvaihtoehtoja. Vertailun vuoksi synkronointiongelmiin tehtiin myös perinteisiin lukkoihin perustuvat toteutukset. Luotuja toteutuksia mitattiin ja vertailtiin tämän jälkeen käyttäen valittuja mittausparametreja. Saatujen mittaustulosten perusteella tutkimukseen valitut ohjelmalliset transaktiomuistit erosivat huomattavasti toisistansa sekä helppokäyttöisyyden että suorituskyvyn osalta. Deuce STM on huomattavasti helppokäyttöisempi kuin ScalaSTM, mutta kääntöpuolena sen suorituskyky on useissa tilanteissa huomattavasti heikompi. Myös molempien ohjelmallisten transaktiomuistien käyttämät vuonohjausmekanismit eroavat huomattavasti toisistansa. Lukkopohjainen toteutus suoriutui kuitenkin yleensä ottaen molempia ohjelmallisia transaktiomuistitoteutuksia paremmin. Tutkimuksen perusteella vaikuttaisi, että käytettäessä Java-ohjelmointikieltä, perinteisiin lukkoihin perustuva rinnakkaisuudenhallinta on vielä toistaiseksi ohjelmallisia transaktiomuisteja parempi vaihtoehto. Jos ratkaistava synkronointiongelma on hyvin monimutkainen ja sen ratkaisemisen tueksi ei löydy Java-ohjelmointikielestä valmiita mekanismeja, nousee hyvin optimoitu ohjelmallinen transaktiomuisti, kuten ScalaSTM, varteenotettavaksi vaihtoehdoksi. Lisäksi jos synkronointiongelmaan kuuluu huomattavasti enemmän lukuoperaatioita suhteessa kirjoitusoperaatioihin, voi ohjelmallinen transaktiomuistitoteutus tarjota mahdollisesti jopa suorituskyvyn lisäystä verrattuna perinteisiin lukkopohjaisiin ratkaisuihin. Tutkielmassa keskityttiin tarkastelemaan kahta eri synkronointiongelmaa käyttäen kahta eri Java-pohjaista ohjelmallista transaktiomuistitoteutusta sekä yhtä lukkoihin perustuvaa toteutusta. Tämä rajoittaa tutkielmassa saatujen tuloksien yleistettävyyttä.University of Oulu2015-05-25info:eu-repo/semantics/masterThesisinfo:eu-repo/semantics/publishedVersionapplication/pdfhttp://urn.fi/URN:NBN:fi:oulu-201505211559urn:nbn:fi:oulu-201505211559fin
collection NDLTD
language Finnish
format Dissertation
sources NDLTD
topic Information Processing Science
spellingShingle Information Processing Science
Ollila, A. (Antti)
Java-pohjaiset ohjelmalliset transaktiomuistit
description Erilaiset järjestelmät suorittavat nykypäivänä yhä enemmän rinnakkaista laskentaa prosessorien ja niiden laskentaytimien lukumäärän kasvaessa. Tämän seurauksena perinteiset lukkoihin perustuvat rinnakkaisuuden hallintamenetelmät tulevat koko ajan monimutkaisemmiksi käyttää ja implementoida. Ohjelmalliset transaktiomuistit ovat vaihtoehto perinteisille lukkoihin perustuville rinnakkaisuuden hallintamenetelmille. Ne lupaavat estää yhden perinteisten lukkojen pahimmista haittapuolista, eli lukkiutumien tapahtumisen, sekä yksinkertaistaa rinnakkain suoritettavan koodin kirjoittamista. Tässä pro gradu -tutkielmassa käytettiin tutkimusmenetelmänä teknologiavertailua, jonka tavoitteena oli selvittää ovatko ohjelmalliset transaktiomuistit varteenotettava vaihtoehto perinteisille lukkoihin perustuville ratkaisuille. Tutkielmassa kahteen valittuun synkronointiongelmaan, eli tuottaja-kuluttaja- ja lukija-kirjoittaja-ongelmaan, luotiin ratkaisut käyttäen yleiskatsauksessa valittuja erilaisia Javaan pohjautuvia ohjelmallisia transaktiomuistitoteutusvaihtoehtoja. Vertailun vuoksi synkronointiongelmiin tehtiin myös perinteisiin lukkoihin perustuvat toteutukset. Luotuja toteutuksia mitattiin ja vertailtiin tämän jälkeen käyttäen valittuja mittausparametreja. Saatujen mittaustulosten perusteella tutkimukseen valitut ohjelmalliset transaktiomuistit erosivat huomattavasti toisistansa sekä helppokäyttöisyyden että suorituskyvyn osalta. Deuce STM on huomattavasti helppokäyttöisempi kuin ScalaSTM, mutta kääntöpuolena sen suorituskyky on useissa tilanteissa huomattavasti heikompi. Myös molempien ohjelmallisten transaktiomuistien käyttämät vuonohjausmekanismit eroavat huomattavasti toisistansa. Lukkopohjainen toteutus suoriutui kuitenkin yleensä ottaen molempia ohjelmallisia transaktiomuistitoteutuksia paremmin. Tutkimuksen perusteella vaikuttaisi, että käytettäessä Java-ohjelmointikieltä, perinteisiin lukkoihin perustuva rinnakkaisuudenhallinta on vielä toistaiseksi ohjelmallisia transaktiomuisteja parempi vaihtoehto. Jos ratkaistava synkronointiongelma on hyvin monimutkainen ja sen ratkaisemisen tueksi ei löydy Java-ohjelmointikielestä valmiita mekanismeja, nousee hyvin optimoitu ohjelmallinen transaktiomuisti, kuten ScalaSTM, varteenotettavaksi vaihtoehdoksi. Lisäksi jos synkronointiongelmaan kuuluu huomattavasti enemmän lukuoperaatioita suhteessa kirjoitusoperaatioihin, voi ohjelmallinen transaktiomuistitoteutus tarjota mahdollisesti jopa suorituskyvyn lisäystä verrattuna perinteisiin lukkopohjaisiin ratkaisuihin. Tutkielmassa keskityttiin tarkastelemaan kahta eri synkronointiongelmaa käyttäen kahta eri Java-pohjaista ohjelmallista transaktiomuistitoteutusta sekä yhtä lukkoihin perustuvaa toteutusta. Tämä rajoittaa tutkielmassa saatujen tuloksien yleistettävyyttä.
author Ollila, A. (Antti)
author_facet Ollila, A. (Antti)
author_sort Ollila, A. (Antti)
title Java-pohjaiset ohjelmalliset transaktiomuistit
title_short Java-pohjaiset ohjelmalliset transaktiomuistit
title_full Java-pohjaiset ohjelmalliset transaktiomuistit
title_fullStr Java-pohjaiset ohjelmalliset transaktiomuistit
title_full_unstemmed Java-pohjaiset ohjelmalliset transaktiomuistit
title_sort java-pohjaiset ohjelmalliset transaktiomuistit
publisher University of Oulu
publishDate 2015
url http://urn.fi/URN:NBN:fi:oulu-201505211559
http://nbn-resolving.de/urn:nbn:fi:oulu-201505211559
work_keys_str_mv AT ollilaaantti javapohjaisetohjelmallisettransaktiomuistit
_version_ 1718697530976370688