Ceph is a distributed object, block, and file storage platform
Go to file
J. Eric Ivancich 4363837772 Squashed 'src/dmclock/' changes from 64bcc6e..3408cb8
3408cb8 Merge pull request #33 from ceph/wip-move-make-options-up
f2099ec Moved the check for cmake's DO_NOT_DELAY_TAG_CALC to the top level, so it will affect how tests are built.
437b247 Merge pull request #32 from ceph/wip_add_void_comments
18dd014 Add documentation as to why there are empty void references.
3ddfa39 Merge pull request #28 from Yan-waller/wip-waller-0710dmclockgettime
57520df Merge pull request #31 from dingdangzhang/master
4cad292 delete redundant break statement
b179f3b Merge pull request #29 from tchaikov/wip-cmake
76d5f35 cmake: build gtest if not found
9896fef Merge pull request #30 from tchaikov/wip-move
d72fac1 do FRIEND_TEST manually
f4b155d enforce move semantics of request types
8a2ad2a replace gettimeofday() with clock_gettime() function
b84ccf9 Merge pull request #27 from ceph/joelin-master-ei
34a6e25 Set compiler flags at higher level CMakeLists.txt file, so they apply to sim and test, and so earlier versions of GCC know to use c++11 standard. Clean up cmake files in general.
bad581a Move the PrCtl data structure into a separate header file that can be included where needed in the future. Also, to avoid potential naming conflicts with ceph's PrCtl.h, prefix the filename with "dmc".
1b227bf Merge pull request #25 from badone/wip-test_dmclock_server-coredump
ee1866e dmclock: Don't dump core when using EXPECT_DEATH_IF_SUPPORTED

git-subtree-dir: src/dmclock
git-subtree-split: 3408cb8f3c
2017-08-04 12:35:34 -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 64bcc6e..3408cb8 2017-08-04 12:35:34 -04:00
sim Squashed 'src/dmclock/' changes from 64bcc6e..3408cb8 2017-08-04 12:35:34 -04:00
src Squashed 'src/dmclock/' changes from 64bcc6e..3408cb8 2017-08-04 12:35:34 -04:00
support Squashed 'src/dmclock/' changes from d6586d7..64bcc6e 2017-06-06 15:01:02 -04:00
test Squashed 'src/dmclock/' changes from 64bcc6e..3408cb8 2017-08-04 12:35:34 -04:00
.gitignore Squashed 'src/dmclock/' content from commit d6586d7 2017-04-28 17:13:42 -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....