Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-11 Thread Sylvain Bauza
2014-02-11 18:28 GMT+01:00 Yathiraj Udupi (yudupi) :

>
>
>  Thanks for your pointers about Climate.  I will take a closer look at it
> and try it out.  So after a reservation lease for a VM is made by Climate,
> who acts on it to finally instantiate the VM ? Is it Climate or Nova should
> act on the lease to finally provision the VM.
>


That depends on the plugin mapped with the reservation type. The current
plugin mapped for virtual instances does unshelve the instance at lease
start (because Nova extension shelved it at lease creation).

If you don't like this behaviour, that's quite easy to create another
plugin for another reservation type. When the lease starts, it does run the
lease_create() action defined by the plugin. So, if you don't like
shelving/unshelving, that's not a problem, feel free to add a blueprint
about your needs or create your own plugin.

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


Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-11 Thread Dina Belova
>
> So after a reservation lease for a VM is made by Climate, who acts on it
> to finally instantiate the VM ? Is it Climate or Nova should act on the
> lease to finally provision the VM.


Now to take resources for VM it's actually created and then immediately
shelved, not to be in active state and not to actually work while it's not
needed. Climate then uses Keystone trusts to unshelve it the time lease
actually starts.

Thanks,
Dina


On Tue, Feb 11, 2014 at 9:28 PM, Yathiraj Udupi (yudupi)
wrote:

>  hi Sylvain and Dina,
>
>  Thanks for your pointers about Climate.  I will take a closer look at it
> and try it out.  So after a reservation lease for a VM is made by Climate,
> who acts on it to finally instantiate the VM ? Is it Climate or Nova should
> act on the lease to finally provision the VM.
>
>  Thanks,
> Yathi.
>
>   On 2/11/14, 8:42 AM, "Sylvain Bauza"  wrote:
>
>   Le 11/02/2014 17:23, Yathiraj Udupi (yudupi) a écrit :
>
> Hi Dina,
>
>  Thanks for note about Climate logic.  This is something that will be
> very useful, when we will have to schedule from Nova multiple instances (of
> potentially different flavors) as a single request.  If the Solver
> Scheduler, can make a request to the Climate service to reserve the
> resources soon after the placement decision has been made, then the nova
> provisioning logic can handle the resource provisioning using the climate
> reserved leases.  Regarding Solver Scheduler for your reference, just sent
> another email about this with some pointers about it.  Otherwise this is
> the blueprint -
> https://blueprints.launchpad.net/nova/+spec/solver-scheduler
> I guess this is something to explore more and see how Nova provisioning
> logic to work with Climate leases. Or this is something that already works.
>  I need to find out more about Climate.
>
>  Thanks,
> Yathi.
>
>
>
> There are possibly 2 ways for creating a lease : either thru the CLI or by
> the python binding.
>
> We implemented these 2 possibilities within the current Climate 0.1
> release :
>  - a Nova extension plugin is responsible for creating the lease if a VM
> should be reserved (using the Climate pythonclient binding)
>  - an user can request for reserving a compute host using the Climate
> python client directly
>
> Both logics (VM and compute host) are actually referring to 2 distinct
> plugins in the Climate manager, so the actions are completely different.
>
> Based on your use-case, you could imagine a call from the SolverScheduler
> to Climate for creating a lease containing multiple VM reservations, and
> either you would use the Climate VM plugin or you would use a dedicated
> plugin if your need is different.
>
> I don't think that's a huge volume of work, as Climate already defines and
> implements the main features that you need.
>
> -Sylvain
>
>
> ___
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>


-- 

Best regards,

Dina Belova

Software Engineer

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


Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-11 Thread Yathiraj Udupi (yudupi)
hi Sylvain and Dina,

Thanks for your pointers about Climate.  I will take a closer look at it and 
try it out.  So after a reservation lease for a VM is made by Climate, who acts 
on it to finally instantiate the VM ? Is it Climate or Nova should act on the 
lease to finally provision the VM.

Thanks,
Yathi.

On 2/11/14, 8:42 AM, "Sylvain Bauza" 
mailto:sylvain.ba...@bull.net>> wrote:

Le 11/02/2014 17:23, Yathiraj Udupi (yudupi) a écrit :
Hi Dina,

Thanks for note about Climate logic.  This is something that will be very 
useful, when we will have to schedule from Nova multiple instances (of 
potentially different flavors) as a single request.  If the Solver Scheduler, 
can make a request to the Climate service to reserve the resources soon after 
the placement decision has been made, then the nova provisioning logic can 
handle the resource provisioning using the climate reserved leases.  Regarding 
Solver Scheduler for your reference, just sent another email about this with 
some pointers about it.  Otherwise this is the blueprint - 
https://blueprints.launchpad.net/nova/+spec/solver-scheduler
I guess this is something to explore more and see how Nova provisioning logic 
to work with Climate leases. Or this is something that already works.  I need 
to find out more about Climate.

Thanks,
Yathi.



There are possibly 2 ways for creating a lease : either thru the CLI or by the 
python binding.

We implemented these 2 possibilities within the current Climate 0.1 release :
 - a Nova extension plugin is responsible for creating the lease if a VM should 
be reserved (using the Climate pythonclient binding)
 - an user can request for reserving a compute host using the Climate python 
client directly

Both logics (VM and compute host) are actually referring to 2 distinct plugins 
in the Climate manager, so the actions are completely different.

Based on your use-case, you could imagine a call from the SolverScheduler to 
Climate for creating a lease containing multiple VM reservations, and either 
you would use the Climate VM plugin or you would use a dedicated plugin if your 
need is different.

I don't think that's a huge volume of work, as Climate already defines and 
implements the main features that you need.

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


Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-11 Thread Dina Belova
>
> This is something to explore to add in Nova, using
> a local service or external service (need to explore Climate).


I need to find out more about Climate.


Here is Climate Launchpad: https://launchpad.net/climate

