Dynamic resource scheduling service for OpenStack cloud.
Go to file
2015-03-31 15:44:48 +11:00
doc/blueprint Added the Requests library, removed sniffer 2012-09-19 14:45:26 +10:00
init.d Added an initscript for the db cleaner 2012-10-15 14:34:41 +11:00
neat Upgraded to novaclient.v2 2015-03-31 15:44:48 +11:00
setup fix centOS deps 2015-01-22 12:07:40 -03:00
tests Upgraded to novaclient.v2 2015-03-31 15:44:48 +11:00
utils Added scripts for printing real-time system statistics 2013-01-18 11:55:00 +11:00
.gitignore Added a manifest, fixed bdist_rpm 2012-10-03 17:40:48 +10:00
.travis.yml Fixed a typo 2013-01-25 11:39:40 +11:00
all-clean-logs.sh Added a script for deleting all log files 2012-11-20 16:47:59 +11:00
all-start.sh Added db-cleaner to the all-start scripts 2012-11-21 19:13:20 +11:00
all-stop.sh Added db-cleaner to the all-start scripts 2012-11-21 19:13:20 +11:00
all-sync-time.sh Added scripts for syncing time on all the nodes 2013-02-02 11:18:19 +11:00
all-update.sh Added a script for updating the installation on all the hosts 2012-12-03 10:24:24 +11:00
build-rpm.sh Added a script for generating an RPM 2012-10-04 17:50:19 +10:00
compute-clean-logs.py Added a script for deleting log files on compute hosts 2012-10-20 15:44:16 +11:00
compute-clone-neat.py Made the compute-* scripts executable 2012-10-05 15:53:23 +10:00
compute-copy-conf.py Made the compute-* scripts executable 2012-10-05 15:53:23 +10:00
compute-data-collector-start.py Made the compute-* scripts executable 2012-10-05 15:53:23 +10:00
compute-data-collector-status.py Made the compute-* scripts executable 2012-10-05 15:53:23 +10:00
compute-data-collector-stop.py Made the compute-* scripts executable 2012-10-05 15:53:23 +10:00
compute-install-deps.py Added a script for install deps on compute hosts on CentOS 2012-11-14 17:15:20 +11:00
compute-install-neat.py Added -f to setup.py install 2012-10-05 15:57:19 +10:00
compute-local-manager-start.py Made the compute-* scripts executable 2012-10-05 15:53:23 +10:00
compute-local-manager-status.py Made the compute-* scripts executable 2012-10-05 15:53:23 +10:00
compute-local-manager-stop.py Made the compute-* scripts executable 2012-10-05 15:53:23 +10:00
compute-sync-time.py Added scripts for syncing time on all the nodes 2013-02-02 11:18:19 +11:00
compute-update.py Made the compute-* scripts executable 2012-10-05 15:53:23 +10:00
distribute_setup.py Added the distribute bootstrap script and setup.py 2012-07-25 16:41:23 +10:00
install-rpm.sh Added a script for building and installing the rpm 2012-10-04 18:41:26 +10:00
LICENSE Added the Apache 2.0 license, header, and notice file 2012-08-02 15:55:15 +10:00
MANIFEST.in Added neat.conf to setup.py 2012-10-05 10:18:24 +10:00
neat.conf Changed the default limit parameter for the OTF algorithm 2013-02-06 17:56:10 +11:00
nosetests.sh Made the test runner accept a package argument to run tests from 2012-10-23 16:34:14 +11:00
NOTICE Added libvirt to the NOTICE file 2012-11-18 19:26:53 +11:00
README.md Added the travis badge 2015-03-24 14:32:50 +11:00
setup.py Updated setup.py to include the db cleaner 2012-10-15 14:36:13 +11:00
start-data-collector.py Made start script non-executable 2012-10-03 11:05:11 +10:00
start-global-manager.py Made start script non-executable 2012-10-03 11:05:11 +10:00
start-local-manager.py Made start script non-executable 2012-10-03 11:05:11 +10:00
stats.sh Added scripts for printing real-time system statistics 2013-01-18 11:55:00 +11:00
TODO Added a todo about neat.conf 2012-10-04 18:42:26 +10:00
vm-placement.py Upgraded to novaclient.v2 2015-03-31 15:44:48 +11:00

OpenStack Neat: A Framework for Dynamic Consolidation of Virtual Machines in Openstack Clouds

Build Status

OpenStack Neat is an extension to OpenStack implementing dynamic consolidation of Virtual Machines (VMs) using live migration. The major objective of dynamic VM consolidation is to improve the utilization of physical resources and reduce energy consumption by re-allocating VMs using live migration according to their real-time resource demand and switching idle hosts to the sleep mode.

