Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

2014-07-27 Thread Robert Collins
On 16 July 2014 03:45, Debojyoti Dutta ddu...@gmail.com wrote:
 https://etherpad.openstack.org/p/SchedulerUseCases

 [08:43:35] n0ano #action all update the use case etherpad
 athttps://etherpad.openstack.org/p/SchedulerUseCases

 Please update your use cases here ..

Added.

-Rob

-- 
Robert Collins rbtcoll...@hp.com
Distinguished Technologist
HP Converged Cloud

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

2014-07-17 Thread Sylvain Bauza
Le 17/07/2014 01:24, Robert Collins a écrit :
 On 15 July 2014 06:10, Jay Pipes jaypi...@gmail.com wrote:

 Frankly, I don't think a lot of the NFV use cases are well-defined.

 Even more frankly, I don't see any benefit to a split-out scheduler to a
 single NFV use case.


 Don't you see each Summit the lots of talks (and people attending
 them) talking about how OpenStack should look at Pets vs. Cattle and
 saying that the scheduler should be out of Nova ?

 There's been no concrete benefits discussed to having the scheduler outside
 of Nova.

 I don't really care how many people say that the scheduler should be out of
 Nova unless those same people come to the table with concrete reasons why.
 Just saying something is a benefit does not make it a benefit, and I think
 I've outlined some of the very real dangers -- in terms of code and payload
 complexity -- of breaking the scheduler out of Nova until the interfaces are
 cleaned up and the scheduler actually owns the resources upon which it
 exercises placement decisions.
 I agree with the risks if we get it wrong.

 In terms of benefits, I want to do cross-domain scheduling: 'Give me
 five Galera servers with no shared non-HA infrastructure and
 resiliency to no less than 2 separate failures'. By far the largest
 push back I get is 'how do I make Ironic pick the servers I want it
 to' when talking to ops folk about using Ironic. And when you dig into
 that, it falls into two buckets:
  - role based mappings (e.g. storage optimised vs cpu optimised) -
 which Ironic can trivially do
  - failure domain and performance domain optimisation
- which Nova cannot do at all today.

 I want this very very very badly, and I would love to be pushing
 directly on it, but its just under a few other key features like
 'working HA' and 'efficient updates' that sadly matter more in the
 short term.


I share your views on what should be the scheduler, once pushed out of Nova.
As I said, there are various concerns and asked features for the
scheduler that are missing here and now, and which are too big to be fit
in Nova.

In order to make sure we're going into the right direction, we decided
during last Gantt meeting to provide usecases where an external
Scheduler could be interesting. Don't hesitate to add your baremetal
usecases (for deployment with TripleO or others) in there :
https://etherpad.openstack.org/p/SchedulerUseCases

Take it as a first attempt to identify what would be the mission
statement for Gantt, if you wish.



 Sorry, I'm not following you. Who is saying to Gantt I want to store this
 data?

 All I am saying is that the thing that places a resource on some provider of
 that resource should be the thing that owns the process of a requester
 *claiming* the resources on that provider, and in order to properly track
 resources in a race-free way in such a system, then the system needs to
 contain the resource tracker.
 Trying to translate that:
  - the scheduler (thing that places a resource)
  - should own the act of claiming a resource
  - to avoid races the scheduler should own the tracker

 So I think we need to aknowledge that Right Now we have massive races.
 We can choose where we put our efforts - we can try to fix them in the
 current architecture, we can try to fix them by changing the
 architecture.

 I think you agree that the current architecture is wrong; and that
 from a risk perspective the gantt extraction should not change the
 architecture - as part of making it graceful and cinder-like with
 immediate use by Nova.

 But once extracted the architecture can change - versioned APIs FTW.

 To my mind the key question is not whether the thing will be *better*
 with gantt extracted, it is whether it will be *no worse*, while
 simultaneously enabling a bunch of pent up demand in another part of
 the community.

 That seems hard to answer categorically, but it seems to me the key
 risk is whether changing the architecture will be too hard / unsafe
 post extraction.

 However in Nova it takes months and months to land things (and I'm not
 poking here - TripleO has the same issue at the moment) - I think
 there is a very real possibility that gantt can improve much faster
 and efficiently as a new project, once forklifted out. Patches to Nova
 to move to newer APIs can be posted and worked with while folk work on
 other bits of key plumbing like performance (e.g. not loading every
 host in the entire cloud into ram on every scheduling request),
 scalability (e.g. elegantly solving the current racy behaviour between
 different scheduler instances) and begin the work to expose the
 scheduler to neutron and cinder.


Unless I misunderstood (and that happens, I'm badly human - and French
-), I'm giving a +2 to your statement : yes, there are race conditions
in the scheduler (and I saw the bug you filed and I'm hesitating to
handle it now), yes the scheduler is not that perfect now, yes we should
ensure that claiming a resource should be 'ACID' 

Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

2014-07-15 Thread Sylvain Bauza
Le 14/07/2014 20:10, Jay Pipes a écrit :
 On 07/14/2014 10:16 AM, Sylvain Bauza wrote:
 Le 12/07/2014 06:07, Jay Pipes a écrit :
 On 07/11/2014 07:14 AM, John Garbutt wrote:
 On 10 July 2014 16:59, Sylvain Bauza sba...@redhat.com wrote:
 Le 10/07/2014 15:47, Russell Bryant a écrit :
 On 07/10/2014 05:06 AM, Sylvain Bauza wrote:
 Hi all,

 === tl;dr: Now that we agree on waiting for the split
 prereqs to be done, we debate on if ResourceTracker should
 be part of the scheduler code and consequently Scheduler
 should expose ResourceTracker APIs so that Nova wouldn't
 own compute nodes resources. I'm proposing to first come
 with RT as Nova resource in Juno and move ResourceTracker
 in Scheduler for K, so we at least merge some patches by
 Juno. ===

 Some debates occured recently about the scheduler split, so
 I think it's important to loop back with you all to see
 where we are and what are the discussions. Again, feel free
 to express your opinions, they are welcome.
 Where did this resource tracker discussion come up?  Do you
 have any references that I can read to catch up on it?  I
 would like to see more detail on the proposal for what should
 stay in Nova vs. be moved.  What is the interface between
 Nova and the scheduler here?

 Oh, missed the most important question you asked. So, about
 the interface in between scheduler and Nova, the original
 agreed proposal is in the spec
 https://review.openstack.org/82133 (approved) where the
 Scheduler exposes : - select_destinations() : for querying the
 scheduler to provide candidates - update_resource_stats() : for
 updating the scheduler internal state (ie. HostState)

 Here, update_resource_stats() is called by the
 ResourceTracker, see the implementations (in review)
 https://review.openstack.org/82778 and
 https://review.openstack.org/104556.

 The alternative that has just been raised this week is to
 provide a new interface where ComputeNode claims for resources
 and frees these resources, so that all the resources are fully
 owned by the Scheduler. An initial PoC has been raised here
 https://review.openstack.org/103598 but I tried to see what
 would be a ResourceTracker proxified by a Scheduler client here
 : https://review.openstack.org/105747. As the spec hasn't been
 written, the names of the interfaces are not properly defined
 but I made a proposal as : - select_destinations() : same as
 above - usage_claim() : claim a resource amount -
 usage_update() : update a resource amount - usage_drop(): frees
 the resource amount

 Again, this is a dummy proposal, a spec has to written if we
 consider moving the RT.

 While I am not against moving the resource tracker, I feel we
 could move this to Gantt after the core scheduling has been
 moved.

 Big -1 from me on this, John.

 Frankly, I see no urgency whatsoever -- and actually very little
 benefit -- to moving the scheduler out of Nova. The Gantt project I
 think is getting ahead of itself by focusing on a split instead of
 focusing on cleaning up the interfaces between nova-conductor,
 nova-scheduler, and nova-compute.


 -1 on saying there is no urgency. Don't you see the NFV group saying
 each meeting what is the status of the scheduler split ?

 Frankly, I don't think a lot of the NFV use cases are well-defined.

 Even more frankly, I don't see any benefit to a split-out scheduler to
 a single NFV use case.

I don't know if you can, but if you're interested in giving feedback to
the NFV team, we do run weekly meeting on #openstack-meeting-alt every
Wednesday 2pm UTC.

You can find a list of all the associated blueprints here
https://wiki.openstack.org/wiki/Teams/NFV#Active_Blueprints whose list
is processed hourly by a backend script so it generates a Gerrit
dashboard accessible here : http://nfv.russellbryant.net

By saying that, you can find
https://blueprints.launchpad.net/nova/+spec/solver-scheduler as a
possible use-case for NFV.
As Paul and Yathi said, there is a need for a global resource placement
engine able to cope with both network and compute resources if we need
to provide NFV use-cases, that appears to me quite clearly and that's
why I joined the NFV team.


 Don't you see each Summit the lots of talks (and people attending
 them) talking about how OpenStack should look at Pets vs. Cattle and
 saying that the scheduler should be out of Nova ?

 There's been no concrete benefits discussed to having the scheduler
 outside of Nova.

 I don't really care how many people say that the scheduler should be
 out of Nova unless those same people come to the table with concrete
 reasons why. Just saying something is a benefit does not make it a
 benefit, and I think I've outlined some of the very real dangers -- in
 terms of code and payload complexity -- of breaking the scheduler out
 of Nova until the interfaces are cleaned up and the scheduler actually
 owns the resources upon which it exercises placement decisions.

 From an operator perspective, people waited so long for having a
 

Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

2014-07-15 Thread Debojyoti Dutta
https://etherpad.openstack.org/p/SchedulerUseCases

[08:43:35] n0ano #action all update the use case etherpad
athttps://etherpad.openstack.org/p/SchedulerUseCases

Please update your use cases here ..

thx
debo

On Tue, Jul 15, 2014 at 2:50 AM, Sylvain Bauza sba...@redhat.com wrote:
 Le 14/07/2014 20:10, Jay Pipes a écrit :
 On 07/14/2014 10:16 AM, Sylvain Bauza wrote:
 Le 12/07/2014 06:07, Jay Pipes a écrit :
 On 07/11/2014 07:14 AM, John Garbutt wrote:
 On 10 July 2014 16:59, Sylvain Bauza sba...@redhat.com wrote:
 Le 10/07/2014 15:47, Russell Bryant a écrit :
 On 07/10/2014 05:06 AM, Sylvain Bauza wrote:
 Hi all,

 === tl;dr: Now that we agree on waiting for the split
 prereqs to be done, we debate on if ResourceTracker should
 be part of the scheduler code and consequently Scheduler
 should expose ResourceTracker APIs so that Nova wouldn't
 own compute nodes resources. I'm proposing to first come
 with RT as Nova resource in Juno and move ResourceTracker
 in Scheduler for K, so we at least merge some patches by
 Juno. ===

 Some debates occured recently about the scheduler split, so
 I think it's important to loop back with you all to see
 where we are and what are the discussions. Again, feel free
 to express your opinions, they are welcome.
 Where did this resource tracker discussion come up?  Do you
 have any references that I can read to catch up on it?  I
 would like to see more detail on the proposal for what should
 stay in Nova vs. be moved.  What is the interface between
 Nova and the scheduler here?

 Oh, missed the most important question you asked. So, about
 the interface in between scheduler and Nova, the original
 agreed proposal is in the spec
 https://review.openstack.org/82133 (approved) where the
 Scheduler exposes : - select_destinations() : for querying the
 scheduler to provide candidates - update_resource_stats() : for
 updating the scheduler internal state (ie. HostState)

 Here, update_resource_stats() is called by the
 ResourceTracker, see the implementations (in review)
 https://review.openstack.org/82778 and
 https://review.openstack.org/104556.

 The alternative that has just been raised this week is to
 provide a new interface where ComputeNode claims for resources
 and frees these resources, so that all the resources are fully
 owned by the Scheduler. An initial PoC has been raised here
 https://review.openstack.org/103598 but I tried to see what
 would be a ResourceTracker proxified by a Scheduler client here
 : https://review.openstack.org/105747. As the spec hasn't been
 written, the names of the interfaces are not properly defined
 but I made a proposal as : - select_destinations() : same as
 above - usage_claim() : claim a resource amount -
 usage_update() : update a resource amount - usage_drop(): frees
 the resource amount

 Again, this is a dummy proposal, a spec has to written if we
 consider moving the RT.

 While I am not against moving the resource tracker, I feel we
 could move this to Gantt after the core scheduling has been
 moved.

 Big -1 from me on this, John.

 Frankly, I see no urgency whatsoever -- and actually very little
 benefit -- to moving the scheduler out of Nova. The Gantt project I
 think is getting ahead of itself by focusing on a split instead of
 focusing on cleaning up the interfaces between nova-conductor,
 nova-scheduler, and nova-compute.


 -1 on saying there is no urgency. Don't you see the NFV group saying
 each meeting what is the status of the scheduler split ?

 Frankly, I don't think a lot of the NFV use cases are well-defined.

 Even more frankly, I don't see any benefit to a split-out scheduler to
 a single NFV use case.

 I don't know if you can, but if you're interested in giving feedback to
 the NFV team, we do run weekly meeting on #openstack-meeting-alt every
 Wednesday 2pm UTC.

 You can find a list of all the associated blueprints here
 https://wiki.openstack.org/wiki/Teams/NFV#Active_Blueprints whose list
 is processed hourly by a backend script so it generates a Gerrit
 dashboard accessible here : http://nfv.russellbryant.net

 By saying that, you can find
 https://blueprints.launchpad.net/nova/+spec/solver-scheduler as a
 possible use-case for NFV.
 As Paul and Yathi said, there is a need for a global resource placement
 engine able to cope with both network and compute resources if we need
 to provide NFV use-cases, that appears to me quite clearly and that's
 why I joined the NFV team.


 Don't you see each Summit the lots of talks (and people attending
 them) talking about how OpenStack should look at Pets vs. Cattle and
 saying that the scheduler should be out of Nova ?

 There's been no concrete benefits discussed to having the scheduler
 outside of Nova.

 I don't really care how many people say that the scheduler should be
 out of Nova unless those same people come to the table with concrete
 reasons why. Just saying something is a benefit does not make it a
 benefit, and I think I've outlined some of the 

Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