That's still really young project, but I believe it'll have great future
speaking about resource reservation. So if you need some kind of
reservation logic, I also believe that should be implemented in Climate (as
it's proposed and currently implemented as Reservation-as-a-Service)

Thanks


On Tue, Feb 11, 2014 at 8:23 PM, Yathiraj Udupi (yudupi)
wrote:

>  Hi Dina,
>
>  Thanks for note about Climate logic.  This is something that will be
> very useful, when we will have to schedule from Nova multiple instances (of
> potentially different flavors) as a single request.  If the Solver
> Scheduler, can make a request to the Climate service to reserve the
> resources soon after the placement decision has been made, then the nova
> provisioning logic can handle the resource provisioning using the climate
> reserved leases.  Regarding Solver Scheduler for your reference, just sent
> another email about this with some pointers about it.  Otherwise this is
> the blueprint -
> https://blueprints.launchpad.net/nova/+spec/solver-scheduler
> I guess this is something to explore more and see how Nova provisioning
> logic to work with Climate leases. Or this is something that already works.
>  I need to find out more about Climate.
>
>  Thanks,
> Yathi.
>
>
>   On 2/11/14, 7:44 AM, "Dina Belova"  wrote:
>
>Like a restaurant reservation, it would "claim" the resources for use
>> by someone at a later date.  That way nobody else can use them.
>> That way the scheduler would be responsible for determining where the
>> resource should be allocated from, and getting a reservation for that
>> resource.  It would not have anything to do with actually instantiating the
>> instance/volume/etc.
>
>
>  Although I'm quite new to topic of Solver Scheduler, it seems to me that
> in that case you need to look on Climate project. It aims to provide
> resource reservation to OS clouds (and by resource I mean here
> instance/compute host/volume/etc.)
>
>  And Climate logic is like: create lease - get resources from common pool
> - do smth with them when lease start time will come.
>
>  I'll say one more time - I'm not really common with this discussion, but
> it looks like Climate might help here.
>
>  Thanks
> Dina
>
>
> On Tue, Feb 11, 2014 at 7:09 PM, Chris Friesen <
> chris.frie...@windriver.com> wrote:
>
>> On 02/11/2014 03:21 AM, Khanh-Toan Tran wrote:
>>
>>>  Second, there is nothing wrong with booting the instances (or

>>> instantiating other
>>>
 resources) as separate commands as long as we support some kind of
 reservation token.

>>>
>>> I'm not sure what reservation token would do, is it some kind of
>>> informing
>>> the scheduler that the resources would not be initiated until later ?
>>>
>>
>>  Like a restaurant reservation, it would "claim" the resources for use by
>> someone at a later date.  That way nobody else can use them.
>>
>> That way the scheduler would be responsible for determining where the
>> resource should be allocated from, and getting a reservation for that
>> resource.  It would not have anything to do with actually instantiating the
>> instance/volume/etc.
>>
>>
>>  Let's consider a following example:
>>>
>>> A user wants to create 2 VMs, a small one with 20 GB RAM, and a big one
>>> with 40 GB RAM in a datacenter consisted of 2 hosts: one with 50 GB RAM
>>> left, and another with 30 GB RAM left, using Filter Scheduler's default
>>> RamWeigher.
>>>
>>> If we pass the demand as two commands, there is a chance that the small
>>> VM
>>> arrives first. RamWeigher will put it in the 50 GB RAM host, which will
>>> be
>>> reduced to 30 GB RAM. Then, when the big VM request arrives, there will
>>> be
>>> no space left to host it. As a result, the whole demand is failed.
>>>
>>> Now if we can pass the two VMs in a command, SolverScheduler can put
>>> their
>>> constraints all together into one big LP as follow (x_uv = 1 if VM u is
>>> hosted in host v, 0 if not):
>>>
>>
>>  Yes.  So what I'm suggesting is that we schedule the two VMs as one call
>> to the SolverScheduler.  The scheduler then gets reservations for the
>> necessary resources and returns them to the caller.  This would be sort of
>> like the existing Claim object in nova/compute/claims.py but generalized
>> somewhat to other resources as well.
>>
>> The caller could then boot each instance separately (passing the
>> appropriate reservation/claim along with the boot request).  Because the
>> caller has a reservation the core code would know it doesn't need to
>> schedule or allocate resources, that's already been done.
>>
>> The advantage of this is that the scheduling and resource allocation is
>> done separately from the instantiation.  The instantiation API could remain
>> basically as-is except for support

Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-11 Thread Sylvain Bauza

Le 11/02/2014 17:23, Yathiraj Udupi (yudupi) a écrit :

Hi Dina,

Thanks for note about Climate logic.  This is something that will be 
very useful, when we will have to schedule from Nova multiple 
instances (of potentially different flavors) as a single request.  If 
the Solver Scheduler, can make a request to the Climate service to 
reserve the resources soon after the placement decision has been made, 
then the nova provisioning logic can handle the resource provisioning 
using the climate reserved leases.  Regarding Solver Scheduler for 
your reference, just sent another email about this with some pointers 
about it.  Otherwise this is the blueprint - 
https://blueprints.launchpad.net/nova/+spec/solver-scheduler
I guess this is something to explore more and see how Nova 
provisioning logic to work with Climate leases. Or this is something 
that already works.  I need to find out more about Climate.


Thanks,
Yathi.




There are possibly 2 ways for creating a lease : either thru the CLI or 
by the python binding.


We implemented these 2 possibilities within the current Climate 0.1 
release :
 - a Nova extension plugin is responsible for creating the lease if a 
VM should be reserved (using the Climate pythonclient binding)
 - an user can request for reserving a compute host using the Climate 
python client directly


Both logics (VM and compute host) are actually referring to 2 distinct 
plugins in the Climate manager, so the actions are completely different.


Based on your use-case, you could imagine a call from the 
SolverScheduler to Climate for creating a lease containing multiple VM 
reservations, and either you would use the Climate VM plugin or you 
would use a dedicated plugin if your need is different.


I don't think that's a huge volume of work, as Climate already defines 
and implements the main features that you need.


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


Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-11 Thread Yathiraj Udupi (yudupi)
Hi Dina,

Thanks for note about Climate logic.  This is something that will be very 
useful, when we will have to schedule from Nova multiple instances (of 
potentially different flavors) as a single request.  If the Solver Scheduler, 
can make a request to the Climate service to reserve the resources soon after 
the placement decision has been made, then the nova provisioning logic can 
handle the resource provisioning using the climate reserved leases.  Regarding 
Solver Scheduler for your reference, just sent another email about this with 
some pointers about it.  Otherwise this is the blueprint - 
https://blueprints.launchpad.net/nova/+spec/solver-scheduler
I guess this is something to explore more and see how Nova provisioning logic 
to work with Climate leases. Or this is something that already works.  I need 
to find out more about Climate.

Thanks,
Yathi.


On 2/11/14, 7:44 AM, "Dina Belova" 
mailto:dbel...@mirantis.com>> wrote:

Like a restaurant reservation, it would "claim" the resources for use by 
someone at a later date.  That way nobody else can use them.
That way the scheduler would be responsible for determining where the resource 
should be allocated from, and getting a reservation for that resource.  It 
would not have anything to do with actually instantiating the 
instance/volume/etc.

Although I'm quite new to topic of Solver Scheduler, it seems to me that in 
that case you need to look on Climate project. It aims to provide resource 
reservation to OS clouds (and by resource I mean here instance/compute 
host/volume/etc.)

And Climate logic is like: create lease - get resources from common pool - do 
smth with them when lease start time will come.

I'll say one more time - I'm not really common with this discussion, but it 
looks like Climate might help here.

Thanks
Dina


On Tue, Feb 11, 2014 at 7:09 PM, Chris Friesen 
mailto:chris.frie...@windriver.com>> wrote:
On 02/11/2014 03:21 AM, Khanh-Toan Tran wrote:
Second, there is nothing wrong with booting the instances (or
instantiating other
resources) as separate commands as long as we support some kind of
reservation token.

I'm not sure what reservation token would do, is it some kind of informing
the scheduler that the resources would not be initiated until later ?

Like a restaurant reservation, it would "claim" the resources for use by 
someone at a later date.  That way nobody else can use them.

That way the scheduler would be responsible for determining where the resource 
should be allocated from, and getting a reservation for that resource.  It 
would not have anything to do with actually instantiating the 
instance/volume/etc.


Let's consider a following example:

A user wants to create 2 VMs, a small one with 20 GB RAM, and a big one
with 40 GB RAM in a datacenter consisted of 2 hosts: one with 50 GB RAM
left, and another with 30 GB RAM left, using Filter Scheduler's default
RamWeigher.

If we pass the demand as two commands, there is a chance that the small VM
arrives first. RamWeigher will put it in the 50 GB RAM host, which will be
reduced to 30 GB RAM. Then, when the big VM request arrives, there will be
no space left to host it. As a result, the whole demand is failed.

Now if we can pass the two VMs in a command, SolverScheduler can put their
constraints all together into one big LP as follow (x_uv = 1 if VM u is
hosted in host v, 0 if not):

Yes.  So what I'm suggesting is that we schedule the two VMs as one call to the 
SolverScheduler.  The scheduler then gets reservations for the necessary 
resources and returns them to the caller.  This would be sort of like the 
existing Claim object in nova/compute/claims.py but generalized somewhat to 
other resources as well.

The caller could then boot each instance separately (passing the appropriate 
reservation/claim along with the boot request).  Because the caller has a 
reservation the core code would know it doesn't need to schedule or allocate 
resources, that's already been done.

The advantage of this is that the scheduling and resource allocation is done 
separately from the instantiation.  The instantiation API could remain 
basically as-is except for supporting an optional reservation token.


That responses to your first point, too. If we don't mind that some VMs
are placed and some are not (e.g. they belong to different apps), then
it's OK to pass them to the scheduler without Instance Group. However, if
the VMs are together (belong to an app), then we have to put them into an
Instance Group.

When I think of an "Instance Group", I think of 
"https://blueprints.launchpad.net/nova/+spec/instance-group-api-extension";.   
Fundamentally Instance Groups" describes a runtime relationship between 
different instances.

The scheduler doesn't necessarily care about a runtime relationship, it's just 
trying to allocate resources efficiently.

In the above example, there is no need for those two instances to necessarily 
be part of an Instance Group--we just want to 

Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-11 Thread Yathiraj Udupi (yudupi)
I thought of adding some more points about the Solver Scheduler to this
conversation.
Think of SolverScheduler as a placement decision engine, which gives an
optimal solution for the specified request based on the current
information available at a specific time.  The request could potentially
be a set of instances of the same flavor or different flavors (assuming we
eventually support scheduler APIs that can provide this).
Once the optimal placement decision is known, then we need to allocate the
resources. Currently Nova supports the final allocation of resources
(resource provisioning) one at a time.  I definitely agree there will be
more success in allocating all the requested instances, if there is a
support for reserving the spots as soon as a placement decision is taken
by the SolverScheduler. This is something to explore to add in Nova, using
a local service or external service (need to explore Climate).

If the required set of instances is known, irrespective of whether it is
part of one instance group, or multiple instance groups, you always get a
more optimal solution, if all of this is requested in one shot to the
solver scheduler, as the constraint solving happens in one shot, letting
you know if the entire set of instances is feasible to be placed given the
existing resource capacity.
If it is okay to support partial instantiation of subset of instances,
then it makes sense to provide support to retry one instance group at a
time, when the entire request is not feasible.
To add another point about instance group api implementation for icehouse,
it was decided in the HongKong summit to initially support only flat
instance groups without nesting. Hence if an application requires a big
topology of instances, they can easily belong to multiple instance groups,
and hence if you want the entire application requirement to be satisfied,
the entire set of instances from multiple flat instance groups should be
requested as a single shot to the solver scheduler.  Also, there is
additional work required to add new scheduler APIs to support requesting
instance groups of multiple flavors.

I think I have reiterated some of the points what Chris has mentioned
below.  But Yes, like I had stated earlier in this thread, we need to
separate the decision making phase from the initial request making, and
the final allocation provisioning (or orchestration).  In these phases, a
reservation phase, after the decision making,  will add additional
guarantees to allocate the placed instances.

Thanks,
Yathi. 



On 2/11/14, 7:09 AM, "Chris Friesen"  wrote:

>On 02/11/2014 03:21 AM, Khanh-Toan Tran wrote:
>>> Second, there is nothing wrong with booting the instances (or
>> instantiating other
>>> resources) as separate commands as long as we support some kind of
>>> reservation token.
>>
>> I'm not sure what reservation token would do, is it some kind of
>>informing
>> the scheduler that the resources would not be initiated until later ?
>
>Like a restaurant reservation, it would "claim" the resources for use by
>someone at a later date.  That way nobody else can use them.
>
>That way the scheduler would be responsible for determining where the
>resource should be allocated from, and getting a reservation for that
>resource.  It would not have anything to do with actually instantiating
>the instance/volume/etc.
>
>> Let's consider a following example:
>>
>> A user wants to create 2 VMs, a small one with 20 GB RAM, and a big one
>> with 40 GB RAM in a datacenter consisted of 2 hosts: one with 50 GB RAM
>> left, and another with 30 GB RAM left, using Filter Scheduler's default
>> RamWeigher.
>>
>> If we pass the demand as two commands, there is a chance that the small
>>VM
>> arrives first. RamWeigher will put it in the 50 GB RAM host, which will
>>be
>> reduced to 30 GB RAM. Then, when the big VM request arrives, there will
>>be
>> no space left to host it. As a result, the whole demand is failed.
>>
>> Now if we can pass the two VMs in a command, SolverScheduler can put
>>their
>> constraints all together into one big LP as follow (x_uv = 1 if VM u is
>> hosted in host v, 0 if not):
>
>Yes.  So what I'm suggesting is that we schedule the two VMs as one call
>to the SolverScheduler.  The scheduler then gets reservations for the
>necessary resources and returns them to the caller.  This would be sort
>of like the existing Claim object in nova/compute/claims.py but
>generalized somewhat to other resources as well.
>
>The caller could then boot each instance separately (passing the
>appropriate reservation/claim along with the boot request).  Because the
>caller has a reservation the core code would know it doesn't need to
>schedule or allocate resources, that's already been done.
>
>The advantage of this is that the scheduling and resource allocation is
>done separately from the instantiation.  The instantiation API could
>remain basically as-is except for supporting an optional reservation
>token.
>
>> That responses to y

Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-11 Thread Khanh-Toan Tran
Thanks, I will look closely at it.



De : Dina Belova [mailto:dbel...@mirantis.com]
Envoyé : mardi 11 février 2014 16:45
À : OpenStack Development Mailing List (not for usage questions)
Objet : Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and
Solver Scheduler



Like a restaurant reservation, it would "claim" the resources for use by
someone at a later date.  That way nobody else can use them.
That way the scheduler would be responsible for determining where the
resource should be allocated from, and getting a reservation for that
resource.  It would not have anything to do with actually instantiating
the instance/volume/etc.



Although I'm quite new to topic of Solver Scheduler, it seems to me that
in that case you need to look on Climate project. It aims to provide
resource reservation to OS clouds (and by resource I mean here
instance/compute host/volume/etc.)



And Climate logic is like: create lease - get resources from common pool -
do smth with them when lease start time will come.



I'll say one more time - I'm not really common with this discussion, but
it looks like Climate might help here.



Thanks

Dina



On Tue, Feb 11, 2014 at 7:09 PM, Chris Friesen
 wrote:

On 02/11/2014 03:21 AM, Khanh-Toan Tran wrote:

Second, there is nothing wrong with booting the instances (or

instantiating other

resources) as separate commands as long as we support some kind of
reservation token.


I'm not sure what reservation token would do, is it some kind of informing
the scheduler that the resources would not be initiated until later ?



Like a restaurant reservation, it would "claim" the resources for use by
someone at a later date.  That way nobody else can use them.

That way the scheduler would be responsible for determining where the
resource should be allocated from, and getting a reservation for that
resource.  It would not have anything to do with actually instantiating
the instance/volume/etc.



Let's consider a following example:

A user wants to create 2 VMs, a small one with 20 GB RAM, and a big one
with 40 GB RAM in a datacenter consisted of 2 hosts: one with 50 GB RAM
left, and another with 30 GB RAM left, using Filter Scheduler's default
RamWeigher.

If we pass the demand as two commands, there is a chance that the small VM
arrives first. RamWeigher will put it in the 50 GB RAM host, which will be
reduced to 30 GB RAM. Then, when the big VM request arrives, there will be
no space left to host it. As a result, the whole demand is failed.

Now if we can pass the two VMs in a command, SolverScheduler can put their
constraints all together into one big LP as follow (x_uv = 1 if VM u is
hosted in host v, 0 if not):



Yes.  So what I'm suggesting is that we schedule the two VMs as one call
to the SolverScheduler.  The scheduler then gets reservations for the
necessary resources and returns them to the caller.  This would be sort of
like the existing Claim object in nova/compute/claims.py but generalized
somewhat to other resources as well.

The caller could then boot each instance separately (passing the
appropriate reservation/claim along with the boot request).  Because the
caller has a reservation the core code would know it doesn't need to
schedule or allocate resources, that's already been done.

The advantage of this is that the scheduling and resource allocation is
done separately from the instantiation.  The instantiation API could
remain basically as-is except for supporting an optional reservation
token.



That responses to your first point, too. If we don't mind that some VMs
are placed and some are not (e.g. they belong to different apps), then
it's OK to pass them to the scheduler without Instance Group. However, if
the VMs are together (belong to an app), then we have to put them into an
Instance Group.



When I think of an "Instance Group", I think of
"https://blueprints.launchpad.net/nova/+spec/instance-group-api-extension";
.   Fundamentally Instance Groups" describes a runtime relationship
between different instances.

The scheduler doesn't necessarily care about a runtime relationship, it's
just trying to allocate resources efficiently.

In the above example, there is no need for those two instances to
necessarily be part of an Instance Group--we just want to schedule them
both at the same time to give the scheduler a better chance of fitting
them both.

More generally, the more instances I want to start up the more beneficial
it can be to pass them all to the scheduler at once in order to give the
scheduler more information.  Those instances could be parts of completely
independent Instance Groups, or not part of an Instance Group at all...the
scheduler can still do a better job if it has more information to work
with.



Chris

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists

Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-11 Thread Dina Belova
>
> Like a restaurant reservation, it would "claim" the resources for use by
> someone at a later date.  That way nobody else can use them.
> That way the scheduler would be responsible for determining where the
> resource should be allocated from, and getting a reservation for that
> resource.  It would not have anything to do with actually instantiating the
> instance/volume/etc.


Although I'm quite new to topic of Solver Scheduler, it seems to me that in
that case you need to look on Climate project. It aims to provide resource
reservation to OS clouds (and by resource I mean here instance/compute
host/volume/etc.)

And Climate logic is like: create lease - get resources from common pool -
do smth with them when lease start time will come.

I'll say one more time - I'm not really common with this discussion, but it
looks like Climate might help here.

Thanks
Dina


On Tue, Feb 11, 2014 at 7:09 PM, Chris Friesen
wrote:

> On 02/11/2014 03:21 AM, Khanh-Toan Tran wrote:
>
>> Second, there is nothing wrong with booting the instances (or
>>>
>> instantiating other
>>
>>> resources) as separate commands as long as we support some kind of
>>> reservation token.
>>>
>>
>> I'm not sure what reservation token would do, is it some kind of informing
>> the scheduler that the resources would not be initiated until later ?
>>
>
> Like a restaurant reservation, it would "claim" the resources for use by
> someone at a later date.  That way nobody else can use them.
>
> That way the scheduler would be responsible for determining where the
> resource should be allocated from, and getting a reservation for that
> resource.  It would not have anything to do with actually instantiating the
> instance/volume/etc.
>
>
>  Let's consider a following example:
>>
>> A user wants to create 2 VMs, a small one with 20 GB RAM, and a big one
>> with 40 GB RAM in a datacenter consisted of 2 hosts: one with 50 GB RAM
>> left, and another with 30 GB RAM left, using Filter Scheduler's default
>> RamWeigher.
>>
>> If we pass the demand as two commands, there is a chance that the small VM
>> arrives first. RamWeigher will put it in the 50 GB RAM host, which will be
>> reduced to 30 GB RAM. Then, when the big VM request arrives, there will be
>> no space left to host it. As a result, the whole demand is failed.
>>
>> Now if we can pass the two VMs in a command, SolverScheduler can put their
>> constraints all together into one big LP as follow (x_uv = 1 if VM u is
>> hosted in host v, 0 if not):
>>
>
> Yes.  So what I'm suggesting is that we schedule the two VMs as one call
> to the SolverScheduler.  The scheduler then gets reservations for the
> necessary resources and returns them to the caller.  This would be sort of
> like the existing Claim object in nova/compute/claims.py but generalized
> somewhat to other resources as well.
>
> The caller could then boot each instance separately (passing the
> appropriate reservation/claim along with the boot request).  Because the
> caller has a reservation the core code would know it doesn't need to
> schedule or allocate resources, that's already been done.
>
> The advantage of this is that the scheduling and resource allocation is
> done separately from the instantiation.  The instantiation API could remain
> basically as-is except for supporting an optional reservation token.
>
>
>  That responses to your first point, too. If we don't mind that some VMs
>> are placed and some are not (e.g. they belong to different apps), then
>> it's OK to pass them to the scheduler without Instance Group. However, if
>> the VMs are together (belong to an app), then we have to put them into an
>> Instance Group.
>>
>
> When I think of an "Instance Group", I think of "
> https://blueprints.launchpad.net/nova/+spec/instance-group-api-extension";.
>   Fundamentally Instance Groups" describes a runtime relationship between
> different instances.
>
> The scheduler doesn't necessarily care about a runtime relationship, it's
> just trying to allocate resources efficiently.
>
> In the above example, there is no need for those two instances to
> necessarily be part of an Instance Group--we just want to schedule them
> both at the same time to give the scheduler a better chance of fitting them
> both.
>
> More generally, the more instances I want to start up the more beneficial
> it can be to pass them all to the scheduler at once in order to give the
> scheduler more information.  Those instances could be parts of completely
> independent Instance Groups, or not part of an Instance Group at all...the
> scheduler can still do a better job if it has more information to work with.
>
>
> Chris
>
> ___
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>



-- 

Best regards,

Dina Belova

Software Engineer

Mirantis Inc.
___
OpenStack-dev mailing list
OpenS

Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-11 Thread Sylvain Bauza

Le 11/02/2014 16:09, Chris Friesen a écrit :


Yes.  So what I'm suggesting is that we schedule the two VMs as one 
call to the SolverScheduler.  The scheduler then gets reservations for 
the necessary resources and returns them to the caller.  This would be 
sort of like the existing Claim object in nova/compute/claims.py but 
generalized somewhat to other resources as well.


The caller could then boot each instance separately (passing the 
appropriate reservation/claim along with the boot request). Because 
the caller has a reservation the core code would know it doesn't need 
to schedule or allocate resources, that's already been done.


The advantage of this is that the scheduling and resource allocation 
is done separately from the instantiation.  The instantiation API 
could remain basically as-is except for supporting an optional 
reservation token.


I think you really need to look at what Climate is, but I don't want to 
be boring...


Climate can provide you some way for doing the reservation, and possibly 
you would only need to write a plugin for such a request.


-Sylvain


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


Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-11 Thread Chris Friesen

On 02/11/2014 03:21 AM, Khanh-Toan Tran wrote:

Second, there is nothing wrong with booting the instances (or

instantiating other

resources) as separate commands as long as we support some kind of
reservation token.


I'm not sure what reservation token would do, is it some kind of informing
the scheduler that the resources would not be initiated until later ?


Like a restaurant reservation, it would "claim" the resources for use by 
someone at a later date.  That way nobody else can use them.


That way the scheduler would be responsible for determining where the 
resource should be allocated from, and getting a reservation for that 
resource.  It would not have anything to do with actually instantiating 
the instance/volume/etc.



Let's consider a following example:

A user wants to create 2 VMs, a small one with 20 GB RAM, and a big one
with 40 GB RAM in a datacenter consisted of 2 hosts: one with 50 GB RAM
left, and another with 30 GB RAM left, using Filter Scheduler's default
RamWeigher.

If we pass the demand as two commands, there is a chance that the small VM
arrives first. RamWeigher will put it in the 50 GB RAM host, which will be
reduced to 30 GB RAM. Then, when the big VM request arrives, there will be
no space left to host it. As a result, the whole demand is failed.

Now if we can pass the two VMs in a command, SolverScheduler can put their
constraints all together into one big LP as follow (x_uv = 1 if VM u is
hosted in host v, 0 if not):


Yes.  So what I'm suggesting is that we schedule the two VMs as one call 
to the SolverScheduler.  The scheduler then gets reservations for the 
necessary resources and returns them to the caller.  This would be sort 
of like the existing Claim object in nova/compute/claims.py but 
generalized somewhat to other resources as well.


The caller could then boot each instance separately (passing the 
appropriate reservation/claim along with the boot request).  Because the 
caller has a reservation the core code would know it doesn't need to 
schedule or allocate resources, that's already been done.


The advantage of this is that the scheduling and resource allocation is 
done separately from the instantiation.  The instantiation API could 
remain basically as-is except for supporting an optional reservation token.



That responses to your first point, too. If we don't mind that some VMs
are placed and some are not (e.g. they belong to different apps), then
it's OK to pass them to the scheduler without Instance Group. However, if
the VMs are together (belong to an app), then we have to put them into an
Instance Group.


When I think of an "Instance Group", I think of 
"https://blueprints.launchpad.net/nova/+spec/instance-group-api-extension";. 
  Fundamentally Instance Groups" describes a runtime relationship 
between different instances.


The scheduler doesn't necessarily care about a runtime relationship, 
it's just trying to allocate resources efficiently.


In the above example, there is no need for those two instances to 
necessarily be part of an Instance Group--we just want to schedule them 
both at the same time to give the scheduler a better chance of fitting 
them both.


More generally, the more instances I want to start up the more 
beneficial it can be to pass them all to the scheduler at once in order 
to give the scheduler more information.  Those instances could be parts 
of completely independent Instance Groups, or not part of an Instance 
Group at all...the scheduler can still do a better job if it has more 
information to work with.


Chris

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


Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-11 Thread Khanh-Toan Tran
> In that model, we would pass a bunch of information about multiple

> resources to the solver scheduler, have it perform scheduling *and

> reserve the resources*, then return some kind of resource reservation

> tokens back to the caller for each resource.  The caller could then

> allocate each resource, pass in the reservation token indicating both

> that the resources had already been reserved as well as what the
specific

> resource that had been reserved (the compute-host in the case of an

> instance, for example).



Here the same problem comes back as with Heat. You can tell Climate to
regroup some VMs together. However, the bottom line is that we have no way
to “pass a bunch of information about multiple

resources to the solver scheduler”, since the current scheduler API does
not allow it. It only accept a command of unique type of resources
(flavor) and immediately calculates a provisioning plan for this command.
Thus if we want to retains this process and wait for the integrity of all
information (by passing several commands, probably with reservation token
or a group ID as now) before calculating the provisioning plan, then we
have to change the design of the scheduler completely, making it stateful,
which, IMO, is much more complicated than adding a new API.



> Please be aware that Climate [1] already exists for managing resources

> reservations. That doesn't make sense and has been discussed during

> last summit that reservations should be managed by Nova, but rather

> by another service.



No argument here J



De : Sylvain Bauza [mailto:sylvain.ba...@gmail.com]
Envoyé : mardi 11 février 2014 10:39
À : OpenStack Development Mailing List (not for usage questions)
Objet : Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and
Solver Scheduler







2014-02-10 18:45 GMT+01:00 Chris Friesen :



In that model, we would pass a bunch of information about multiple
resources to the solver scheduler, have it perform scheduling *and reserve
the resources*, then return some kind of resource reservation tokens back
to the caller for each resource.  The caller could then allocate each
resource, pass in the reservation token indicating both that the resources
had already been reserved as well as what the specific resource that had
been reserved (the compute-host in the case of an instance, for example).

Chris





Please be aware that Climate [1] already exists for managing resources
reservations. That doesn't make sense and has been discussed during last
summit that reservations should be managed by Nova, but rather by another
service.



-Sylvain



[1] : https://launchpad.net/climate

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


Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-11 Thread Sylvain Bauza
2014-02-10 18:45 GMT+01:00 Chris Friesen :

>
> In that model, we would pass a bunch of information about multiple
> resources to the solver scheduler, have it perform scheduling *and reserve
> the resources*, then return some kind of resource reservation tokens back
> to the caller for each resource.  The caller could then allocate each
> resource, pass in the reservation token indicating both that the resources
> had already been reserved as well as what the specific resource that had
> been reserved (the compute-host in the case of an instance, for example).
>
> Chris
>
>
Please be aware that Climate [1] already exists for managing resources
reservations. That doesn't make sense and has been discussed during last
summit that reservations should be managed by Nova, but rather by another
service.

-Sylvain

[1] : https://launchpad.net/climate
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-11 Thread Khanh-Toan Tran
> Second, there is nothing wrong with booting the instances (or
instantiating other
> resources) as separate commands as long as we support some kind of
> reservation token.

I'm not sure what reservation token would do, is it some kind of informing
the scheduler that the resources would not be initiated until later ?
Let's consider a following example:

A user wants to create 2 VMs, a small one with 20 GB RAM, and a big one
with 40 GB RAM in a datacenter consisted of 2 hosts: one with 50 GB RAM
left, and another with 30 GB RAM left, using Filter Scheduler's default
RamWeigher.

If we pass the demand as two commands, there is a chance that the small VM
arrives first. RamWeigher will put it in the 50 GB RAM host, which will be
reduced to 30 GB RAM. Then, when the big VM request arrives, there will be
no space left to host it. As a result, the whole demand is failed.

Now if we can pass the two VMs in a command, SolverScheduler can put their
constraints all together into one big LP as follow (x_uv = 1 if VM u is
hosted in host v, 0 if not):

  50GB RAM host constraint:  20 *x_11 + 40 * x_21 <=50
  30GB RAM host constraint:  20 *x_12 + 40 * x_22 <=30
  Small VM presence constraint:x_11 + x_12 = 1
  Big VM presence constraint:x_21 + x_22 = 1

>From these constraints there is only one root that is: x_11 = 0, x12 = 1;
x_21 = 1; x_22 = 0; i.e, small VM hosted in 30 GB RAM host, and big VM
hosted in 50 GB RAM host.

As a conclusion, if we have VMs of multiple flavors to deal with, we
cannot give the correct answer if we do not have all information.
Therefore, if by reservation you mean that the scheduler would hold off
the scheduling process and save the information until it receives all
necessary information, then I'm agreed. But it just a workaround of
passing the whole demand as a whole, which would better be handled by an
API.

That responses to your first point, too. If we don't mind that some VMs
are placed and some are not (e.g. they belong to different apps), then
it's OK to pass them to the scheduler without Instance Group. However, if
the VMs are together (belong to an app), then we have to put them into an
Instance Group.

> -Message d'origine-
> De : Chris Friesen [mailto:chris.frie...@windriver.com]
> Envoyé : lundi 10 février 2014 18:45
> À : openstack-dev@lists.openstack.org
> Objet : Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and
Solver
> Scheduler
>
> On 02/10/2014 10:54 AM, Khanh-Toan Tran wrote:
>
> > Heat
> > may orchestrate the provisioning process, but eventually the instances
> > will be passed to Nova-scheduler (Gantt) as separated commands, which
> > is exactly the problem Solver Scheduler wants to correct. Therefore
> > the Instance Group API is needed, wherever it is used
(nova-scheduler/Gantt).
>
> I'm not sure that this follows.
>
> First, the instance groups API is totally separate since we may want to
schedule
> a number of instances simultaneously without them being part of an
instance
> group.  Certainly in the case of using instance groups that would be one
input
> into the scheduler, but it's an optional input.
>
> Second, there is nothing wrong with booting the instances (or
instantiating other
> resources) as separate commands as long as we support some kind of
> reservation token.
>
> In that model, we would pass a bunch of information about multiple
resources
> to the solver scheduler, have it perform scheduling *and reserve the
resources*,
> then return some kind of resource reservation tokens back to the caller
for each
> resource.  The caller could then allocate each resource, pass in the
reservation
> token indicating both that the resources had already been reserved as
well as
> what the specific resource that had been reserved (the compute-host in
the case
> of an instance, for example).
>
> Chris
>
> ___
> 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][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-10 Thread Chris Friesen

On 02/10/2014 10:54 AM, Khanh-Toan Tran wrote:


Heat
may orchestrate the provisioning process, but eventually the instances will be
passed to Nova-scheduler (Gantt) as separated commands, which is exactly the
problem Solver Scheduler wants to correct. Therefore the Instance Group API is
needed, wherever it is used (nova-scheduler/Gantt).


I'm not sure that this follows.

First, the instance groups API is totally separate since we may want to 
schedule a number of instances simultaneously without them being part of 
an instance group.  Certainly in the case of using instance groups that 
would be one input into the scheduler, but it's an optional input.


Second, there is nothing wrong with booting the instances (or 
instantiating other resources) as separate commands as long as we 
support some kind of reservation token.


In that model, we would pass a bunch of information about multiple 
resources to the solver scheduler, have it perform scheduling *and 
reserve the resources*, then return some kind of resource reservation 
tokens back to the caller for each resource.  The caller could then 
allocate each resource, pass in the reservation token indicating both 
that the resources had already been reserved as well as what the 
specific resource that had been reserved (the compute-host in the case 
of an instance, for example).


Chris

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


Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-10 Thread Khanh-Toan Tran
> I'm not sure what you mean by "whatever it takes to finally create the
> instances", but that sounds like what I had assumed everybody meant by
> "orchestration" (until I heard that there is no widespread agreement) ---
> and I think we need to take a properly open approach to that.  I think the
> proper API for cross-service whole-pattern scheduling should primarily
> focus on conveying the placement problem to the thing that will make the
> joint decision.  After the joint decision is made comes the time to create
> the individual resources.  I think we can NOT mandate one particular agent
> or language for that.  We will have to allow general clients to make calls
> on Nova, Cinder, etc. to do the individual resource creations (with some
> sort of reference to the decision that was already made).  My original
> position was that we could use Heat for this, but I think we have gotten
> push-back saying it is NOT OK to *require* that.  For example, note that
> some people do not want to use Heat at all, they prefer to make individual
> calls on Nova, Cinder, etc.  Of course, we definitely want to support,
> among others, the people who *do* use Heat.

I do not think Heat would be appropriate, either. Heat does not have the
detailed knowledges on the infrastructure and it uses Nova (Gantt) API to
pass the command, so if Nova (Gantt) API does not support multiple instances
provisioning, Heat will not get the joint decision for all VMs as a whole. Heat
may orchestrate the provisioning process, but eventually the instances will be
passed to Nova-scheduler (Gantt) as separated commands, which is exactly the
problem Solver Scheduler wants to correct. Therefore the Instance Group API is
needed, wherever it is used (nova-scheduler/Gantt).

I think Gantt should be the cross-service joint decision point. Heat still keeps
orchestrating processes like it always does, but the provisioning decision has
to be made all together as one atomic step in Heat's whole process.

> Here's a more detailed description of our thoughts on how such a protocol 
> might
> look: 
> https://wiki.openstack.org/wiki/Nova/PlacementAdvisorAndEngine 
> We've concentrated on the Nova scheduler; Would be interesting to see if this
> protocol aligns with Yathiraj's thoughts on a global scheduler addressing
> compute+storage+network. 
> Feedback is most welcome. 

Thank you for the link, I will give it a try.

Best regards,

Toan


- Original Message -
> From: "Mike Spreitzer" 
> To: "OpenStack Development Mailing List (not for usage questions)" 
> 
> Sent: Tuesday, February 4, 2014 9:05:22 AM
> Subject: Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and 
> Solver Scheduler
> 
> > From: Khanh-Toan Tran 
> ...
> > There is an unexpected line break in the middle of the link, so I post
> it
> > again:
> > 
> > 
> https://docs.google.com/document/d/1RfP7jRsw1mXMjd7in72ARjK0fTrsQv1bqolOri
> > IQB2Y
> 
> The mailing list software keeps inserting that line break.  I
> re-constructed the URL and looked at the document.  As you point out at
> the end, the way you attempt to formulate load balancing as a linear
> objective does not work.  I think load-balancing is a non-linear thing.
> 
> I also doubt that simple load balancing is what cloud providers want; I
> think cloud providers want to bunch up load, within limits, for example to
> keep some hosts idle so that they can be powered down to save on costs or
> left available for future exclusive use.
> 
> 
> > From: Gil Rapaport 
> ...
> > As Alex Glikson hinted a couple of weekly meetings ago, our approach
> > to this is to think of the driver's work as split between two entities:
> > -- A Placement Advisor, that constructs placement problems for
> > scheduling requests (filter-scheduler and policy-based-scheduler)
> > -- A Placement Engine, that solves placement problems (HostManager
> > in get_filtered_hosts() and solver-scheduler with its LP engine).
> 
> Yes, I see the virtue in that separation.  Let me egg it on a little. What
> Alex and KTT want is more structure in the Placement Advisor, where there
> is a multiplicity of plugins, each bound to some fraction of the whole
> system, and a protocol for combining the advice from the plugins.  I would
> also like to remind you of another kind of structure: some of the
> placement desiderata come from the cloud users, and some from the cloud
> provider.
> 
> 
> > From: "Yathiraj Udupi (yudupi)" 
> ...
> > Like you point out, I do agree the two entities of placement
> > advisor, and the placement engine, but I think there should be a
> > third one – the provisioning engine,

Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-06 Thread Gil Rapaport
Mike, exactly: we would like to allow flexibility & complexity at the 
Advisor level without it affecting the placement computation.
Advisors are expected to manifest complex behavior as suggested by these 
BPs and gather constraints from multiple sources (users and providers).

The idea is indeed to define a protocol that can express placement 
requests without exposing the engine to 
complex/high-level/rapidly-changing/3rd-party semantics.
I think BPs such as the group API and flexible-evacuation combined with 
the power of LP solvers Yathiraj mentioned do push the scheduler towards 
being a more generic placement oracle, so the protocol should probably not 
be limited to the current "deploy one or more instances of the same kind" 
request.

Here's a more detailed description of our thoughts on how such a protocol 
might look:
https://wiki.openstack.org/wiki/Nova/PlacementAdvisorAndEngine
We've concentrated on the Nova scheduler; Would be interesting to see if 
this protocol aligns with Yathiraj's thoughts on a global scheduler 
addressing compute+storage+network.
Feedback is most welcome.

Regards,
Gil



From:   Mike Spreitzer 
To: "OpenStack Development Mailing List \(not for usage questions\)" 
, 
Date:   02/04/2014 10:10 AM
Subject:    Re: [openstack-dev] [Nova][Scheduler] Policy Based 
Scheduler and Solver Scheduler



> From: Khanh-Toan Tran  
...
> There is an unexpected line break in the middle of the link, so I post 
it
> again:
> 
> 
https://docs.google.com/document/d/1RfP7jRsw1mXMjd7in72ARjK0fTrsQv1bqolOri
> IQB2Y

The mailing list software keeps inserting that line break.  I 
re-constructed the URL and looked at the document.  As you point out at 
the end, the way you attempt to formulate load balancing as a linear 
objective does not work.  I think load-balancing is a non-linear thing. 

I also doubt that simple load balancing is what cloud providers want; I 
think cloud providers want to bunch up load, within limits, for example to 
keep some hosts idle so that they can be powered down to save on costs or 
left available for future exclusive use. 


> From: Gil Rapaport  
...
> As Alex Glikson hinted a couple of weekly meetings ago, our approach
> to this is to think of the driver's work as split between two entities: 
> -- A Placement Advisor, that constructs placement problems for 
> scheduling requests (filter-scheduler and policy-based-scheduler) 
> -- A Placement Engine, that solves placement problems (HostManager 
> in get_filtered_hosts() and solver-scheduler with its LP engine). 

Yes, I see the virtue in that separation.  Let me egg it on a little. What 
Alex and KTT want is more structure in the Placement Advisor, where there 
is a multiplicity of plugins, each bound to some fraction of the whole 
system, and a protocol for combining the advice from the plugins.  I would 
also like to remind you of another kind of structure: some of the 
placement desiderata come from the cloud users, and some from the cloud 
provider. 


> From: "Yathiraj Udupi (yudupi)" 
...
> Like you point out, I do agree the two entities of placement 
> advisor, and the placement engine, but I think there should be a 
> third one – the provisioning engine, which should be responsible for
> whatever it takes to finally create the instances, after the 
> placement decision has been taken. 

I'm not sure what you mean by "whatever it takes to finally create the 
instances", but that sounds like what I had assumed everybody meant by 
"orchestration" (until I heard that there is no widespread agreement) --- 
and I think we need to take a properly open approach to that.  I think the 
proper API for cross-service whole-pattern scheduling should primarily 
focus on conveying the placement problem to the thing that will make the 
joint decision.  After the joint decision is made comes the time to create 
the individual resources.  I think we can NOT mandate one particular agent 
or language for that.  We will have to allow general clients to make calls 
on Nova, Cinder, etc. to do the individual resource creations (with some 
sort of reference to the decision that was already made).  My original 
position was that we could use Heat for this, but I think we have gotten 
push-back saying it is NOT OK to *require* that.  For example, note that 
some people do not want to use Heat at all, they prefer to make individual 
calls on Nova, Cinder, etc.  Of course, we definitely want to support, 
among others, the people who *do* use Heat. 


> From: "Yathiraj Udupi (yudupi)"  
...
> The solver-scheduler is designed to solve for an arbitrary list of 
> instances of different flavors. We need to have some updated apis in
> the scheduler to be able to pass on such requests. Instance group 
> api is an initial effort to specify such groups. 

I'll remind the

Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-04 Thread Mike Spreitzer
> From: Khanh-Toan Tran 
...
> There is an unexpected line break in the middle of the link, so I post 
it
> again:
> 
> 
https://docs.google.com/document/d/1RfP7jRsw1mXMjd7in72ARjK0fTrsQv1bqolOri
> IQB2Y

The mailing list software keeps inserting that line break.  I 
re-constructed the URL and looked at the document.  As you point out at 
the end, the way you attempt to formulate load balancing as a linear 
objective does not work.  I think load-balancing is a non-linear thing.

I also doubt that simple load balancing is what cloud providers want; I 
think cloud providers want to bunch up load, within limits, for example to 
keep some hosts idle so that they can be powered down to save on costs or 
left available for future exclusive use.


> From: Gil Rapaport 
...
> As Alex Glikson hinted a couple of weekly meetings ago, our approach
> to this is to think of the driver's work as split between two entities: 
> -- A Placement Advisor, that constructs placement problems for 
> scheduling requests (filter-scheduler and policy-based-scheduler) 
> -- A Placement Engine, that solves placement problems (HostManager 
> in get_filtered_hosts() and solver-scheduler with its LP engine). 

Yes, I see the virtue in that separation.  Let me egg it on a little. What 
Alex and KTT want is more structure in the Placement Advisor, where there 
is a multiplicity of plugins, each bound to some fraction of the whole 
system, and a protocol for combining the advice from the plugins.  I would 
also like to remind you of another kind of structure: some of the 
placement desiderata come from the cloud users, and some from the cloud 
provider.


> From: "Yathiraj Udupi (yudupi)" 
...
> Like you point out, I do agree the two entities of placement 
> advisor, and the placement engine, but I think there should be a 
> third one – the provisioning engine, which should be responsible for
> whatever it takes to finally create the instances, after the 
> placement decision has been taken. 

I'm not sure what you mean by "whatever it takes to finally create the 
instances", but that sounds like what I had assumed everybody meant by 
"orchestration" (until I heard that there is no widespread agreement) --- 
and I think we need to take a properly open approach to that.  I think the 
proper API for cross-service whole-pattern scheduling should primarily 
focus on conveying the placement problem to the thing that will make the 
joint decision.  After the joint decision is made comes the time to create 
the individual resources.  I think we can NOT mandate one particular agent 
or language for that.  We will have to allow general clients to make calls 
on Nova, Cinder, etc. to do the individual resource creations (with some 
sort of reference to the decision that was already made).  My original 
position was that we could use Heat for this, but I think we have gotten 
push-back saying it is NOT OK to *require* that.  For example, note that 
some people do not want to use Heat at all, they prefer to make individual 
calls on Nova, Cinder, etc.  Of course, we definitely want to support, 
among others, the people who *do* use Heat.


> From: "Yathiraj Udupi (yudupi)" 
...
> The solver-scheduler is designed to solve for an arbitrary list of 
> instances of different flavors. We need to have some updated apis in
> the scheduler to be able to pass on such requests. Instance group 
> api is an initial effort to specify such groups.

I'll remind the other readers of our draft of such a thing, at

https://docs.google.com/document/d/17OIiBoIavih-1y4zzK0oXyI66529f-7JTCVj-BcXURA

(you will have to re-assemble the URL if the ML software broke it for you)

My take-aways from the Icehouse summit's review of that are as follows.

(1) do NOT put orchestration under the covers (as I said above), allow 
general clients to make the calls to create the individual resources.

(2) The community was not convinced that this would scale as needed.

(3) There were some remarks about "too complicated" but I am not clear on 
whether the issue(s) were: (a) there was not clear/compelling motivation 
for some of the expressiveness offered, (b) there is a simpler way to 
accomplish the same things, (c) it's all good but more than we can take on 
now, and/or (d) something else I did not get.


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


Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-03 Thread Yathiraj Udupi (yudupi)
The solver-scheduler is designed to solve for an arbitrary list of instances of 
different flavors. We need to have some updated apis in the scheduler to be 
able to pass on such requests. Instance group api is an initial effort to 
specify such groups.



Even now the existing solver scheduler patch,  works for a group request,  only 
that it is a group of a single flavor. It still solves once for the entire 
group based on the constraints on available capacity.



With updates to the api that call the solver scheduler we can easily 
demonstrate how an arbitrary group of VM request can be satisfied and solved 
together in a single constraint solver run. (LP based solver for now in the 
current patch, But can be any constraint solver)



Thanks,

Yathi.





-- Original message--

From: Chris Friesen

Date: Mon, 2/3/2014 11:24 AM

To: openstack-dev@lists.openstack.org;

Subject:Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver 
Scheduler



On 02/03/2014 12:28 PM, Khanh-Toan Tran wrote:

> Another though would be the need for Instance Group API [1].
> Currently users can only request multiple instances of the same
> flavors. These requests do not need LP to solve, just placing
> instances one by one is sufficient. Therefore we need this API so
> that users can request instances of different flavors, with some
> relations (constraints) among them. The advantage is that this logic
> and API will help us add Cinder volumes with ease (not sure how the
> Cinder-stackers think about it, though).

I don't think that the instance group API actually helps here.  (I think
it's a good idea, just not directly related to this.)

I think what we really want is the ability to specify an arbitrary list
of instances (or other things) that you want to schedule, each of which
may have different image/flavor, each of which may be part of an
instance group, a specific network, have metadata which associates with
a host aggregate, desire specific PCI passthrough devices, etc.

An immediate user of something like this would be heat, since it would
let them pass the whole stack to the scheduler in one API call.  The
scheduler could then take a more holistic view, possibly doing a better
fitting job than if the instances are scheduled one-at-a-time.

Chris

___
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][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-03 Thread Chris Friesen

On 02/03/2014 12:28 PM, Khanh-Toan Tran wrote:


Another though would be the need for Instance Group API [1].
Currently users can only request multiple instances of the same
flavors. These requests do not need LP to solve, just placing
instances one by one is sufficient. Therefore we need this API so
that users can request instances of different flavors, with some
relations (constraints) among them. The advantage is that this logic
and API will help us add Cinder volumes with ease (not sure how the
Cinder-stackers think about it, though).


I don't think that the instance group API actually helps here.  (I think 
it's a good idea, just not directly related to this.)


I think what we really want is the ability to specify an arbitrary list 
of instances (or other things) that you want to schedule, each of which 
may have different image/flavor, each of which may be part of an 
instance group, a specific network, have metadata which associates with 
a host aggregate, desire specific PCI passthrough devices, etc.


An immediate user of something like this would be heat, since it would 
let them pass the whole stack to the scheduler in one API call.  The 
scheduler could then take a more holistic view, possibly doing a better 
fitting job than if the instances are scheduled one-at-a-time.


Chris

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


Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-02-03 Thread Khanh-Toan Tran
Nice idea. I also think that filters and weighers are FilterScheduler-specific. 
Thus, that is unnecessary for SolverScheduler to try to translate all 
filters/weighers into constraints. It would be easier for transition, though. 
Anyway, we just need some placement logics that will be written as constraints, 
as the they are currently represented as filters in FilterScheduler. So yes we 
will need a placement advisor here.

For provisioning engine, isn't scheduler manager (or maybe nova-conductor) will 
be the one? I still don't figure out after we have gantt, how nova-conductor 
interact with gantt, or we put its logic into gantt, too.

Another though would be the need for Instance Group API [1]. Currently users 
can only request multiple instances of the same flavors. These requests do not 
need LP to solve, just placing instances one by one is sufficient. Therefore we 
need this API so that users can request instances of different flavors, with 
some relations (constraints) among them. The advantage is that this logic and 
API will help us add Cinder volumes with ease (not sure how the Cinder-stackers 
think about it, though).

Best regards,
Toan

[1] https://wiki.openstack.org/wiki/InstanceGroupApiExtension

- Original Message -
From: Yathiraj Udupi (yudupi) 
To: OpenStack Development Mailing List (not for usage questions) 

Sent: Thu, 30 Jan 2014 18:13:59 - (UTC)
Subject: Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and 
Solver Scheduler

It is really good we are reviving the conversation we started during the last 
summit in Hongkong during one of the scheduler sessions called “Smart resource 
placement”. This is the document we used to discuss during the session. 
Probably you may have seen this before:
https://docs.google.com/document/d/1IiPI0sfaWb1bdYiMWzAAx0HYR6UqzOan_Utgml5W1HI/edit

The idea is to separate out the logic for the placement decision engine from 
the actual request and the final provisioning phase. The placement engine 
itself can be pluggable, and as we show in the solver scheduler blueprint, we 
show how it fits inside of Nova.

The discussions at the summit and in our weekly scheduler meetings led to us 
starting the “Smart resource placement” idea inside of Nova, and then take it 
to a unified global level spanning cross services such as cinder and neutron.

Like you point out, I do agree the two entities of placement advisor, and the 
placement engine, but I think there should be a third one – the provisioning 
engine, which should be responsible for whatever it takes to finally create the 
instances, after the placement decision has been taken.
It is good to take incremental approaches, hence we should try to get patches 
like these get accepted first within nova, and then slowly split up the logic 
into separate entities.

Thanks,
Yathi.





On 1/30/14, 7:14 AM, "Gil Rapaport" mailto:g...@il.ibm.com>> 
wrote:

Hi all,

Excellent definition of the issue at hand.
The recent blueprints of policy-based-scheduler and solver-scheduler indeed 
highlight a possible weakness in the current design, as despite their 
completely independent contributions (i.e. which filters to apply per request 
vs. how to compute a valid placement) their implementation as drivers makes 
combining them non-trivial.

As Alex Glikson hinted a couple of weekly meetings ago, our approach to this is 
to think of the driver's work as split between two entities:
-- A Placement Advisor, that constructs placement problems for scheduling 
requests (filter-scheduler and policy-based-scheduler)
-- A Placement Engine, that solves placement problems (HostManager in 
get_filtered_hosts() and solver-scheduler with its LP engine).

Such modularity should allow developing independent mechanisms that can be 
combined seamlessly through a unified & well-defined protocol based on 
constructing "placement problem" objects by the placement advisor and then 
passing them to the placement engine, which returns the solution. The protocol 
can be orchestrated by the scheduler manager.

As can be seen at this point already, the policy-based-scheduler blueprint can 
now be positioned as an improvement of the placement advisor. Similarly, the 
solver-scheduler blueprint can be positioned as an improvement of the placement 
engine.

I'm working on a wiki page that will get into the details.
Would appreciate your initial thoughts on this approach.

Regards,
Gil



From: Khanh-Toan Tran 
mailto:khanh-toan.t...@cloudwatt.com>>
To: "OpenStack Development Mailing List (not for usage questions)" 
mailto:openstack-dev@lists.openstack.org>>,
Date: 01/30/2014 01:43 PM
Subject: Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and 
Solver Scheduler




Hi Sylvain,

1) Some Filters such as AggregateCoreFilter, AggregateRAMFilter can change its 
parameters for aggregates. But what if admin wants to ch

Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-01-30 Thread Yathiraj Udupi (yudupi)
It is really good we are reviving the conversation we started during the last 
summit in Hongkong during one of the scheduler sessions called “Smart resource 
placement”.   This is the document we used to discuss during the session.  
Probably you may have seen this before:
https://docs.google.com/document/d/1IiPI0sfaWb1bdYiMWzAAx0HYR6UqzOan_Utgml5W1HI/edit

