2022-07-05 18:56:07 +02:00
2021-03-22 18:38:54 +01:00
2021-03-22 18:38:54 +01:00
2022-07-05 18:56:07 +02:00
2021-03-22 18:38:54 +01:00
2021-03-22 18:38:54 +01:00
2021-03-22 18:38:54 +01:00
2021-03-22 18:38:54 +01:00
2021-03-22 18:38:54 +01:00
2021-05-28 11:31:58 +02:00

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.10
  • clang >= 10
  • clang-tidy >= 10
  • libnuma or libnuma-dev

Optional

  • libgtest-dev for tests in test/

For generating the YCSB workload

  • python >= 3
  • java
  • curl

How to build

  • Call cmake . to generate Makefile.
  • Call make to generate all binaries.

How to run

For detailed information please see README files in src/application/<app> folders:

  • 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

Description
Task-based framework for automatic synchronization and memory prefetching. Genode OS port.
Readme MIT 432 KiB
Languages
C++ 98.9%
CMake 0.7%
Python 0.4%