MxTasking: Task-based framework with built-in prefetching and synchronization
MxTasking is a task-based framework that assists the design of latch-free and parallel data structures. MxTasking eases the information exchange between applications and the operating system, resulting in novel opportunities to manage resources in a truly hardware- and application-conscious way.
Genode port
This branch contains changes to integral parts of MxTasking to make it runnable on the Genode OS framework.
At the moment it is work-in-progress and is not readily usable. Checkout the master branch to get the upstream version.
Changes in this branch will be merged into master, when the port is finished and working.
Paper
This is the code according to our paper MxTasks: How to Make Efficient Synchronization and Prefetching Easy.
Jan Mühlig and Jens Teubner. 2021. MxTasks: How to Make Efficient Synchronization and Prefetching Easy. SIGMOD '21: International Conference on Management of Data, 1331-1334. Download the PDF
Dependencies
For building
Required
cmake>= 3.10clang>= 10clang-tidy>= 10libnumaorlibnuma-dev
Optional
libgtest-devfor tests intest/
For generating the YCSB workload
python>= 3javacurl
How to build
- Call
cmake .to generateMakefile. - Call
maketo generate all binaries.
How to run
For detailed information please see README files in src/application/<app> folders:
- B Link Tree benchmark (
src/application/blinktree_benchmark) - Hash Join benchmark (
src/application/hashjoin_benchmark)
Simple example for B Link Tree
- Call
make ycsb-ato generate the default workload - Call
./bin/blinktree_benchmark 1:4to run benchmark for one to four cores.
Hello World
We build a small Hello World! example, located in src/application/hello_world.
You might take a look to see how to use MxTasking.
External Libraries
argparse(view on github) under MIT licensejson(view on github) under MIT license- Yahoo! Cloud Serving Benchmark (view on github) under Apache License 2.0