For example, assume that two VMs are placed on two different hosts, but the combined resource capacity required by the VMs to serve the current load can be provided by just one of the hosts. Then, one of the VMs can be migrated to the host serving the other VM, and the idle host can be switched to a low power mode to save energy. When the resource demand of either of the VMs increases, they get deconsolidated to avoid performance degradation. This process is dynamically managed by OpenStack Neat.

In general, the problem of dynamic VM consolidation can be split into 4 sub-problems:

  • Deciding when a host is considered to be underloaded, so that all the VMs should be migrated from it, and the host should be switched to a low power mode, such as the sleep mode.
  • Deciding when a host is considered to be overloaded, so that some VMs should be migrated from the host to other hosts to avoid performance degradation.
  • Selecting VMs to migrate from an overloaded host out of the full set of the VMs currently served by the host.
  • Placing VMs selected for migration to other active or re-activated hosts.

The aim of the OpenStack Neat project is to provide an extensible framework for dynamic consolidation of VMs based on the OpenStack platform. The framework provides an infrastructure enabling the interaction of components implementing the 4 decision-making algorithms listed above. The framework allows configuration-driven switching of different implementations of the decision-making algorithms. The implementation of the framework includes the algorithms proposed in our publications [1], [2].

More details

For more information please refer to the paper describing the architecture and implementation of OpenStack Neat and Chapter 6 of Anton Beloglazov's PhD thesis: http://beloglazov.info/thesis.pdf

Installation

Unfortunately, there is no clear installation and usage guide yet. However, the basic installation steps are the following:

  1. Clone the repository on every compute and controller node.
  2. Adjust the configuration by modifying neat.conf file in the repo directory on every node.
  3. Install the package by running the following command from the repo directory on every node: sudo python setup.py install
  4. Start the services by running the following command on the controller: sudo ./all-start.sh

You can monitor the current VM placement using the ./vm-placement.py script.

Some information about running experiments on the system can be found in the following thread: https://groups.google.com/forum/#!topic/openstack-neat/PKz2vpKPMcA

Who we are

This work is conducted within the Cloud Computing and Distributed Systems (CLOUDS) Laboratory at the University of Melbourne: http://www.cloudbus.org/

The problem of dynamic VM consolidation considering Quality of Service (QoS) constraints has been studied from the theoretical perspective and algorithms addressing the sub-problems listed above have been proposed [1], [2]. The algorithms have been evaluated using CloudSim and real-world workload traces collected from more than a thousand PlanetLab VMs hosted on servers located in more than 500 places around the world.

Discussion group / mailing list

Please feel free to post any questions or suggestions in the project's discussion group: http://groups.google.com/group/openstack-neat

Issues / bugs

Please submit any bugs you encounter or suggestions for improvements to our issue tracker: http://github.com/beloglazov/openstack-neat/issues

Publications

[1] Anton Beloglazov and Rajkumar Buyya, "OpenStack Neat: A Framework for Dynamic and Energy-Efficient Consolidation of Virtual Machines in OpenStack Clouds", Concurrency and Computation: Practice and Experience (CCPE), John Wiley & Sons, Ltd, USA, 2014 (in press, accepted on 19/05/2014).

Download: http://beloglazov.info/papers/2014-ccpe-openstack-neat.pdf

[2] Anton Beloglazov, "Energy-Efficient Management of Virtual Machines in Data Centers for Cloud Computing", PhD Thesis, The University of Melbourne, 2013.

Download: http://beloglazov.info/thesis.pdf

[3] Anton Beloglazov and Rajkumar Buyya, "Managing Overloaded Hosts for Dynamic Consolidation of Virtual Machines in Cloud Data Centers Under Quality of Service Constraints", IEEE Transactions on Parallel and Distributed Systems (TPDS), Volume 24, Issue 7, Pages 1366-1379, IEEE CS Press, USA, 2013.

Download: http://beloglazov.info/papers/2013-tpds-managing-overloaded-hosts.pdf

[4] Anton Beloglazov and Rajkumar Buyya, "Optimal Online Deterministic Algorithms and Adaptive Heuristics for Energy and Performance Efficient Dynamic Consolidation of Virtual Machines in Cloud Data Centers", Concurrency and Computation: Practice and Experience (CCPE), Volume 24, Issue 13, Pages: 1397-1420, John Wiley & Sons, Ltd, New York, USA, 2012.

Download: http://beloglazov.info/papers/2012-ccpe-vm-consolidation-algorithms.pdf

License

The source code is distributed under the Apache 2.0 license.

Copyright (C) 2012-2014 Anton Beloglazov.