A set of C++ components for setting up and managing a real computing testbed.
The system under test (SUT) is managed by exploiting virtualization technologies and, in particular, by using the libvirt library. This testbed allows the experimenter to perform both system identification and resource management experiments
This project has been used in the experimental evaluations presented in the following articles:
Cosimo Anglano, Massimo Canonico and Marco Guazzone.
FCMS: a Fuzzy Controller for CPU and Memory Consolidation under SLA Constraints
Concurrency and Computation: Practice and Experience, 29(5), 2017.
doi:10.1002/cpe.3968.
Cosimo Anglano, Massimo Canonico and Marco Guazzone
FC2Q: Exploiting Fuzzy Control in Server Consolidation for Cloud Applications with SLA Constraints
Concurrency Computat.: Pract. Exper., 27(17):4491-4514, 2015.
doi: 10.1002/cpe.3410
Luca Albano, Cosimo Anglano, Massimo Canonico and Marco Guazzone
Fuzzy Q&E: Achieving QoS Guarantees and Energy Savings for Cloud Applications with Fuzzy Control
2013 International Conference on Cloud and Green Computing (2013), Karlsruhe, Germany, pp. 159-166, 2013.
doi: 10.1109/CGC.2013.31
Please, cite this project as at least one of the following papers (BibTeX format):
@ARTICLE{CPE:CPE3968,
author = {Cosimo Anglano and Massimo Canonico and Marco Guazzone},
title = {{FCMS}: a Fuzzy Controller for {CPU} and Memory Consolidation under {SLA} Constraints}
journal = {Concurrency and Computation: Practice and Experience},
year = {2017},
volume = {29},
number = {5},
pages = {e3968--n/a}
doi = {10.1002/cpe.3968},
url = {http://dx.doi.org/10.1002/cpe.3968},
issn = {1532-0634},
keywords = {cloud computing, resource management, feedback control, fuzzy control, server consolidation, virtualized cloud applications},
}
@ARTICLE{CPE:CPE3410,
author = {Cosimo Anglano and Massimo Canonico and Marco Guazzone},
title = {{FC2Q}: Exploiting Fuzzy Control in Server Consolidation for Cloud Applications with {SLA} Constraints},
journal = {Concurrency and Computation: Practice and Experience},
volume = {27},
number = {17},
pages = {4491--4514},
year = {2015},
issn = {1532-0634},
url = {http://dx.doi.org/10.1002/cpe.3410},
doi = {10.1002/cpe.3410},
keywords = {cloud computing, resource management, feedback control, fuzzy control, server consolidation, virtualized cloud applications},
}
@INPROCEEDINGS{6686023,
author = {Luca Albano and Cosimo Anglano and Massimo Canonico and Marco Guazzone},
booktitle = {2013 International Conference on Cloud and Green Computing},
title = {Fuzzy-{Q}{\&}{E}: Achieving QoS Guarantees and Energy Savings for Cloud Applications with Fuzzy Control},
year = {2013},
pages = {159-166},
month = {Sept},
doi = {10.1109/CGC.2013.31},
url = {http://dx.doi.org/10.1109/CGC.2013.31},
keywords = {cloud computing; fuzzy control; power aware computing; quality of experience; quality of service; virtual machines; QoS; VMs; Xen-based testbed; bursty workload; cloud application management; dynamic workload; e-commerce benchmark; energy consumption; energy savings; fuzzy controller; fuzzy-Q&E; physical capacity; physical infrastructure; quality-of-services; virtual machines; Benchmark testing; Fuzzy control; IP networks; Pragmatics; Quality of service; Time factors; Virtual machine monitors},
}
- A modern C++98 compiler (e.g., GCC v4.8 or newer is fine)
- Boost C++ libraries (v1.60 or newer)
- Boost.Numeric Bindings library (v2 or newer)
- Boost.uBLASx library (v1 or newer)
- dcsxx-commons library (v2 or newer)
- dcsxx-control library (v2 or newer)
- dcsxx-sysid library (v1 or newer)
- fuzzylite fuzzy logic control library (v5 or newer)
- fuzzylitex fuzzy logic control library (v1.1.1 or newer)
- jsoncpp C++ library for interacting with JSON (v0.6 or newer)
- LAPACK Linear Algebra PACKage (v3.5 or newer)
- libvirt virtualization API library (v1 or newer)
- ... and related prerequisites
-
Edit the
Makefile
file to properly set library paths, specifically:-
boost_header_path
is the path to the Boost header files; for instance:boost_header_path=/usr/include
-
boost_libs_path
is the path to the Boost library files; for instance:boost_libs_path=/usr/lib64
-
boost_numeric_bindings_home
is the base path of the Boost.NumericBindings library; for instance:boost_numeric_bindings_home=/opt/boost-numeric_bindings
-
boost_ublasx_home
is the base path of the Boost.uBLASx library; for instance:boost_ublasx_home=/opt/boost-ublasx
-
dcsxx_commons_home
is the base path of the dcsxx-commons library; for instance:dcsxx_commons_home=/opt/dcsxx-commons
-
dcsxx_control_home
is the base path of the dcsxx-control library; for instance:dcsxx_control_home=/opt/dcsxx-control
-
dcsxx_sysid_home
is the base path of the dcsxx-sysid library; for instance:dcsxx_sysid_home=/opt/dcsxx-sysid
-
fuzzylite_header_path
is the path to the fuzzylite header files; for instance:fuzzylite_header_path=/usr/include
-
fuzzylite_libs_path
is the path to the fuzzylite library files; for instance:fuzzylite_libs_path=/usr/lib64
-
fuzzylitex_home
is the base path of the fuzzylitex library; for instance:fuzzylitex_home=/opt/fuzzylitex
-
-
If not already done, compile the fuzzylitex library in the related directory.
-
Run the
make
program$ make
In addition to the compile-time prerequisites, you also need:
- [optional] RAIN Workload toolkit (development version)
- [optional] YCSB benchmark (development version)
-
Run:
$ ./src/sysmgt {options}
-
To get a complete list of all supported command-line options, run:
$ ./src/sysmgt --help