The idea is to separate out the logic for the placement decision engine from 
the actual request and the final provisioning  phase.   The placement engine 
itself can be pluggable, and as we show in the solver scheduler blueprint,  we 
show how it fits inside of Nova.

The discussions at the summit and in our weekly scheduler meetings led to us 
starting the “Smart resource placement” idea inside of Nova, and then take it 
to a unified global level spanning cross services such as cinder and neutron.

Like you point out, I do agree the two entities of placement advisor, and the 
placement engine, but I think there should be a third one – the provisioning 
engine, which should be responsible for whatever it takes to finally create the 
instances, after the placement decision has been taken.
It is good to take incremental approaches, hence we should try to get patches 
like these  get accepted first within nova, and then slowly split up the logic 
into separate entities.

Thanks,
Yathi.





On 1/30/14, 7:14 AM, "Gil Rapaport" mailto:g...@il.ibm.com>> 
wrote:

Hi all,

Excellent definition of the issue at hand.
The recent blueprints of policy-based-scheduler and solver-scheduler indeed 
highlight a possible weakness in the current design, as despite their 
completely independent contributions (i.e. which filters to apply per request 
vs. how to compute a valid placement) their implementation as drivers makes 
combining them non-trivial.

As Alex Glikson hinted a couple of weekly meetings ago, our approach to this is 
to think of the driver's work as split between two entities:
-- A Placement Advisor, that constructs placement problems for scheduling 
requests (filter-scheduler and policy-based-scheduler)
-- A Placement Engine, that solves placement problems (HostManager in 
get_filtered_hosts() and solver-scheduler with its LP engine).

