ceph/dmclock

Code that implements the dmclock distributed quality of service algorithm. See "mClock: Handling Throughput Variability for Hypervisor IO Scheduling" by Gulati, Merchant, and Varman.

90

stars

701

commits

C++

primary language

Mar 25, 2025

updated

README

dmclock (deprecated)

This repository contains C++ 11 code that implements the dmclock distributed quality of service algorithm. See mClock: Handling Throughput Variability for Hypervisor IO Scheduling by Gulati, Merchant, and Varman for a description of the algorithm.

Important Notice

This repository has been archived. Due to no known users outside of Ceph, we have moved the dmclock project directly into the Ceph repository to simplify backports and maintenance.

For any contributions or further development of dmclock, please submit pull requests to the Ceph project.

Bugs and features

There is a dmclock project through which bugs can be reported and features requested.

Running cmake

When running cmake, set the build type with either:

-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_BUILD_TYPE=Release

To turn on profiling, run cmake with an additional:

-DPROFILE=yes

Running make

Building the dmclock library

The make command builds a library libdmclock.a. That plus the header files in the src directory allow one to use the implementation in their code.

Building unit tests

The make dmclock-tests command builds unit tests.

Building simulations

The make dmclock-sims command builds two simulations -- dmc_sim and ssched_sim -- which incorporate, respectively, the dmclock priority queue or a very simple scheduler for comparison. Other priority queue implementations could be added in the future.

dmclock API

To be written....

Contributors

ivancich

588 commits

tchaikov

36 commits

Yan-waller

14 commits

cbodley

13 commits

ceph/dmclock

Code that implements the dmclock distributed quality of service algorithm. See "mClock: Handling Throughput Variability for Hypervisor IO Scheduling" by Gulati, Merchant, and Varman.

90

stars

701

commits

C++

primary language

Mar 25, 2025

updated

README

dmclock (deprecated)

This repository contains C++ 11 code that implements the dmclock distributed quality of service algorithm. See mClock: Handling Throughput Variability for Hypervisor IO Scheduling by Gulati, Merchant, and Varman for a description of the algorithm.

Important Notice

This repository has been archived. Due to no known users outside of Ceph, we have moved the dmclock project directly into the Ceph repository to simplify backports and maintenance.

For any contributions or further development of dmclock, please submit pull requests to the Ceph project.

Bugs and features

There is a dmclock project through which bugs can be reported and features requested.

Running cmake

When running cmake, set the build type with either:

-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_BUILD_TYPE=Release

To turn on profiling, run cmake with an additional:

-DPROFILE=yes

Running make

Building the dmclock library

The make command builds a library libdmclock.a. That plus the header files in the src directory allow one to use the implementation in their code.

Building unit tests

The make dmclock-tests command builds unit tests.

Building simulations

The make dmclock-sims command builds two simulations -- dmc_sim and ssched_sim -- which incorporate, respectively, the dmclock priority queue or a very simple scheduler for comparison. Other priority queue implementations could be added in the future.

dmclock API

To be written....

Contributors

ivancich

588 commits

tchaikov

36 commits

Yan-waller

14 commits

cbodley

13 commits

Languages

C++

86.4%

Roff

8.3%

CMake

2.8%

Python

1.6%

Shell

1.0%