mxtasking
mxtasking copied to clipboard
Task-based framework for automatic synchronization and memory prefetching.
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.
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.10
-
clang
>= 10
-
clang-tidy
>= 10
-
libnuma
orlibnuma-dev
Optional
-
libgtest-dev
for tests intest/
For generating the YCSB workload
-
python
>= 3
-
java
-
curl
How to build
- Call
cmake .
to generateMakefile
. - Call
make
to 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-a
to generate the default workload - Call
./bin/blinktree_benchmark 1:4
to 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 license -
json
(view on github) under MIT license - Yahoo! Cloud Serving Benchmark (view on github) under Apache License 2.0