styx-uncoordinated-artifact
Code underlying the master thesis: “Uncoordinated Checkpointing in Stateful Transactional Systems: Decoupling Fault Tolerance from Coordination in Styx”
Description
This archive contains the source code, experiment configurations, raw measurements, aggregated results, analysis scripts, tests, documentation, and generated figures supporting the MSc research project Uncoordinated Checkpointing in Stateful Transactional Systems: Decoupling Fault Tolerance from Coordination in Styx. Styx is a distributed runtime for stateful transactional functions. The research investigates whether checkpoint persistence can be decentralized from the coordinator to individual workers without harming steady-state performance, transactional consistency, or recovery.
The evaluation uses a synthetic YCSB+T transactional workload adapted for Styx, consisting of three suites:
- Scalability and checkpointing: Coordinated and uncoordinated checkpoint persistence were compared using 2, 4, 6, 8, 10, and 12 workers. Saturation rates were
identified using a binary search over offered transaction rates, with a median P95 latency below 1,000 ms defining a sustainable rate. Additional sweeps varied
epoch size, checkpoint cadence, checkpoint-trigger strategy, and Zipfian contention.
-
Compaction and recovery: The experiments measured steady-state compaction overhead, state-restoration time, checkpoint-file count, and restoration-time components such as object listing, fetching, deserialization, and merging. Compaction intervals from every checkpoint to every 1,000 checkpoints were evaluated, together with no-compaction and recovery-only compaction configurations. Failures were injected by terminating one of four workers with docker kill/SIGKILL, simulating an immediate crash without graceful shutdown.
-
Partition rebalancing: The experiments compared recovery with and without partition redistribution after a failed worker restarted. Rebalancing overhead and
post-recovery throughput and latency were measured at 40%, 50%, 70%, and 85% of the four-worker saturation rate.
The included README files identify the files and commands required to regenerate each analysis. Reproduction requires Python 3.10, Docker, Docker Compose, and the dependencies listed in the included requirements files.
- Apache-2.0