Skip to content

ColeHarten/cs2640-final-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AsyncMux

AsyncMux is an asynchronous multi-tier storage mux built on top of cppcoro. It splits file writes into 4 KiB blocks, stores block metadata, and routes reads and writes to one or more filesystem tiers. The project also includes a small FUSE-facing frontend wrapper and correctness tests for single-tier and multi-tier behavior.

What It Does

  • Splits writes into fixed-size blocks (4096 bytes).
  • Tracks block locations, tiers, and file extents in an in-memory metadata store.
  • Reads data back from the correct tier or stitches together reads across multiple tiers.
  • Supports block migration and promotion between tiers.
  • Exposes a minimal FuseFrontend adapter for filesystem integration.

Repository Layout

.
├── profiles/
│   ├── blockstore_profile.py  # CloudLab profile for the block-store-backed setup
│   └── loopback_profile.py    # CloudLab profile for the loopback-based setup
├── src/
│   ├── CMakeLists.txt         # Source-level CMake configuration
│   ├── amux/                  # AsyncMux implementation and public API
│   ├── bmux/                  # Block-mux implementation
│   ├── tests/                 # Benchmarks, correctness tests, and analysis helpers
│   └── third_party/cppcoro/   # Vendored cppcoro dependency
├── build/                     # Local build output
├── README.md                  # Project overview and usage notes
└── src/Dockerfile, src/Makefile

Prerequisites

  • CloudLab access
  • Git submodules initialized, including third_party/cppcoro

If the cppcoro headers are missing, initialize the submodule with:

git submodule update --init --recursive

Build and Run

This project is intended to be built and run in CloudLab using the associated profiles in profiles/.

If you are updating the code locally, you can still use the existing CMake output in build/ as a reference, but the supported execution path is CloudLab.

Correctness Tests

  • single_fs exercises the core read/write path against one filesystem tier.
  • multiple_fs mounts and verifies several filesystems, so it should be run in the CloudLab environment provided by the profiles.

Performance Tests

The performance test suite can be run using the included shell script run_benchmark_tests.sh.

Clean

Remove the local CMake build output directory if you created one during local development:

rm -rf build/

Implementation Notes

Troubleshooting

  • If the build fails with missing cppcoro headers, initialize submodules first.
  • If multiple_fs fails, make sure you are running in the CloudLab environment defined by the profiles.

About

AsyncMux

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors