[openstack-dev] [scheduler] [heat] Policy specifics (for holistic infrastructure scheduling)

Clint Byrum clint at fewbar.com
Tue Oct 1 06:38:53 UTC 2013


Mike, this has been really fun, but it is starting to feel like a
rabbit hole.

The case for having one feels legitimate. However, at this point, I think
someone will need to actually build it, or the idea is just a pipe dream.

Excerpts from Mike Spreitzer's message of 2013-09-30 19:21:22 -0700:
> OK, let's take the holistic infrastructure scheduling out of Heat.  It 
> really belongs at a lower level anyway.  Think of it as something you slap 
> on top of Nova, Cinder, Neutron, etc. and everything that is going to use 
> them goes first through the holistic scheduler, to give it a chance to 
> make some joint decisions.  Zane has been worried about conflicting 
> decisions being made, but if everything goes through the holistic 
> infrastructure scheduling service then there does not need to be an issue 
> with other parallel decision-making services (more on this below).  For a 
> public cloud, think of this holistic infrastructure scheduling as part of 
> the service that the cloud offers to the public; the public says what it 
> wants, and the various levels of schedulers work on delivering it; the 
> internals are not exposed to the public.  For example, a cloud user may 
> say "spread my cluster across at least two racks, not too unevenly"; you 
> do not want that public cloud customer to be in the business of knowing 
> how many racks are in the cloud, knowing how much each one is currently 
> being used, and picking which rack will contain which members of his 
> cluster.  For a private cloud, the holistic infrastructure scheduler 
> should have the same humility as the lower schedulers: offer enough 
> visibility and control to the clients that they can make decisions if they 
> want to (thus, nobody needs to "go around" the holistic infrastructure 
> scheduler if they already know what they want).
> 
> You do not want to ask the holistic infrastructure scheduler to schedule 
> resources one by one; you want to ask it to allocate a whole 
> pattern/template/topology.  There is thus no need for infrastructure 
> orchestration prior to holistic infrastructure scheduling.
> 
> Once the holistic infrastructure scheduler has done its job, there is a 
> need for infrastructure orchestration.  What should we use for that?
> 
> OK, more on the business of conflicting decisions.  For the sake of 
> scalability and modularity, the holistic infrastructure scheduler should 
> delegate as much decision-making as it can to more specific services.  The 
> job of the holistic infrastructure scheduler is to make joint decisions 
> when there are strong interactions between services.  You can fudge this 
> either way (have the holistic infrastructure scheduler make more or less 
> decisions than ideal), but if you want the best then I think the principle 
> I stated is what would guide.  So what if a delegated decision conflicts 
> with a holistic decision?  Don't do that.  Divide the decision-making 
> responsibilities into distinct domains, for example with the holistic 
> scheduler making relatively big-picture decisions and individual resource 
> services filling in the details.
> 
> That said, there can still be nasty surprises from lower layers.  Even if 
> the design has carefully partitioned decision-making responsibilities, 
> irregular things can still happen (e.g., authorized people can do 
> something unexpected).  Even if nothing intentionally does anything 
> irregular, there remains the possibility of bugs.  The holistic 
> infrastructure scheduler should be prepared for nasty surprises, and 
> getting information that is as authoritative as possible to begin with 
> (promptness doesn't hurt either).
> 
> Then there is the question of the scalability of the holistic 
> infrastructure scheduler.  One hard kernel of that is solving the 
> optimization problem.  Nobody should expect the scheduler to find the 
> truly optimal solution; this is an NP-hard problem.  However, there exist 
> optimization algorithms that produce pretty good approximations in modest 
> amounts of time.  Additionally: if the patterns are small relative to the 
> size of the whole zone being scheduled then it should be possible to do 
> concurrent decision-making with optimistic concurrency control (as Clint 
> has mentioned).
> 
> You would not want one holistic infrastructure scheduler for a whole 
> geographically distributed cloud.  You could use a hierarchical 
> arrangement, with one top-level decision-maker dividing a pattern between 
> availability zones (by which I mean the sort of large independent domains 
> that are typically known by that term) and then a subsidiary scheduler for 
> each availability zone.
> 
> Regards,
> Mike



More information about the OpenStack-dev mailing list