Such modularity should allow developing independent mechanisms that can be 
combined seamlessly through a unified & well-defined protocol based on 
constructing "placement problem" objects by the placement advisor and then 
passing them to the placement engine, which returns the solution. The protocol 
can be orchestrated by the scheduler manager.

As can be seen at this point already, the policy-based-scheduler blueprint can 
now be positioned as an improvement of the placement advisor. Similarly, the 
solver-scheduler blueprint can be positioned as an improvement of the placement 
engine.

I'm working on a wiki page that will get into the details.
Would appreciate your initial thoughts on this approach.

Regards,
Gil



From:Khanh-Toan Tran 
mailto:khanh-toan.t...@cloudwatt.com>>
To:"OpenStack Development Mailing List \(not for usage questions\)" 
mailto:openstack-dev@lists.openstack.org>>,
Date:    01/30/2014 01:43 PM
Subject:    Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler 
andSolver Scheduler




Hi Sylvain,

1) Some Filters such as AggregateCoreFilter, AggregateRAMFilter can change its 
parameters for aggregates. But what if admin wants to change for all hosts in 
an availability-zone? Does he have to rewrite all the parameters in all 
aggregates? Or should we create a new AvailabilityZoneCoreFilter?

The Policy Based Scheduler (PBS)  blueprint separates the effect (filter 
according to Core) from its target (all hosts in an aggregate, or in an 
availability-zone). It will benefit all filters, not just CoreFilter or 
RAMFilter, so that we can avoid creating for each filter XFilter the 
AggregateXFilter and AvailabilityZoneWFilter from now on. Beside, if admin 
wants to apply the a filter to some aggregates (or availability-zone) and not 
the other (don’t call filters at all, not just modify parameters), he can do 
it. It help us avoid running all filters on all hosts.

2) In fact, we also prepare for a separated scheduler in which PBS is a very 
first step of it, that’s why we purposely separate the Policy Based Scheduler 
from Policy Based Scheduling Module (PBSM) [1] which is the core of our 
architecture. If you look at our code, you will see that 
Policy_Based_Scheduler.py is only slightly different from Filter Scheduler. 
That is because we just want a link from Nova-scheduler to PBSM. We’re trying 
to push some more management into scheduler without causing too much 
modification, as you can see in the patch .

Thus I’m very happy when Gantt is proposed. As I see it, Gantt is based on 
Nova-scheduler code, with the planning on replacing nova-scheduler in J. The 
separa

Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-01-30 Thread Gil Rapaport
Hi all,

Excellent definition of the issue at hand.
The recent blueprints of policy-based-scheduler and solver-scheduler 
indeed highlight a possible weakness in the current design, as despite 
their completely independent contributions (i.e. which filters to apply 
per request vs. how to compute a valid placement) their implementation as 
drivers makes combining them non-trivial.

As Alex Glikson hinted a couple of weekly meetings ago, our approach to 
this is to think of the driver's work as split between two entities:
-- A Placement Advisor, that constructs placement problems for scheduling 
requests (filter-scheduler and policy-based-scheduler)
-- A Placement Engine, that solves placement problems (HostManager in 
get_filtered_hosts() and solver-scheduler with its LP engine).

