@incollection{eprints3711, author = {Roberta Barbi and Vitaly Buravlev and Claudio Antares Mezzina and Valerio Schiavoni}, publisher = {Springer}, booktitle = {Distributed Applications and Interoperable Systems - 17th IFIP WG 6.1 International Conference, DAIS 2017}, pages = {67--82}, volume = {10320}, year = {2017}, title = {Block Placement Strategies for Fault-Resilient Distributed Tuple Spaces: An Experimental Study - (Practical Experience Report)}, series = {Lecture Notes in Computer Science}, url = {http://eprints.imtlucca.it/3711/}, abstract = {The tuple space abstraction provides an easy-to-use programming paradigm for distributed applications. Intuitively, it behaves like a distributed shared memory, where applications write and read entries (tuples). When deployed over a wide area network, the tuple space needs to efficiently cope with faults of links and nodes. Erasure coding techniques are increasingly popular to deal with such catastrophic events, in particular due to their storage efficiency with respect to replication. When a client writes a tuple into the system, this is first striped into k blocks and encoded into n {\ensuremath{>}} k blocks, in a fault-redundant manner. Then, any k out of the n blocks are sufficient to reconstruct and read the tuple. This paper presents several strategies to place those blocks across the set of nodes of a wide area network, that all together form the tuple space. We present the performance trade-offs of different placement strategies by means of simulations and a Python implementation of a distributed tuple space. Our results reveal important differences in the efficiency of the different strategies, for example in terms of block fetching latency, and that having some knowledge of the underlying network graph topology is highly beneficial} }