Unified Resource Placement Module for OpenStack

Registered by Senhua Huang on 2013-03-07

This unified resource placement module selects a bunch of compute/storage/networking nodes to place a virtual cluster. This is a higher level module that sits on top of nova-compute, quantum, and cinder to decide which instance of the virtual cluster goes to which compute/storage/network node in order to achieve performance guarantee (e.g., less latency if storage sits on the same compute node as the vm and better reliability if the replicated storage block is on a compute node that is not under the same top of rack switch). The module should be plug-able in the sense that new algorithms can be easily developed and used without the need to expose different API's to the end users (admins or tenants). One of the key points is to have a good abstraction and clear separation of resource placement from work flow management.

The first use case is make sure that the server and the volume is collocated on the same host, availability zone, rack, and so on (decreasing order of IO performance).
The idea is to define an API to allow user to specify a group of instances of different types (e.g., server and volume) and specify the relationship among these instances.

Dependency on other blue prints
- vcluster-api-extension:
- Implement a _schedule method that can allocate resources for both VM and volume
-- The same schedule should be used for VM and volume scheduling and should reach the same scheduling results for both VM and volume. But Nova will just take the compute-host while Cinder will take only the volume-host for schedule_run_instance.
-- maybe a new MultFilterSchedule so as not to mess up with the existing FilterSchedule class.

Blueprint information

Russell Bryant
Senhua Huang
Needs approval
Senhua Huang
Series goal:
Not started
Milestone target:
Completed by
Russell Bryant on 2013-07-30

Related branches



Senhua Huang is no longer working on OpenStack, so I'm going to close this out.


Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.