Such modularity should allow developing independent mechanisms that can be 
combined seamlessly through a unified & well-defined protocol based on 
constructing "placement problem" objects by the placement advisor and then 
passing them to the placement engine, which returns the solution. The 
protocol can be orchestrated by the scheduler manager. 

As can be seen at this point already, the policy-based-scheduler blueprint 
can now be positioned as an improvement of the placement advisor. 
Similarly, the solver-scheduler blueprint can be positioned as an 
improvement of the placement engine.

I'm working on a wiki page that will get into the details.
Would appreciate your initial thoughts on this approach.

Regards,
Gil



From:   Khanh-Toan Tran 
To: "OpenStack Development Mailing List \(not for usage questions\)" 
, 
Date:   01/30/2014 01:43 PM
Subject:    Re: [openstack-dev] [Nova][Scheduler] Policy Based 
Scheduler and   Solver Scheduler



Hi Sylvain,
 
1) Some Filters such as AggregateCoreFilter, AggregateRAMFilter can change 
its parameters for aggregates. But what if admin wants to change for all 
hosts in an availability-zone? Does he have to rewrite all the parameters 
in all aggregates? Or should we create a new AvailabilityZoneCoreFilter?
 
The Policy Based Scheduler (PBS)  blueprint separates the effect (filter 
according to Core) from its target (all hosts in an aggregate, or in an 
availability-zone). It will benefit all filters, not just CoreFilter or 
RAMFilter, so that we can avoid creating for each filter XFilter the 
AggregateXFilter and AvailabilityZoneWFilter from now on. Beside, if admin 
wants to apply the a filter to some aggregates (or availability-zone) and 
not the other (don’t call filters at all, not just modify parameters), he 
can do it. It help us avoid running all filters on all hosts.
 
2) In fact, we also prepare for a separated scheduler in which PBS is a 
very first step of it, that’s why we purposely separate the Policy Based 
Scheduler from Policy Based Scheduling Module (PBSM) [1] which is the core 
of our architecture. If you look at our code, you will see that 
Policy_Based_Scheduler.py is only slightly different from Filter 
Scheduler. That is because we just want a link from Nova-scheduler to 
PBSM. We’re trying to push some more management into scheduler without 
causing too much modification, as you can see in the patch .
 
Thus I’m very happy when Gantt is proposed. As I see it, Gantt is based on 
Nova-scheduler code, with the planning on replacing nova-scheduler in J. 
The separation from Nova will be complicated, but not on scheduling part. 
Thus integrating PBS and PBSM into Gantt would not be a problem.
 
Best regards,
 
[1] 
https://docs.google.com/document/d/1gr4Pb1ErXymxN9QXR4G_jVjLqNOg2ij9oA0JrLwMVRA
 
Toan
 
De : Sylvain Bauza [mailto:sylvain.ba...@gmail.com] 
Envoyé : jeudi 30 janvier 2014 11:16
À : OpenStack Development Mailing List (not for usage questions)
Objet : Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and 
Solver Scheduler
 
Hi Khanh-Toan,
 
I only have one comment on your proposal : why are you proposing something 
new for overcommitments with aggregates while the AggregateCoreFilter [1] 
and AggregateRAMFilter [2]already exist, which AIUI provide same feature ?
 
 
I'm also concerned about the scope of changes for scheduler, as Gantt is 
currently trying to replace it. Can we imagine such big changes to be 
committed on the Nova side, while it's planned to have a Scheduler service 
in the next future ?
 
-Sylvain
 
 
[1] 
https://github.com/openstack/nova/blob/master/nova/scheduler/filters/core_filter.py#L74
[2] 
https://github.com/openstack/nova/blob/master/nova/scheduler/filters/ram_filter.py#L75
 
 
 
 
2014-01-30 Khanh-Toan Tran 
There is an unexpected line break in the middle of the link, so I post it
again:

https://docs.google.com/document/d/1RfP7jRsw1mXMjd7in72ARjK0fTrsQv1bqolOri
IQB2Y

> -Message d'origine-
> De : Khanh-Toan Tran [mailto:khanh-toan.t...@cloudwatt.com]
> Envoyé : mercredi 29 janvier 2014 13:25
> À : 'OpenStack Development Mailing List (no

Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-01-30 Thread Khanh-Toan Tran
Hi Sylvain,



1) Some Filters such as AggregateCoreFilter, AggregateRAMFilter can change
its parameters for aggregates. But what if admin wants to change for all
hosts in an availability-zone? Does he have to rewrite all the parameters
in all aggregates? Or should we create a new AvailabilityZoneCoreFilter?



The Policy Based Scheduler (PBS)  blueprint separates the effect (filter
according to Core) from its target (all hosts in an aggregate, or in an
availability-zone). It will benefit all filters, not just CoreFilter or
RAMFilter, so that we can avoid creating for each filter XFilter the
AggregateXFilter and AvailabilityZoneWFilter from now on. Beside, if admin
wants to apply the a filter to some aggregates (or availability-zone) and
not the other (don’t call filters at all, not just modify parameters), he
can do it. It help us avoid running all filters on all hosts.