2014-07-15 Thread Dugger, Donald D
Unfortunately, much as I agree with your sentiment (Death to MS Outlook) my IT 
overlords have pretty much forced me into using it.  I still top post but try 
and use some copied context (typically by adding an `in re:' to be explicit) so 
you know what part of the long email I'm referring to.

--
Don Dugger
Censeo Toto nos in Kansa esse decisse. - D. Gale
Ph: 303/443-3786

-Original Message-
From: Jay Pipes [mailto:jaypi...@gmail.com] 
Sent: Tuesday, July 15, 2014 9:05 AM
To: openstack-dev@lists.openstack.org
Subject: Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

Hi Paul, thanks for your reply. Comments inline.

BTW, is there any way to reply inline instead of top-posting? On these longer 
emails, it gets hard sometimes to follow your reply to specific things I 
mentioned (vs. what John G mentioned).

Death to MS Outlook.

On 07/14/2014 04:40 PM, Murray, Paul (HP Cloud) wrote:
 On extensible resource tracking

 Jay, I am surprised to hear you say no one has explained to you why 
 there is an extensible resource tracking blueprint. It's simple, there 
 was a succession of blueprints wanting to add data about this and that 
 to the resource tracker and the scheduler and the database tables used 
 to communicate. These included capabilities, all the stuff in the 
 stats, rxtx_factor, the equivalent for cpu (which only works on one 
 hypervisor I think), pci_stats and more were coming including,

 
https://blueprints.launchpad.net/nova/+spec/network-bandwidth-entitleme
nt https://blueprints.launchpad.net/nova/+spec/cpu-entitlement

 So, in short, your claim that there are no operators asking for 
 additional stuff is simply not true.

A few things about the above blueprints

1) Neither above blueprint is approved.

2) Neither above blueprint nor the extensible resource tracker blueprint 
contains a single *use case*. The blueprints are full of statements like We 
want to extend this model to add a measure of XXX and We propose a unified 
API to support YYY, however none of them actually contains a real use case. A 
use case is in the form of As a XXX user, I want to be able to YYY so that my 
ZZZ can do AAA. Blueprints without use cases are not necessarily things to be 
disregarded, but when the blueprint proposes a significant change in 
behaviour/design or a new feature, without specifying one or more use cases 
that are satisfied by the proposed spec, the blueprint is suspicious, in my 
mind.

3) The majority of the feature requests in the CPUEntitlement are enabled with 
the use of existing host aggregates and their cpu_allocation_ratios and Dan 
Berrange's work on adding NUMA topology aspects to the compute node and 
flavours.

4) In my previous emails, I was pretty specific that I had never met a single 
operator or admin that was sitting there tinkering with weight multipliers 
trying to control the placement of VMs in their cloud. When I talk about the 
*needless complexity* in the current scheduler design, I am talking 
specifically about the weigher multipliers. I can guarantee you that there 
isn't a single person out there sitting behind the scenes going Oooh, let me 
change my ram weigher multiplier from 1.0 to .675 and see what happens. It's 
just not something that is done -- that is way too low of a level for the 
Compute scheduler to be thinking at. The Nova scheduler *is not a process or 
thread scheduler*. Folks who think that the Nova scheduler should emulate the 
Linux kernel scheduling policies and strategies are thinking on *completely* 
the wrong level, IMO. We should be focusing on making the scheduler *simpler*, 
with admin users *easily* able to figure out how to control placement decisions 
fo
 r their host aggregates and, more importantly, allow *tenant-by-tenant sorting 
policies* [1] so that scheduling decisions for different classes of tenants can 
be controlled distinctly.

 Around about the Icehouse summit (I think) it was suggested that we 
 should stop the obvious trend and add a way to make resource tracking 
 extensible, similar to metrics, which had just been added as an 
 extensible way of collecting on going usage data (because that was 
 also wanted).

OK, I do understand that. I actually think it would have been more appropriate 
to define real models for these new resource types instead of making it a 
free-for-all with too much ability to support out-of-tree custom, non-standard 
resource types, but I understand the idea behind it.

 The json blob you refer to was down to the bad experience of the 
 compute_node_stats table implemented for stats - which had a 
 particular performance hit because it required an expensive join.
 This was dealt with by removing the table and adding a string field to 
 contain the data as a json blob. A pure performance optimization.

Interesting. This is good to know (and would have been good to note on the ERT 
blueprint).

The problem I have with this is that we are muddying the code and the DB schema

Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

2014-07-15 Thread Chris Friesen

On 07/14/2014 12:10 PM, Jay Pipes wrote:

On 07/14/2014 10:16 AM, Sylvain Bauza wrote:



From an operator perspective, people waited so long for having a
scheduler doing scheduling and not only resource placement.


Could you elaborate a bit here? What operators are begging for the
scheduler to do more than resource placement? And if they are begging
for this, what use cases are they trying to address?


I'm curious about this as well, what more than resource placement 
*should* the scheduler handle?


On the other hand, I *do* see a usecase for a more holistic scheduler 
that can take into account a whole group of resources at once (multiple 
instances, volumes, networks, etc. with various constraints on them, 
combined with things like server groups and host aggregates).


In a simple scenario, suppose a compute node fails.  I want to evacuate 
all the instances that had been on that compute node, but ideally I'd 
like the scheduler to look at all the instances simultaneously to try to 
place them...if it does them one at a time it might make a decision that 
doesn't use resources in an optimal way, possibly even resulting in the 
failure of one or more evacuations even though there is technically 
sufficient room in the cluster for all instances.


Alternately, suppose I have a group of instances that really want to be 
placed on the same physical network segment.  (For low latency, maybe.)


Lastly, I think that any information that fed into the original 
scheduler decision should be preserved for use by subsequent scheduling 
operations (migration, evacuation, etc.)  This includes stuff like 
image/flavor metadata, boot-time scheduler hints, etc.


Chris


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

2014-07-14 Thread Jay Pipes

Hi Don, comments inline...

On 07/14/2014 12:18 AM, Dugger, Donald D wrote:

My understanding is the main goal is to get a fully functional gantt
working before we do the split.  This means we have to clean up the
nova interfaces so that all of the current scheduler functionality,
including things like aggregates and resource tracking, so that we
can make the split and create the gantt tree which will be the
default scheduler.


+1. Clean before cleave.


This means I see 3 main tasks that need to be done before we do the
split:

1)  Create the scheduler client library 2)  Complete the isolate
scheduler DB accesses 3)  Move the resource tracker out of Nova and
into the scheduler

If we can focus on those 3 tasks we should be able to actually split
the code out into a fully functional scheduler.


While I have little disagreement on the above tasks, I feel that 
actually the order should be: 3), then 2), then 1).


My reasoning for this is that the client interface would be dramatically 
changed by 3), and the number of DB accesses would also be increased by 
3), therefore it is more important to fix the current lack of 
claim-based resource tracking in the scheduler before we move to either 
1) or 2).


Best,
-jay


-- Don Dugger Censeo Toto nos in Kansa esse decisse. - D. Gale Ph:
303/443-3786

-Original Message- From: Sylvain Bauza
[mailto:sba...@redhat.com] Sent: Friday, July 11, 2014 8:38 AM To:
John Garbutt Cc: OpenStack Development Mailing List (not for usage
questions) Subject: Re: [openstack-dev] [Nova] [Gantt] Scheduler
split status (updated)

Le 11/07/2014 13:14, John Garbutt a écrit :

On 10 July 2014 16:59, Sylvain Bauza sba...@redhat.com wrote:

Le 10/07/2014 15:47, Russell Bryant a écrit :

On 07/10/2014 05:06 AM, Sylvain Bauza wrote:

Hi all,

=== tl;dr: Now that we agree on waiting for the split prereqs
to be done, we debate on if ResourceTracker should be part of
the scheduler code and consequently Scheduler should expose
ResourceTracker APIs so that Nova wouldn't own compute nodes
resources. I'm proposing to first come with RT as Nova
resource in Juno and move ResourceTracker in Scheduler for K,
so we at least merge some patches by Juno. ===

Some debates occured recently about the scheduler split, so I
think it's important to loop back with you all to see where
we are and what are the discussions. Again, feel free to
express your opinions, they are welcome.

Where did this resource tracker discussion come up?  Do you
have any references that I can read to catch up on it?  I would
like to see more detail on the proposal for what should stay in
Nova vs. be moved.  What is the interface between Nova and the
scheduler here?



Oh, missed the most important question you asked. So, about the
interface in between scheduler and Nova, the original agreed
proposal is in the spec https://review.openstack.org/82133
(approved) where the Scheduler exposes : - select_destinations()
: for querying the scheduler to provide candidates -
update_resource_stats() : for updating the scheduler internal
state (ie. HostState)

Here, update_resource_stats() is called by the ResourceTracker,
see the implementations (in review)
https://review.openstack.org/82778 and
https://review.openstack.org/104556.


The alternative that has just been raised this week is to provide
a new interface where ComputeNode claims for resources and frees
these resources, so that all the resources are fully owned by the
Scheduler. An initial PoC has been raised here
https://review.openstack.org/103598 but I tried to see what would
be a ResourceTracker proxified by a Scheduler client here :
https://review.openstack.org/105747. As the spec hasn't been
written, the names of the interfaces are not properly defined but
I made a proposal as : - select_destinations() : same as above -
usage_claim() : claim a resource amount - usage_update() : update
a resource amount - usage_drop(): frees the resource amount

Again, this is a dummy proposal, a spec has to written if we
consider moving the RT.

While I am not against moving the resource tracker, I feel we
could move this to Gantt after the core scheduling has been moved.

I was imagining the extensible resource tracker to become (sort
of) equivalent to cinder volume drivers. Also the persistent
resource claims will give us another plugin point for gantt. That
might not be enough, but I think it easier to see once the other
elements have moved.

But the key point thing I like, is how the current approach amounts
to refactoring, similar to the cinder move. I feel we should stick
to that if possible.

John


Thanks John for your feedback. I'm +1 with you, we need to go on the
way we defined with all the community, create Gantt once the prereqs
are done (see my above and first mail for these) and see after if the
line is needed to move.

I think this discussion should also be interesting if we also take in
account the current Cinder and Neutron scheduling needs, so we would
say if it's

Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

2014-07-14 Thread John Garbutt
On 12 July 2014 05:07, Jay Pipes jaypi...@gmail.com wrote:
 On 07/11/2014 07:14 AM, John Garbutt wrote:
 While I am not against moving the resource tracker, I feel we could
 move this to Gantt after the core scheduling has been moved.

 Big -1 from me on this, John.

 Frankly, I see no urgency whatsoever -- and actually very little benefit
 -- to moving the scheduler out of Nova. The Gantt project I think is
 getting ahead of itself by focusing on a split instead of focusing on
 cleaning up the interfaces between nova-conductor, nova-scheduler, and
 nova-compute.

 I see little to no long-term benefit in splitting the scheduler --
 especially with its current design -- out from Nova. It's not like
 Neutron or Cinder, where the split-out service is providing management
 of a particular kind of resource (network, block storage). The Gantt
 project isn't providing any resource itself. Instead, it would be acting
 as a proxy for the placement other services' resources, which, IMO, in
 and of itself, is not a reason to go through the trouble of splitting
 the scheduler out of Nova.

I am thinking about scaling out the Nova community here.

I like the idea of a smaller sub-community, outside of the Nova review
queue, that focus its efforts of moving the scheduler forward. I was
hoping we get Gantt created by the end of Juno, with nova-scheduler
deprecated at the end of Juno, as is. Then the Gantt community can
start evolving the current system.

We have blocked lots of ideas, saying please wait for Gantt. The
people wanting to have scheduling that is aware of both nova and
cinder resources, and similar arguments for networking locality aware
compute scheduling, and the ones that come to mind.

Clearly there is a cost of evolving the interface, once the scheduler
is split out. Maybe in this case we want to wait, and I am cool with
that, but I wanted to make sure we have our eyes open to what we are
delaying.

 I was imagining the extensible resource tracker to become (sort of)
 equivalent to cinder volume drivers.

 The problem with the extensible resource tracker design is that it,
 again, just shoves a bunch of stuff into a JSON field and both the
 existing resource tracker code (in nova-compute) as well as the
 scheduler code (in nova-scheduler) then need to use and abuse this BLOB
 of random data.

 I tried to make my point on the extensible resource tracker blueprint
 about my objections to the design.

 My first, and main, objection is that there was never demonstrated ANY
 clear use case for the extensibility of resources that was not already
 covered by the existing resource tracker and scheduler. The only use
 case was a vague we have out of tree custom plugins that depend on
 divergent behaviour and therefore we need a plugin point to change the way
 the scheduler thinks of a particular resource. And that is not a use case.
 It's simply a request to break compatibility between clouds with out-of-tree
 source code.
...
 please somebody explain a clear use case for these things
 that does not involve we want to run our divergent code.

To be clear, I have no interest in making life easier for out of tree
extensions.

One reason I like it, is because the code is becoming unwieldy as we
keep extending what people would like to report, and what was proposed
seemed very like a nice version of the Open Closed principle.

Another use case I want to see is to allow deployers to reduce the
data each compute node is reporting to the scheduler down the bare
minimum for what is required in the configured scheduler filters and
weights. This, coupled with the work of only sending deltas rather
than all the data all the time, sound really help reduce the DB load
generated by the host reporting.

We also urgently need to version the data, and the above refactoring,
assuming it was quick, I hoped would help us more clearly see where to
add in the versioning. In the end this has now just delayed that
effort, and thats a probably the biggest looser in this whole debate.

Agreed, these are all quite short term goals, and maybe there are
better ways of achieving those goals.

I intensely dislike the current complexly of the configuration, but I
have not had any time to suggest a viable alternative yet. The only
thing that popped into my head, is that moving the resource tracker to
the scheduler would really help, because you end up getting a single
model with related filter vs weight and reporter pairs, or something
like that. With the idea of combining filters and weights into a
single system, where you can weight and/or filter on based on some
property reported form the Resource Tracker.

 Also the persistent resource claims will give us another plugin point
 for gantt. That might not be enough, but I think it easier to see
 once the other elements have moved.

 Is there some code you can provide me a link to for these persistent
 resource claims? Not sure I've seen that code yet... or a blueprint?


Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

2014-07-14 Thread Jay Pipes

On 07/14/2014 10:16 AM, Sylvain Bauza wrote:

Le 12/07/2014 06:07, Jay Pipes a écrit :

On 07/11/2014 07:14 AM, John Garbutt wrote:

On 10 July 2014 16:59, Sylvain Bauza sba...@redhat.com wrote:

Le 10/07/2014 15:47, Russell Bryant a écrit :

On 07/10/2014 05:06 AM, Sylvain Bauza wrote:

Hi all,

=== tl;dr: Now that we agree on waiting for the split
prereqs to be done, we debate on if ResourceTracker should
be part of the scheduler code and consequently Scheduler
should expose ResourceTracker APIs so that Nova wouldn't
own compute nodes resources. I'm proposing to first come
with RT as Nova resource in Juno and move ResourceTracker
in Scheduler for K, so we at least merge some patches by
Juno. ===

Some debates occured recently about the scheduler split, so
I think it's important to loop back with you all to see
where we are and what are the discussions. Again, feel free
to express your opinions, they are welcome.

Where did this resource tracker discussion come up?  Do you
have any references that I can read to catch up on it?  I
would like to see more detail on the proposal for what should
stay in Nova vs. be moved.  What is the interface between
Nova and the scheduler here?


Oh, missed the most important question you asked. So, about
the interface in between scheduler and Nova, the original
agreed proposal is in the spec
https://review.openstack.org/82133 (approved) where the
Scheduler exposes : - select_destinations() : for querying the
scheduler to provide candidates - update_resource_stats() : for
updating the scheduler internal state (ie. HostState)

Here, update_resource_stats() is called by the
ResourceTracker, see the implementations (in review)
https://review.openstack.org/82778 and
https://review.openstack.org/104556.

The alternative that has just been raised this week is to
provide a new interface where ComputeNode claims for resources
and frees these resources, so that all the resources are fully
owned by the Scheduler. An initial PoC has been raised here
https://review.openstack.org/103598 but I tried to see what
would be a ResourceTracker proxified by a Scheduler client here
: https://review.openstack.org/105747. As the spec hasn't been
written, the names of the interfaces are not properly defined
but I made a proposal as : - select_destinations() : same as
above - usage_claim() : claim a resource amount -
usage_update() : update a resource amount - usage_drop(): frees
the resource amount

Again, this is a dummy proposal, a spec has to written if we
consider moving the RT.


While I am not against moving the resource tracker, I feel we
could move this to Gantt after the core scheduling has been
moved.


Big -1 from me on this, John.

Frankly, I see no urgency whatsoever -- and actually very little
benefit -- to moving the scheduler out of Nova. The Gantt project I
think is getting ahead of itself by focusing on a split instead of
focusing on cleaning up the interfaces between nova-conductor,
nova-scheduler, and nova-compute.



-1 on saying there is no urgency. Don't you see the NFV group saying
each meeting what is the status of the scheduler split ?


Frankly, I don't think a lot of the NFV use cases are well-defined.

Even more frankly, I don't see any benefit to a split-out scheduler to a 
single NFV use case.



Don't you see each Summit the lots of talks (and people attending
them) talking about how OpenStack should look at Pets vs. Cattle and
saying that the scheduler should be out of Nova ?


There's been no concrete benefits discussed to having the scheduler 
outside of Nova.


I don't really care how many people say that the scheduler should be out 
of Nova unless those same people come to the table with concrete reasons 
why. Just saying something is a benefit does not make it a benefit, and 
I think I've outlined some of the very real dangers -- in terms of code 
and payload complexity -- of breaking the scheduler out of Nova until 
the interfaces are cleaned up and the scheduler actually owns the 
resources upon which it exercises placement decisions.



From an operator perspective, people waited so long for having a
scheduler doing scheduling and not only resource placement.


Could you elaborate a bit here? What operators are begging for the 
scheduler to do more than resource placement? And if they are begging 
for this, what use cases are they trying to address?


I'm genuinely curious, so looking forward to your reply here! :)

snip...


As for the idea that things will get *easier* once scheduler code
is broken out of Nova, I go back to my original statement that I
don't really see the benefit of the split at this point, and I
would just bring up the fact that Neutron/nova-network is a shining
example of how things can easily backfire when splitting of code is
done too early before interfaces are cleaned up and
responsibilities between internal components are not clearly agreed
upon.


Please, please, don't mix the rationale for extensible Resource
Tracker and the 

[openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

2014-07-14 Thread Murray, Paul (HP Cloud)
Hi All,

I'm sorry I am so late to this lively discussion - it looks a good one! Jay has 
been driving the debate a bit so most of this is in response to his comments. 
But please, anyone should chip in.

On extensible resource tracking

Jay, I am surprised to hear you say no one has explained to you why there is an 
extensible resource tracking blueprint. It's simple, there was a succession of 
blueprints wanting to add data about this and that to the resource tracker and 
the scheduler and the database tables used to communicate. These included 
capabilities, all the stuff in the stats, rxtx_factor, the equivalent for cpu 
(which only works on one hypervisor I think), pci_stats and more were coming 
including,

https://blueprints.launchpad.net/nova/+spec/network-bandwidth-entitlement
https://blueprints.launchpad.net/nova/+spec/cpu-entitlement

So, in short, your claim that there are no operators asking for additional 
stuff is simply not true.

Around about the Icehouse summit (I think) it was suggested that we should stop 
the obvious trend and add a way to make resource tracking extensible, similar 
to metrics, which had just been added as an extensible way of collecting on 
going usage data (because that was also wanted).

The json blob you refer to was down to the bad experience of the 
compute_node_stats table implemented for stats - which had a particular 
performance hit because it required an expensive join. This was dealt with by 
removing the table and adding a string field to contain the data as a json 
blob. A pure performance optimization. Clearly there is no need to store things 
in this way and with Nova objects being introduced there is a means to provide 
strict type checking on the data even if it is stored as json blobs in the 
database.

On scheduler split

I have no particular position on splitting the scheduler. However, there was an 
interesting reaction to the network bandwidth entitlement blueprint listed 
above. The nova community felt it was a network thing and so nova should not 
provide it - neutron should. Of course, in nova, the nova scheduler makes 
placement decisions... can you see where this is going...? Nova needs to 
coordinate its placement decision with neutron to decide if a host has 
sufficient bandwidth available. Similar points are made about cinder - nova has 
no idea about cinder, but in some environments the location of a volume matters 
when you come to place an instance.

I should re-iterate that I have no position on splitting out the scheduler, but 
some way to deal with information from outside nova is certainly desirable. 
Maybe other services have the same dilemma.

On global resource tracker

I have to say I am inclined to be against the idea of turning the scheduler 
into a global resource tracker. I do see the benefit of obtaining a resource 
claim up front, we have all seen that the scheduler can make incorrect choices 
because of the delay in reflecting resource allocation to the database and so 
to the scheduler - it operates on imperfect information. However, it is best to 
avoid a global service relying on synchronous interaction with compute nodes 
during the process of servicing a request. I have looked at your example code 
for the scheduler (global resource tracker) and it seems to make a choice from 
local information and then interact with the chosen compute node to obtain a 
claim and then try again if the claim fails. I get it - I see that it deals 
with the same list of hosts on the retry. I also see it has no better chance of 
getting it right.

Your desire to have a claim is borne out by the persistent claims spec (I love 
the spec, I really I don't see why they have to be persistent). I think that is 
a great idea. Why not let the scheduler make placement suggestions (as a global 
service) and then allow conductors to obtain the claim and retry if the claim 
fails? Similar process to your code, but the scheduler only does its part and 
the conductors scale out the process by acting more locally and with more 
parallelism. (Of course, you could also be optimistic and allow the compute 
node to do the claim as part of the create as the degenerate case).

To emphasize the point further, what would a cells scheduler do? Would that 
also make a synchronous operation to obtain the claim?

My reaction to the global resource tracker idea has been quite negative. I want 
to like the idea because I like the thought of knowing I have the resources 
when I get my answer. Its just that I think the persistent claims (without the 
persistent part :) ) gives us a lot of what we need. But I am still open to be 
convinced.

Paul



On 07/14/2014 10:16 AM, Sylvain Bauza wrote:
 Le 12/07/2014 06:07, Jay Pipes a écrit :
 On 07/11/2014 07:14 AM, John Garbutt wrote:
 On 10 July 2014 16:59, Sylvain Bauza sbauza at redhat.com wrote:
 Le 10/07/2014 15:47, Russell Bryant a écrit :
 On 07/10/2014 05:06 AM, Sylvain Bauza wrote:
 Hi all,

 === tl;dr: Now that 

Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

2014-07-13 Thread Dugger, Donald D
My understanding is the main goal is to get a fully functional gantt working 
before we do the split.  This means we have to clean up the nova interfaces so 
that all of the current scheduler functionality, including things like 
aggregates and resource tracking, so that we can make the split and create the 
gantt tree which will be the default scheduler.

This means I see 3 main tasks that need to be done before we do the split:

1)  Create the scheduler client library
2)  Complete the isolate scheduler DB accesses
3)  Move the resource tracker out of Nova and into the scheduler

If we can focus on those 3 tasks we should be able to actually split the code 
out into a fully functional scheduler.

--
Don Dugger
Censeo Toto nos in Kansa esse decisse. - D. Gale
Ph: 303/443-3786

-Original Message-
From: Sylvain Bauza [mailto:sba...@redhat.com] 
Sent: Friday, July 11, 2014 8:38 AM
To: John Garbutt
Cc: OpenStack Development Mailing List (not for usage questions)
Subject: Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

Le 11/07/2014 13:14, John Garbutt a écrit :
 On 10 July 2014 16:59, Sylvain Bauza sba...@redhat.com wrote:
 Le 10/07/2014 15:47, Russell Bryant a écrit :
 On 07/10/2014 05:06 AM, Sylvain Bauza wrote:
 Hi all,

 ===
 tl;dr: Now that we agree on waiting for the split prereqs to be 
 done, we debate on if ResourceTracker should be part of the 
 scheduler code and consequently Scheduler should expose 
 ResourceTracker APIs so that Nova wouldn't own compute nodes 
 resources. I'm proposing to first come with RT as Nova resource in 
 Juno and move ResourceTracker in Scheduler for K, so we at least merge 
 some patches by Juno.
 ===

 Some debates occured recently about the scheduler split, so I think 
 it's important to loop back with you all to see where we are and 
 what are the discussions.
 Again, feel free to express your opinions, they are welcome.
 Where did this resource tracker discussion come up?  Do you have any 
 references that I can read to catch up on it?  I would like to see 
 more detail on the proposal for what should stay in Nova vs. be 
 moved.  What is the interface between Nova and the scheduler here?


 Oh, missed the most important question you asked.
 So, about the interface in between scheduler and Nova, the original 
 agreed proposal is in the spec https://review.openstack.org/82133
 (approved) where the Scheduler exposes :
  - select_destinations() : for querying the scheduler to provide 
 candidates
  - update_resource_stats() : for updating the scheduler internal 
 state (ie. HostState)

 Here, update_resource_stats() is called by the ResourceTracker, see 
 the implementations (in review) https://review.openstack.org/82778 
 and https://review.openstack.org/104556.


 The alternative that has just been raised this week is to provide a 
 new interface where ComputeNode claims for resources and frees these 
 resources, so that all the resources are fully owned by the Scheduler.
 An initial PoC has been raised here 
 https://review.openstack.org/103598
 but I tried to see what would be a ResourceTracker proxified by a 
 Scheduler client here : https://review.openstack.org/105747. As the 
 spec hasn't been written, the names of the interfaces are not 
 properly defined but I made a proposal as :
  - select_destinations() : same as above
  - usage_claim() : claim a resource amount
  - usage_update() : update a resource amount
  - usage_drop(): frees the resource amount

 Again, this is a dummy proposal, a spec has to written if we consider 
 moving the RT.
 While I am not against moving the resource tracker, I feel we could 
 move this to Gantt after the core scheduling has been moved.

 I was imagining the extensible resource tracker to become (sort of) 
 equivalent to cinder volume drivers. Also the persistent resource 
 claims will give us another plugin point for gantt. That might not be 
 enough, but I think it easier to see once the other elements have 
 moved.

 But the key point thing I like, is how the current approach amounts to 
 refactoring, similar to the cinder move. I feel we should stick to 
 that if possible.

 John

Thanks John for your feedback. I'm +1 with you, we need to go on the way we 
defined with all the community, create Gantt once the prereqs are done (see my 
above and first mail for these) and see after if the line is needed to move.

I think this discussion should also be interesting if we also take in account 
the current Cinder and Neutron scheduling needs, so we would say if it's the 
good direction.


Others ?

Note: The spec https://review.openstack.org/89893 is not yet approved today, as 
the Spec approval freeze happened, I would like to discuss with the team if we 
can have an exception on it so the work could happen by Juno.


Thanks,
-Sylvain


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo

Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

2014-07-11 Thread John Garbutt
On 10 July 2014 16:59, Sylvain Bauza sba...@redhat.com wrote:
 Le 10/07/2014 15:47, Russell Bryant a écrit :
 On 07/10/2014 05:06 AM, Sylvain Bauza wrote:
 Hi all,

 ===
 tl;dr: Now that we agree on waiting for the split prereqs to be done, we
 debate on if ResourceTracker should be part of the scheduler code and
 consequently Scheduler should expose ResourceTracker APIs so that Nova
 wouldn't own compute nodes resources. I'm proposing to first come with
 RT as Nova resource in Juno and move ResourceTracker in Scheduler for K,
 so we at least merge some patches by Juno.
 ===

 Some debates occured recently about the scheduler split, so I think it's
 important to loop back with you all to see where we are and what are the
 discussions.
 Again, feel free to express your opinions, they are welcome.
 Where did this resource tracker discussion come up?  Do you have any
 references that I can read to catch up on it?  I would like to see more
 detail on the proposal for what should stay in Nova vs. be moved.  What
 is the interface between Nova and the scheduler here?



 Oh, missed the most important question you asked.
 So, about the interface in between scheduler and Nova, the original
 agreed proposal is in the spec https://review.openstack.org/82133
 (approved) where the Scheduler exposes :
  - select_destinations() : for querying the scheduler to provide candidates
  - update_resource_stats() : for updating the scheduler internal state
 (ie. HostState)

 Here, update_resource_stats() is called by the ResourceTracker, see the
 implementations (in review) https://review.openstack.org/82778 and
 https://review.openstack.org/104556.


 The alternative that has just been raised this week is to provide a new
 interface where ComputeNode claims for resources and frees these
 resources, so that all the resources are fully owned by the Scheduler.
 An initial PoC has been raised here https://review.openstack.org/103598
 but I tried to see what would be a ResourceTracker proxified by a
 Scheduler client here : https://review.openstack.org/105747. As the spec
 hasn't been written, the names of the interfaces are not properly
 defined but I made a proposal as :
  - select_destinations() : same as above
  - usage_claim() : claim a resource amount
  - usage_update() : update a resource amount
  - usage_drop(): frees the resource amount

 Again, this is a dummy proposal, a spec has to written if we consider
 moving the RT.

While I am not against moving the resource tracker, I feel we could
move this to Gantt after the core scheduling has been moved.

I was imagining the extensible resource tracker to become (sort of)
equivalent to cinder volume drivers. Also the persistent resource
claims will give us another plugin point for gantt. That might not be
enough, but I think it easier to see once the other elements have
moved.

But the key point thing I like, is how the current approach amounts to
refactoring, similar to the cinder move. I feel we should stick to
that if possible.

John

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

2014-07-11 Thread Sylvain Bauza
Le 11/07/2014 13:14, John Garbutt a écrit :
 On 10 July 2014 16:59, Sylvain Bauza sba...@redhat.com wrote:
 Le 10/07/2014 15:47, Russell Bryant a écrit :
 On 07/10/2014 05:06 AM, Sylvain Bauza wrote:
 Hi all,

 ===
 tl;dr: Now that we agree on waiting for the split prereqs to be done, we
 debate on if ResourceTracker should be part of the scheduler code and
 consequently Scheduler should expose ResourceTracker APIs so that Nova
 wouldn't own compute nodes resources. I'm proposing to first come with
 RT as Nova resource in Juno and move ResourceTracker in Scheduler for K,
 so we at least merge some patches by Juno.
 ===

 Some debates occured recently about the scheduler split, so I think it's
 important to loop back with you all to see where we are and what are the
 discussions.
 Again, feel free to express your opinions, they are welcome.
 Where did this resource tracker discussion come up?  Do you have any
 references that I can read to catch up on it?  I would like to see more
 detail on the proposal for what should stay in Nova vs. be moved.  What
 is the interface between Nova and the scheduler here?


 Oh, missed the most important question you asked.
 So, about the interface in between scheduler and Nova, the original
 agreed proposal is in the spec https://review.openstack.org/82133
 (approved) where the Scheduler exposes :
  - select_destinations() : for querying the scheduler to provide candidates
  - update_resource_stats() : for updating the scheduler internal state
 (ie. HostState)

 Here, update_resource_stats() is called by the ResourceTracker, see the
 implementations (in review) https://review.openstack.org/82778 and
 https://review.openstack.org/104556.


 The alternative that has just been raised this week is to provide a new
 interface where ComputeNode claims for resources and frees these
 resources, so that all the resources are fully owned by the Scheduler.
 An initial PoC has been raised here https://review.openstack.org/103598
 but I tried to see what would be a ResourceTracker proxified by a
 Scheduler client here : https://review.openstack.org/105747. As the spec
 hasn't been written, the names of the interfaces are not properly
 defined but I made a proposal as :
  - select_destinations() : same as above
  - usage_claim() : claim a resource amount
  - usage_update() : update a resource amount
  - usage_drop(): frees the resource amount

 Again, this is a dummy proposal, a spec has to written if we consider
 moving the RT.
 While I am not against moving the resource tracker, I feel we could
 move this to Gantt after the core scheduling has been moved.

 I was imagining the extensible resource tracker to become (sort of)
 equivalent to cinder volume drivers. Also the persistent resource
 claims will give us another plugin point for gantt. That might not be
 enough, but I think it easier to see once the other elements have
 moved.

 But the key point thing I like, is how the current approach amounts to
 refactoring, similar to the cinder move. I feel we should stick to
 that if possible.

 John

Thanks John for your feedback. I'm +1 with you, we need to go on the way
we defined with all the community, create Gantt once the prereqs are
done (see my above and first mail for these) and see after if the line
is needed to move.

I think this discussion should also be interesting if we also take in
account the current Cinder and Neutron scheduling needs, so we would say
if it's the good direction.


Others ?

Note: The spec https://review.openstack.org/89893 is not yet approved
today, as the Spec approval freeze happened, I would like to discuss
with the team if we can have an exception on it so the work could happen
by Juno.


Thanks,
-Sylvain


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

2014-07-11 Thread Jay Pipes

On 07/11/2014 07:14 AM, John Garbutt wrote:

On 10 July 2014 16:59, Sylvain Bauza sba...@redhat.com wrote:

Le 10/07/2014 15:47, Russell Bryant a écrit :

On 07/10/2014 05:06 AM, Sylvain Bauza wrote:

Hi all,

=== tl;dr: Now that we agree on waiting for the split prereqs
to be done, we debate on if ResourceTracker should be part of
the scheduler code and consequently Scheduler should expose
ResourceTracker APIs so that Nova wouldn't own compute nodes
resources. I'm proposing to first come with RT as Nova
resource in Juno and move ResourceTracker in Scheduler for K,
so we at least merge some patches by Juno. ===

Some debates occured recently about the scheduler split, so I
think it's important to loop back with you all to see where we
are and what are the discussions. Again, feel free to express
your opinions, they are welcome.

Where did this resource tracker discussion come up?  Do you have
any references that I can read to catch up on it?  I would like
to see more detail on the proposal for what should stay in Nova
vs. be moved.  What is the interface between Nova and the
scheduler here?


Oh, missed the most important question you asked. So, about the
interface in between scheduler and Nova, the original agreed
proposal is in the spec https://review.openstack.org/82133
(approved) where the Scheduler exposes : - select_destinations() :
for querying the scheduler to provide candidates -
update_resource_stats() : for updating the scheduler internal state
(ie. HostState)

Here, update_resource_stats() is called by the ResourceTracker,
see the implementations (in review)
https://review.openstack.org/82778 and
https://review.openstack.org/104556.

The alternative that has just been raised this week is to provide
a new interface where ComputeNode claims for resources and frees
these resources, so that all the resources are fully owned by the
Scheduler. An initial PoC has been raised here
https://review.openstack.org/103598 but I tried to see what would
be a ResourceTracker proxified by a Scheduler client here :
https://review.openstack.org/105747. As the spec hasn't been
written, the names of the interfaces are not properly defined but
I made a proposal as : - select_destinations() : same as above -
usage_claim() : claim a resource amount - usage_update() : update
a resource amount - usage_drop(): frees the resource amount

Again, this is a dummy proposal, a spec has to written if we
consider moving the RT.


While I am not against moving the resource tracker, I feel we could
move this to Gantt after the core scheduling has been moved.


Big -1 from me on this, John.

Frankly, I see no urgency whatsoever -- and actually very little benefit
-- to moving the scheduler out of Nova. The Gantt project I think is
getting ahead of itself by focusing on a split instead of focusing on
cleaning up the interfaces between nova-conductor, nova-scheduler, and
nova-compute.

I see little to no long-term benefit in splitting the scheduler --
especially with its current design -- out from Nova. It's not like
Neutron or Cinder, where the split-out service is providing management
of a particular kind of resource (network, block storage). The Gantt
project isn't providing any resource itself. Instead, it would be acting
as a proxy for the placement other services' resources, which, IMO, in
and of itself, is not a reason to go through the trouble of splitting
the scheduler out of Nova.


I was imagining the extensible resource tracker to become (sort of)
equivalent to cinder volume drivers.


The problem with the extensible resource tracker design is that it,
again, just shoves a bunch of stuff into a JSON field and both the
existing resource tracker code (in nova-compute) as well as the
scheduler code (in nova-scheduler) then need to use and abuse this BLOB
of random data.

I tried to make my point on the extensible resource tracker blueprint
about my objections to the design.

My first, and main, objection is that there was never demonstrated ANY
clear use case for the extensibility of resources that was not already
covered by the existing resource tracker and scheduler. The only use
case was a vague we have out of tree custom plugins that depend on
divergent behaviour and therefore we need a plugin point to change the 
way the scheduler thinks of a particular resource. And that is not a 
use case. It's simply a request to break compatibility between clouds 
with out-of-tree source code.


My second objection was that the proposed implementation added yet more
completely unnecessary complication to the scheduler, with the
introduction of scheduler consumers, one for each extensible
resource added as plugins to the resource tracker. The existing
scheduler is already displaying a silly amount of needless complexity,
and current (and approved) blueprints like this one merely add to the
endless array of configuration options and ostensibly flexible behaviour.

The problem with ALL of these approved and in-review specs, IMO, is 

Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

2014-07-10 Thread Sylvain Bauza
Hi all,

===
tl;dr: Now that we agree on waiting for the split prereqs to be done, we
debate on if ResourceTracker should be part of the scheduler code and
consequently Scheduler should expose ResourceTracker APIs so that Nova
wouldn't own compute nodes resources. I'm proposing to first come with
RT as Nova resource in Juno and move ResourceTracker in Scheduler for K,
so we at least merge some patches by Juno.
===

Some debates occured recently about the scheduler split, so I think it's
important to loop back with you all to see where we are and what are the
discussions.
Again, feel free to express your opinions, they are welcome.

Le 03/07/2014 19:53, Sylvain Bauza a écrit :
 Hi,

 ==
 tl; dr: A decision has been made to split out the scheduler to a
 separate project not on a feature parity basis with nova-scheduler, your
 comments are welcome.
 ==
 snip/

So, based on the feedback consensus, we agreed to wait for all the
preparation work to be made before doing the split.

That said, now that we're focusing back on the split prereqs, some good
talks are coming in about what the Scheduler should express as APIs and
what would be consequently owned by the scheduler (and later Gantt).

During the Summit, we expressed the boundary in between Scheduler and
Nova as the current Scheduler namespace in Nova and where the
ResourceTracker would take use of a Scheduler client for updating stats
to the Scheduler [1]. In this model, compute nodes would stay as a Nova
resource and Scheduler (and later Gantt) would have its own
representation of the resources it has to manage.

The implementation of this model is https://review.openstack.org/82778
still under review. Note also the spec has been validated 3 months ago
[2], so this was planned to delivered for Juno.


Based on a review we got on the implementation patch [3], there is now
an interesting discussion about if Nova should still keep its own
representation of the resources (and consequently should manage all
claims for resource usage). The idea of it would be to move the
ResourceTracker to the Scheduler namespace and consequently the
Scheduler should expose Tracking APIs for claiming/unclaiming usage, so
the Compute Manager (and no longer the ResourceTracker) would make use
of a Scheduler client.

A PoC for seeing the ResourceTracker proxified by a Scheduler client can
be found here https://review.openstack.org/105747
As we're now beyond the Nova Specs proposal deadline, that would mean
that any spec which would be created would see its implementation merged
by K at least.

Don't blame me if I'm trying to be pragmatic : at a first glance, I
appreciate the idea of having the Tracker moved to the Scheduler, but
I'm seeing this as another possible step for the split, not the first
one. So my proposal is to say :
 1. Move on the existing validated spec and review the existing
implementation https://review.openstack.org/82778
 2. Create a spec targeted for K to see what would be a world where the
tracking of resources is done by the Scheduler
 3. If that above spec gets validated, do the necessary work in K to
move the line
 3(bis). If that above spec gets refused, we are still on the good path
for splitting the scheduler


Thoughts ?

-Sylvain



[1] https://etherpad.openstack.org/p/juno-nova-gantt-apis
[2] https://review.openstack.org/82133
[3] https://review.openstack.org/#/c/82778/42

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

2014-07-10 Thread Russell Bryant
On 07/10/2014 05:06 AM, Sylvain Bauza wrote:
 Hi all,
 
 ===
 tl;dr: Now that we agree on waiting for the split prereqs to be done, we
 debate on if ResourceTracker should be part of the scheduler code and
 consequently Scheduler should expose ResourceTracker APIs so that Nova
 wouldn't own compute nodes resources. I'm proposing to first come with
 RT as Nova resource in Juno and move ResourceTracker in Scheduler for K,
 so we at least merge some patches by Juno.
 ===
 
 Some debates occured recently about the scheduler split, so I think it's
 important to loop back with you all to see where we are and what are the
 discussions.
 Again, feel free to express your opinions, they are welcome.

Where did this resource tracker discussion come up?  Do you have any
references that I can read to catch up on it?  I would like to see more
detail on the proposal for what should stay in Nova vs. be moved.  What
is the interface between Nova and the scheduler here?

-- 
Russell Bryant

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

2014-07-10 Thread Dugger, Donald D
Active discussion at the gantt meeting this week, check out the log:


http://eavesdrop.openstack.org/meetings/gantt/2014/gantt.2014-07-01-15.00.log.html


--
Don Dugger
Censeo Toto nos in Kansa esse decisse. - D. Gale
Ph: 303/443-3786

-Original Message-
From: Russell Bryant [mailto:rbry...@redhat.com] 
Sent: Thursday, July 10, 2014 7:48 AM
To: openstack-dev@lists.openstack.org
Subject: Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

On 07/10/2014 05:06 AM, Sylvain Bauza wrote:
 Hi all,
 
 ===
 tl;dr: Now that we agree on waiting for the split prereqs to be done, 
 we debate on if ResourceTracker should be part of the scheduler code 
 and consequently Scheduler should expose ResourceTracker APIs so that 
 Nova wouldn't own compute nodes resources. I'm proposing to first come 
 with RT as Nova resource in Juno and move ResourceTracker in Scheduler 
 for K, so we at least merge some patches by Juno.
 ===
 
 Some debates occured recently about the scheduler split, so I think 
 it's important to loop back with you all to see where we are and what 
 are the discussions.
 Again, feel free to express your opinions, they are welcome.

Where did this resource tracker discussion come up?  Do you have any references 
that I can read to catch up on it?  I would like to see more detail on the 
proposal for what should stay in Nova vs. be moved.  What is the interface 
between Nova and the scheduler here?

--
Russell Bryant

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

2014-07-10 Thread Sylvain Bauza
Le 10/07/2014 16:32, Dugger, Donald D a écrit :
 Active discussion at the gantt meeting this week, check out the log:

   
 http://eavesdrop.openstack.org/meetings/gantt/2014/gantt.2014-07-01-15.00.log.html


I would prefer to mention this week's meeting :
http://eavesdrop.openstack.org/meetings/gantt/2014/gantt.2014-07-08-15.00.log.html



 --
 Don Dugger
 Censeo Toto nos in Kansa esse decisse. - D. Gale
 Ph: 303/443-3786

 -Original Message-
 From: Russell Bryant [mailto:rbry...@redhat.com] 
 Sent: Thursday, July 10, 2014 7:48 AM
 To: openstack-dev@lists.openstack.org
 Subject: Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

 On 07/10/2014 05:06 AM, Sylvain Bauza wrote:
 Hi all,

 ===
 tl;dr: Now that we agree on waiting for the split prereqs to be done, 
 we debate on if ResourceTracker should be part of the scheduler code 
 and consequently Scheduler should expose ResourceTracker APIs so that 
 Nova wouldn't own compute nodes resources. I'm proposing to first come 
 with RT as Nova resource in Juno and move ResourceTracker in Scheduler 
 for K, so we at least merge some patches by Juno.
 ===

 Some debates occured recently about the scheduler split, so I think 
 it's important to loop back with you all to see where we are and what 
 are the discussions.
 Again, feel free to express your opinions, they are welcome.
 Where did this resource tracker discussion come up?  Do you have any 
 references that I can read to catch up on it?  I would like to see more 
 detail on the proposal for what should stay in Nova vs. be moved.  What is 
 the interface between Nova and the scheduler here?

 --
 Russell Bryant

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

2014-07-10 Thread Dugger, Donald D
I blame MicroSoft, cut/paste didn't work so I had to manually type in the 
(wrong) URL.

--
Don Dugger
Censeo Toto nos in Kansa esse decisse. - D. Gale
Ph: 303/443-3786

-Original Message-
From: Sylvain Bauza [mailto:sba...@redhat.com] 
Sent: Thursday, July 10, 2014 9:05 AM
To: openstack-dev@lists.openstack.org
Subject: Re: [openstack-dev] [Nova] [Gantt] Scheduler split status (updated)

Le 10/07/2014 16:32, Dugger, Donald D a écrit :
 Active discussion at the gantt meeting this week, check out the log:

   
 http://eavesdrop.openstack.org/meetings/gantt/2014/gantt.2014-07-01-15
 .00.log.html


I would prefer to mention this week's meeting :
http://eavesdrop.openstack.org/meetings/gantt/2014/gantt.2014-07-08-15.00.log.html



 --
 Don Dugger
 Censeo Toto nos in Kansa esse decisse. - D. Gale
 Ph: 303/443-3786

 -Original Message-
 From: Russell Bryant [mailto:rbry...@redhat.com]
 Sent: Thursday, July 10, 2014 7:48 AM
 To: openstack-dev@lists.openstack.org
 Subject: Re: [openstack-dev] [Nova] [Gantt] Scheduler split status 
 (updated)

 On 07/10/2014 05:06 AM, Sylvain Bauza wrote:
 Hi all,

 ===
 tl;dr: Now that we agree on waiting for the split prereqs to be done, 
 we debate on if ResourceTracker should be part of the scheduler code 
 and consequently Scheduler should expose ResourceTracker APIs so that 
 Nova wouldn't own compute nodes resources. I'm proposing to first 
 come with RT as Nova resource in Juno and move ResourceTracker in 
 Scheduler for K, so we at least merge some patches by Juno.
 ===

 Some debates occured recently about the scheduler split, so I think 
 it's important to loop back with you all to see where we are and what 
 are the discussions.
 Again, feel free to express your opinions, they are welcome.
 Where did this resource tracker discussion come up?  Do you have any 
 references that I can read to catch up on it?  I would like to see more 
 detail on the proposal for what should stay in Nova vs. be moved.  What is 
 the interface between Nova and the scheduler here?

 --
 Russell Bryant

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev