New Scheduler Driver that adds in caching

Registered by John Garbutt

I believe we need to encourage more scheduler innovation, by encouraging more scheduler drivers, allowing people to make different tradeoffs. Some of these may be dead ends, but I hope they may spark better ideas, and some may become the default scheduler, if they prove themselves.

This new driver attempts to:
* generate a list of pre-picked scheduler slots
* when user request hits scheduler, attempts to pick cached decision first

The idea is to do most of the expensive work up front, and do some very reduced filtering/weighting of hosts on each user request.

Implementation wise:
* this is a new driver
* uses the existing host manager for filtering and weighting
* will not have all the features of the existing filter scheduler

The current implementation is designed to work well under a low, but predictable load, when the cloud is also got a reasonable amount of space capacity.

Once this initial draft is complete (this blueprint), we can look at further ideas (in a follow up blueprint) to scale out the scheduler to multiple hosts with either:
* shared scheduler cache (centralised)
* pre-commit resources on a specific compute node's resource manager (de-centralised)

For more details, see the full specification document I have recently added.

UPDATE:
Testing showed the slot based cache mostly slowed things down.

The best benefit if from caching the list of hosts. The current filter scheduler is able to do the rest.

If you have a high rate of deletes (and creates), you can get NoValidHost when there is actually space, but at the next poll period the system would be correctly updated. If you are that low on capacity there are likely to be other issues anyways.

Blueprint information

Status:
Complete
Approver:
John Garbutt
Priority:
Low
Drafter:
John Garbutt
Direction:
Approved
Assignee:
John Garbutt
Definition:
Approved
Series goal:
Accepted for icehouse
Implementation:
Implemented
Milestone target:
milestone icon 2014.1
Started by
John Garbutt
Completed by
John Garbutt

Related branches

Sprints

Whiteboard

kinda rude to approve my own, but I have added the request docs now --johnthetubaguy

Gerrit topic: https://review.openstack.org/#q,topic:bp/caching-scheduler,n,z

Addressed by: https://review.openstack.org/67855
    Add a caching scheduler driver

Addressed by: https://review.openstack.org/69603
    Cache config to speed up scheduler

(?)

Work Items

Work items:
Add new scheduler driver as a beta scheduler: DONE
Compare performance (and features) with filter scheduler, write doc: DONE

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.