Transparently replace domain sockets with a fast shared memory channel
Clone or download
Latest commit 93088d1 Aug 29, 2016
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
include Fixed include issues in common poll overrides and removed debug output Aug 28, 2016
other Adding some notes on inter-process TSSX selectivity Aug 28, 2016
scripts Fixed command line parsing in run scripts Aug 28, 2016
source Removed error checking from final mutex destructors Aug 28, 2016
try Removed some debug from try-poll Aug 28, 2016
.clang-format Migrated necessary utility code from ipc-bench Aug 8, 2016
.gitignore
CMakeLists.txt Fixed bugs in concurrent polling Aug 8, 2016
LICENSE Adding separate LICENSE and README.md Aug 7, 2016
README.md Update README.md Aug 29, 2016

README.md

TSSX

GitHub license

TSSX stands for transparent shared-memory socket exchange and is a system-level C library that silently replaces domain socket communication with a custom shared memory data channel, promising performance improvements up to an order of magnitude.

Usage

One of the core goals of TSSX is to be incredibly easy and hassle-free to integrate into your system. We use the LD_PRELOAD trick to transparently overwrite system-call symbols with our own, using the dynamic linker. As such, if ./happy-banana-server and ./happy-banana-client are your executables using write/read, send/recv or similar system-calls to communicate over domains sockets, then the following lines will execute your application with TSSX:

$ LD_PRELOAD=$PWD/path/to/libtssx-server.so ./happy-banana-server
$ LD_PRELOAD=$PWD/path/to/libtssx-client.so ./happy-banana-client

where libtssx-server.so and libtssx-client.so are the result of compiling our library. And that is it! You don't have to recompile a single line, the dynamic linker does all the magic for you. We support the complete standard Berkeley Socket API, with light implementations of fcntl to the extent that is relevant to domain sockets.

Compiling

The project can be built using CMake on Linux and OS X:

mkdir build
cd build
cmake ..
make

Which will compile the TSSX library into the build/source/tssx path. We also provide example programs in the try/ folder, compiled into build/try, with appropriate run scripts (for convenience) in the scripts/ directory (run them from build/try).

Publication

We are working on a publication and will update this section accordingly in the near future.

Authors

TSSX is developed by Peter Goldsborough, Alexander van Renen and Viktor Leis at the Chair for Database Systems of Technical University of Munich (TUM).