University of Oulu

Java-pohjaiset ohjelmalliset transaktiomuistit

Saved in:
Author: Ollila, Antti1
Organizations: 1University of Oulu, Faculty of Information Technology and Electrical Engineering, Department of Information Processing Science, Information Processing Science
Format: ebook
Version: published version
Access: open
Online Access: PDF Full Text (PDF, 1 MB)
Persistent link: http://urn.fi/URN:NBN:fi:oulu-201505211559
Language: Finnish
Published: Oulu : A. Ollila, 2015
Publish Date: 2015-05-25
Physical Description: 52 p.
Thesis type: Master's thesis
Tutor: Vesanen, Ari
Siirtola, Antti
Reviewer: Saukkonen, Samuli
Vesanen, Ari
Siirtola, Antti
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ä.
see all

Subjects:
Copyright information: © Antti Ollila, 2015. This publication is copyrighted. You may download, display and print it for your own personal use. Commercial use is prohibited.