074cfc144b
d1ff03b667 Merge pull request #44 from adamemerson/wip-system-includes 4cc4b949ca build: Mark dependency includes as SYSTEM in dmclock 05096c1756 Merge pull request #43 from TaewoongKim/anticipation_conf f356c45461 Add missing anticipation_timeout argument for PullPriorityQueue constructor 9896448ec5 Merge pull request #42 from tchaikov/wip-cmake 979899ef86 add travis CI on gnu/linux 8a3dabdbee cmake: the built archives are located in ${binary_dir} ee15ced3e9 cmake: check for include in /usr/include also git-subtree-dir: src/dmclock git-subtree-split: d1ff03b667d9551478b2803ea533fc356ca441a9 |
||
---|---|---|
benchmark | ||
cmake/modules | ||
sim | ||
src | ||
support | ||
test | ||
.gitignore | ||
.travis.yml | ||
CMakeLists.txt | ||
dmclock-config.cmake.in | ||
dmclock-targets.cmake | ||
README.md |
dmclock
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.
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
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
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....