Ceph is a distributed object, block, and file storage platform
Go to file
Adam C. Emerson 074cfc144b Squashed 'src/dmclock/' changes from 1bbd42b8fe..d1ff03b667
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
2017-11-04 00:03:13 -04:00
benchmark Squashed 'src/dmclock/' content from commit d6586d7 2017-04-28 17:13:42 -04:00
cmake/modules Squashed 'src/dmclock/' changes from 1bbd42b8fe..d1ff03b667 2017-11-04 00:03:13 -04:00
sim Squashed 'src/dmclock/' changes from 1bbd42b8fe..d1ff03b667 2017-11-04 00:03:13 -04:00
src Squashed 'src/dmclock/' changes from 1bbd42b8fe..d1ff03b667 2017-11-04 00:03:13 -04:00
support Squashed 'src/dmclock/' changes from 3408cb8f3c..a9e777f08f 2017-09-13 15:48:19 -04:00
test Squashed 'src/dmclock/' changes from 1bbd42b8fe..d1ff03b667 2017-11-04 00:03:13 -04:00
.gitignore Squashed 'src/dmclock/' content from commit d6586d7 2017-04-28 17:13:42 -04:00
.travis.yml Squashed 'src/dmclock/' changes from 1bbd42b8fe..d1ff03b667 2017-11-04 00:03:13 -04:00
CMakeLists.txt Squashed 'src/dmclock/' changes from 64bcc6e..3408cb8 2017-08-04 12:35:34 -04:00
dmclock-config.cmake.in Squashed 'src/dmclock/' content from commit d6586d7 2017-04-28 17:13:42 -04:00
dmclock-targets.cmake Squashed 'src/dmclock/' content from commit d6586d7 2017-04-28 17:13:42 -04:00
README.md Squashed 'src/dmclock/' content from commit d6586d7 2017-04-28 17:13:42 -04:00

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....