Performance of serialized object processing in Java

Loading...
Thumbnail Image
Journal Title
Journal ISSN
Volume Title
Perustieteiden korkeakoulu | Master's thesis
Date
2019-08-19
Department
Major/Subject
Computer Science
Mcode
SCI3042
Degree programme
Master’s Programme in Computer, Communication and Information Sciences
Language
en
Pages
85
Series
Abstract
Distributed systems have become increasingly more common. In these systems, multiple nodes communicate with each other, typically over a network, which requires serialization of in-memory objects to byte streams. Object serialization has many uses also in more traditional systems. For example, serialization can be used for data persistence. As serialization in many systems is a central and frequent operation, its performance is critical for the whole application. This thesis compares the performance of different Java serialization solutions in the context of a distributed database system called FastormDB. Transaction management in the system is centralized meaning that all nodes must transfer their changes over network to the central transactor node for committing. This requires object serialization and as the amount of change data can be tens of gigabytes, the performance of the chosen serialization solution is critical. We also evaluate several compression methods together with the serializers. Serializers and compressors were first compared using synthetic benchmarks where considerable differences between serializers were found. However, in a throughput benchmark which simulates realistic use of the system the differences were insignificant. Usage of compression was also found to lower throughput despite relatively low network bandwidth. These results are partially explained by the current implementation of the system. This thesis identified some areas of improvement in the system and suggests that the most promising benchmarked technologies are re-evaluated when the improvements have been applied.

Hajautetut järjestelmät ovat nykypäivänä yhä yleisempiä. Näissä järjestelmissä useat noodit kommunikoivat keskenään, tyypillisesti verkkoyhteyden yli, mikä vaatii koneen muistissa olevien objektien serialisointia tavuvirroiksi. Objektien serialisointia käytetään myös perinteisemmissä järjestelmissä. Serialisointia voidaan käyttää esimerkiksi datan tallentamiseen. Koska serialisointi on monissa järjestelmissä keskeinen ja toistuva toiminto, sen suorituskyky on kriittinen koko järjestelmälle. Tässä diplomityössä vertaillaan eri Java-ohjelmointikielen serialisointiratkaisujen suorituskykyä FastormDB-nimisen hajautetun tietokannan yhteydessä. Järjestelmässä transaktionhallinta on toteutettu keskitetysti, mikä tarkoittaa, että noodien täytyy lähettää muutoksensa transaktorinoodille tietokantaan tallennettavaksi. Tämä edellyttää objektien serialisointia ja koska muutosten määrä voi olla jopa kymmeniä gigatavuja, on valitun serialisointiratkaisun suorityskyky ensiarvoisen tärkeää. Työssä myös vertaillaan eri pakkausmenetelmiä yhdessä serialisoijien kanssa. Serialisointi- ja pakkausmenetelmiä verrattiin ensin synteettisissä suorituskykytesteissä, joissa löydettiin huomattavia eroja serialisoijien välillä. Toisaalta läpisyöttötestissä, joka simuloi järjestelmän realistista käyttöä, erot olivat merkityksettömiä. Datan pakkaamisen myös havaittiin huonontavan suoritustehoa verkkoyhteyden melko pienestä kaistanleveydestä huolimatta. Tulokset on osin selitettävissä järjestelmän nykyisellä toteutustavalla. Diplomityössä tunnistettiin joitakin kehitysalueita järjestelmässä ja ehdotetaan lupaavimpien vertailtujen teknologioiden uudelleenarviointia kun parannukset on toteutettu.
Description
Supervisor
Hirvisalo, Vesa
Thesis advisor
Pitkäranta, Tapio
Keywords
Java, object serialization, compression, distributed systems
Other note
Citation