2) In fact, we also prepare for a separated scheduler in which PBS is a
very first step of it, that’s why we purposely separate the Policy Based
Scheduler from Policy Based Scheduling Module (PBSM) [1] which is the core
of our architecture. If you look at our code, you will see that
Policy_Based_Scheduler.py is only slightly different from Filter
Scheduler. That is because we just want a link from Nova-scheduler to
PBSM. We’re trying to push some more management into scheduler without
causing too much modification, as you can see in the patch .



Thus I’m very happy when Gantt is proposed. As I see it, Gantt is based on
Nova-scheduler code, with the planning on replacing nova-scheduler in J.
The separation from Nova will be complicated, but not on scheduling part.
Thus integrating PBS and PBSM into Gantt would not be a problem.



Best regards,



[1]
https://docs.google.com/document/d/1gr4Pb1ErXymxN9QXR4G_jVjLqNOg2ij9oA0JrL
wMVRA



Toan



De : Sylvain Bauza [mailto:sylvain.ba...@gmail.com]
Envoyé : jeudi 30 janvier 2014 11:16
À : OpenStack Development Mailing List (not for usage questions)
Objet : Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and
Solver Scheduler



Hi Khanh-Toan,



I only have one comment on your proposal : why are you proposing something
new for overcommitments with aggregates while the AggregateCoreFilter [1]
and AggregateRAMFilter [2]already exist, which AIUI provide same feature ?





I'm also concerned about the scope of changes for scheduler, as Gantt is
currently trying to replace it. Can we imagine such big changes to be
committed on the Nova side, while it's planned to have a Scheduler service
in the next future ?



-Sylvain





[1]
https://github.com/openstack/nova/blob/master/nova/scheduler/filters/core_
filter.py#L74

[2]
https://github.com/openstack/nova/blob/master/nova/scheduler/filters/ram_f
ilter.py#L75









2014-01-30 Khanh-Toan Tran 

There is an unexpected line break in the middle of the link, so I post it
again:

https://docs.google.com/document/d/1RfP7jRsw1mXMjd7in72ARjK0fTrsQv1bqolOri
<https://docs.google.com/document/d/1RfP7jRsw1mXMjd7in72ARjK0fTrsQv1bqolOr
iIQB2Y>
IQB2Y

> -Message d'origine-
> De : Khanh-Toan Tran [mailto:khanh-toan.t...@cloudwatt.com]
> Envoyé : mercredi 29 janvier 2014 13:25
> À : 'OpenStack Development Mailing List (not for usage questions)'
> Objet : [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and

Solver
> Scheduler
>
> Dear all,
>
> As promised in the Scheduler/Gantt meeting, here is our analysis on the
> connection between Policy Based Scheduler and Solver Scheduler:
>
> https://docs.google.com/document/d/1RfP7jRsw1mXMjd7in72ARjK0fTrsQv1bq
> olOri
> IQB2Y
>
> This document briefs the mechanism of the two schedulers and the
possibility of
> cooperation. It is my personal point of view only.
>
> In a nutshell, Policy Based Scheduler allows admin to define policies
for different
> physical resources (an aggregate, an availability-zone, or all
> infrastructure) or different (classes of) users. Admin can modify
> (add/remove/modify) any policy in runtime, and the modification effect
is only
> in the target (e.g. the aggregate, the users) that the policy is defined
to. Solver
> Scheduler solves the placement of groups of instances simultaneously by
putting
> all the known information into a integer linear system and uses Integer
Program
> solver to solve the latter. Thus relation between VMs and between VMs-
> computes are all accounted for.
>
> If working together, Policy Based Scheduler can supply the filters and
weighers
> following the policies rules defined for different computes.
> These filters and weighers can be converted into constraints & cost
function for
> Solver Scheduler to solve. More detailed will be found in the doc.
>
> I look forward for comments and hope that we can work it out.
>
> Best regards,
>
> Khanh-Toan TRAN
>
>
> ___

Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-01-30 Thread Sylvain Bauza
Hi Khanh-Toan,

I only have one comment on your proposal : why are you proposing something
new for overcommitments with aggregates while the AggregateCoreFilter [1]
and AggregateRAMFilter [2]already exist, which AIUI provide same feature ?


I'm also concerned about the scope of changes for scheduler, as Gantt is
currently trying to replace it. Can we imagine such big changes to be
committed on the Nova side, while it's planned to have a Scheduler service
in the next future ?

-Sylvain


[1]
https://github.com/openstack/nova/blob/master/nova/scheduler/filters/core_filter.py#L74
[2]
https://github.com/openstack/nova/blob/master/nova/scheduler/filters/ram_filter.py#L75





2014-01-30 Khanh-Toan Tran 

> There is an unexpected line break in the middle of the link, so I post it
> again:
>
> https://docs.google.com/document/d/1RfP7jRsw1mXMjd7in72ARjK0fTrsQv1bqolOri
> IQB2Y<https://docs.google.com/document/d/1RfP7jRsw1mXMjd7in72ARjK0fTrsQv1bqolOriIQB2Y>
>
> > -Message d'origine-
> > De : Khanh-Toan Tran [mailto:khanh-toan.t...@cloudwatt.com]
> > Envoyé : mercredi 29 janvier 2014 13:25
> > À : 'OpenStack Development Mailing List (not for usage questions)'
> > Objet : [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and
> Solver
> > Scheduler
> >
> > Dear all,
> >
> > As promised in the Scheduler/Gantt meeting, here is our analysis on the
> > connection between Policy Based Scheduler and Solver Scheduler:
> >
> > https://docs.google.com/document/d/1RfP7jRsw1mXMjd7in72ARjK0fTrsQv1bq
> > olOri
> > IQB2Y
> >
> > This document briefs the mechanism of the two schedulers and the
> possibility of
> > cooperation. It is my personal point of view only.
> >
> > In a nutshell, Policy Based Scheduler allows admin to define policies
> for different
> > physical resources (an aggregate, an availability-zone, or all
> > infrastructure) or different (classes of) users. Admin can modify
> > (add/remove/modify) any policy in runtime, and the modification effect
> is only
> > in the target (e.g. the aggregate, the users) that the policy is defined
> to. Solver
> > Scheduler solves the placement of groups of instances simultaneously by
> putting
> > all the known information into a integer linear system and uses Integer
> Program
> > solver to solve the latter. Thus relation between VMs and between VMs-
> > computes are all accounted for.
> >
> > If working together, Policy Based Scheduler can supply the filters and
> weighers
> > following the policies rules defined for different computes.
> > These filters and weighers can be converted into constraints & cost
> function for
> > Solver Scheduler to solve. More detailed will be found in the doc.
> >
> > I look forward for comments and hope that we can work it out.
> >
> > Best regards,
> >
> > Khanh-Toan TRAN
> >
> >
> > ___
> > 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][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-01-30 Thread Khanh-Toan Tran
There is an unexpected line break in the middle of the link, so I post it
again:

https://docs.google.com/document/d/1RfP7jRsw1mXMjd7in72ARjK0fTrsQv1bqolOri
IQB2Y

> -Message d'origine-
> De : Khanh-Toan Tran [mailto:khanh-toan.t...@cloudwatt.com]
> Envoyé : mercredi 29 janvier 2014 13:25
> À : 'OpenStack Development Mailing List (not for usage questions)'
> Objet : [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and
Solver
> Scheduler
>
> Dear all,
>
> As promised in the Scheduler/Gantt meeting, here is our analysis on the
> connection between Policy Based Scheduler and Solver Scheduler:
>
> https://docs.google.com/document/d/1RfP7jRsw1mXMjd7in72ARjK0fTrsQv1bq
> olOri
> IQB2Y
>
> This document briefs the mechanism of the two schedulers and the
possibility of
> cooperation. It is my personal point of view only.
>
> In a nutshell, Policy Based Scheduler allows admin to define policies
for different
> physical resources (an aggregate, an availability-zone, or all
> infrastructure) or different (classes of) users. Admin can modify
> (add/remove/modify) any policy in runtime, and the modification effect
is only
> in the target (e.g. the aggregate, the users) that the policy is defined
to. Solver
> Scheduler solves the placement of groups of instances simultaneously by
putting
> all the known information into a integer linear system and uses Integer
Program
> solver to solve the latter. Thus relation between VMs and between VMs-
> computes are all accounted for.
>
> If working together, Policy Based Scheduler can supply the filters and
weighers
> following the policies rules defined for different computes.
> These filters and weighers can be converted into constraints & cost
function for
> Solver Scheduler to solve. More detailed will be found in the doc.
>
> I look forward for comments and hope that we can work it out.
>
> Best regards,
>
> Khanh-Toan TRAN
>
>
> ___
> 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] [Nova][Scheduler] Policy Based Scheduler and Solver Scheduler

2014-01-29 Thread Khanh-Toan Tran
Dear all,

As promised in the Scheduler/Gantt meeting, here is our analysis on the
connection between Policy Based Scheduler and Solver Scheduler:

https://docs.google.com/document/d/1RfP7jRsw1mXMjd7in72ARjK0fTrsQv1bqolOri
IQB2Y

This document briefs the mechanism of the two schedulers and the
possibility of cooperation. It is my personal point of view only.

In a nutshell, Policy Based Scheduler allows admin to define policies for
different physical resources (an aggregate, an availability-zone, or all
infrastructure) or different (classes of) users. Admin can modify
(add/remove/modify) any policy in runtime, and the modification effect is
only in the target (e.g. the aggregate, the users) that the policy is
defined to. Solver Scheduler solves the placement of groups of instances
simultaneously by putting all the known information into a integer linear
system and uses Integer Program solver to solve the latter. Thus relation
between VMs and between VMs-computes are all accounted for.

If working together, Policy Based Scheduler can supply the filters and
weighers following the policies rules defined for different computes.
These filters and weighers can be converted into constraints & cost
function for Solver Scheduler to solve. More detailed will be found in the
doc.

I look forward for comments and hope that we can work it out.

Best regards,

Khanh-Toan TRAN


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