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.
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
An optimization/fix to the published algorithm has been added and is on by default. To disable this optimization/fix run cmake with:
-DDO_NOT_DELAY_TAG_CALC=yes
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.
The make dmclock-tests
command builds unit tests.
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.
To be written....