<font size=2 face="sans-serif">Hi all,</font>
<br>
<br><font size=2 face="sans-serif">Excellent definition of the issue at
hand.</font>
<br><font size=2 face="sans-serif">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. <u>which</u>
filters to apply per request vs. <u>how</u> to compute a valid placement)
their implementation as drivers makes combining them non-trivial.</font>
<br>
<br><font size=2 face="sans-serif">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:</font>
<br><font size=2 face="sans-serif">-- A Placement Advisor, that constructs
placement problems for scheduling requests (filter-scheduler and policy-based-scheduler)</font>
<br><font size=2 face="sans-serif">-- A Placement Engine, that solves placement
problems (HostManager in get_filtered_hosts() and solver-scheduler with
its LP engine).</font>
<br>
<br><font size=2 face="sans-serif">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. </font>
<br>
<br><font size=2 face="sans-serif">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.</font>
<br>
<br><font size=2 face="sans-serif">I'm working on a wiki page that will
get into the details.</font>
<br><font size=2 face="sans-serif">Would appreciate your initial thoughts
on this approach.</font>
<br>
<br><font size=2 face="sans-serif">Regards,</font>
<br><font size=2 face="sans-serif">Gil</font>
<br>
<br>
<br>
<br><font size=1 color=#5f5f5f face="sans-serif">From:
</font><font size=1 face="sans-serif">Khanh-Toan Tran <khanh-toan.tran@cloudwatt.com></font>
<br><font size=1 color=#5f5f5f face="sans-serif">To:
</font><font size=1 face="sans-serif">"OpenStack Development
Mailing List \(not for usage questions\)" <openstack-dev@lists.openstack.org>,
</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Date:
</font><font size=1 face="sans-serif">01/30/2014 01:43 PM</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Subject:
</font><font size=1 face="sans-serif">Re: [openstack-dev]
[Nova][Scheduler] Policy Based Scheduler and Solver
Scheduler</font>
<br>
<hr noshade>
<br>
<br>
<br><font size=2 color=#004080 face="Calibri">Hi Sylvain,</font>
<br><font size=2 color=#004080 face="Calibri"> </font>
<br><font size=2 color=#004080 face="Calibri">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?</font>
<br><font size=2 color=#004080 face="Calibri"> </font>
<br><font size=2 color=#004080 face="Calibri">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.</font>
<br><font size=2 color=#004080 face="Calibri"> </font>
<br><font size=2 color=#004080 face="Calibri">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 .</font>
<br><font size=2 color=#004080 face="Calibri"> </font>
<br><font size=2 color=#004080 face="Calibri">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.</font>
<br><font size=2 color=#004080 face="Calibri"> </font>
<br><font size=2 color=#004080 face="Calibri">Best regards,</font>
<br><font size=2 color=#004080 face="Calibri"> </font>
<br><font size=2 color=#004080 face="Calibri">[1] </font><a href=https://docs.google.com/document/d/1gr4Pb1ErXymxN9QXR4G_jVjLqNOg2ij9oA0JrLwMVRA><font size=2 color=#004080 face="Calibri">https://docs.google.com/document/d/1gr4Pb1ErXymxN9QXR4G_jVjLqNOg2ij9oA0JrLwMVRA</font></a>
<br><font size=2 color=#004080 face="Calibri"> </font>
<br><font size=2 color=#004080 face="Calibri">Toan</font>
<br><font size=2 color=#004080 face="Calibri"> </font>
<br><font size=2 face="Tahoma"><b>De :</b> Sylvain Bauza [</font><a href=mailto:sylvain.bauza@gmail.com><font size=2 face="Tahoma">mailto:sylvain.bauza@gmail.com</font></a><font size=2 face="Tahoma">]
<b><br>
Envoyé :</b> jeudi 30 janvier 2014 11:16<b><br>
À :</b> OpenStack Development Mailing List (not for usage questions)<b><br>
Objet :</b> Re: [openstack-dev] [Nova][Scheduler] Policy Based Scheduler
and Solver Scheduler</font>
<br><font size=3 face="Times New Roman"> </font>
<br><font size=3 face="Times New Roman">Hi Khanh-Toan,</font>
<br><font size=3 face="Times New Roman"> </font>
<br><font size=3 face="Times New Roman">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 ?</font>
<br><font size=3 face="Times New Roman"> </font>
<br><font size=3 face="Times New Roman"> </font>
<br><font size=3 face="Times New Roman">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 ?</font>
<br><font size=3 face="Times New Roman"> </font>
<br><font size=3 face="Times New Roman">-Sylvain</font>
<br><font size=3 face="Times New Roman"> </font>
<br><font size=3 face="Times New Roman"> </font>
<br><font size=3 face="Times New Roman">[1] </font><a href=https://github.com/openstack/nova/blob/master/nova/scheduler/filters/core_filter.py#L74 target=_blank><font size=3 color=blue face="Times New Roman"><u>https://github.com/openstack/nova/blob/master/nova/scheduler/filters/core_filter.py#L74</u></font></a>
<br><font size=3 face="Times New Roman">[2] </font><a href=https://github.com/openstack/nova/blob/master/nova/scheduler/filters/ram_filter.py#L75 target=_blank><font size=3 color=blue face="Times New Roman"><u>https://github.com/openstack/nova/blob/master/nova/scheduler/filters/ram_filter.py#L75</u></font></a>
<br><font size=3 face="Times New Roman"> </font>
<br><font size=3 face="Times New Roman"> </font>
<br><font size=3 face="Times New Roman"> </font>
<br><font size=3 face="Times New Roman"> </font>
<br><font size=3 face="Times New Roman">2014-01-30 Khanh-Toan Tran <</font><a href="mailto:khanh-toan.tran@cloudwatt.com" target=_blank><font size=3 color=blue face="Times New Roman"><u>khanh-toan.tran@cloudwatt.com</u></font></a><font size=3 face="Times New Roman">></font>
<br><font size=3 face="Times New Roman">There is an unexpected line break
in the middle of the link, so I post it<br>
again:<br>
</font><font size=3 color=blue face="Times New Roman"><u><br>
</u></font><a href=https://docs.google.com/document/d/1RfP7jRsw1mXMjd7in72ARjK0fTrsQv1bqolOriIQB2Y target=_blank><font size=3 color=blue face="Times New Roman"><u>https://docs.google.com/document/d/1RfP7jRsw1mXMjd7in72ARjK0fTrsQv1bqolOri<br>
IQB2Y</u></font></a><font size=3 face="Times New Roman"><br>
<br>
> -----Message d'origine-----<br>
> De : Khanh-Toan Tran [mailto:</font><a href="mailto:khanh-toan.tran@cloudwatt.com" target=_blank><font size=3 color=blue face="Times New Roman"><u>khanh-toan.tran@cloudwatt.com</u></font></a><font size=3 face="Times New Roman">]<br>
> Envoyé : mercredi 29 janvier 2014 13:25<br>
> À : 'OpenStack Development Mailing List (not for usage questions)'<br>
> Objet : [openstack-dev] [Nova][Scheduler] Policy Based Scheduler and</font>
<br><font size=3 face="Times New Roman">Solver<br>
> Scheduler<br>
><br>
> Dear all,<br>
><br>
> As promised in the Scheduler/Gantt meeting, here is our analysis on
the<br>
> connection between Policy Based Scheduler and Solver Scheduler:<br>
><br>
> </font><a href=https://docs.google.com/document/d/1RfP7jRsw1mXMjd7in72ARjK0fTrsQv1bq target=_blank><font size=3 color=blue face="Times New Roman"><u>https://docs.google.com/document/d/1RfP7jRsw1mXMjd7in72ARjK0fTrsQv1bq</u></font></a><font size=3 face="Times New Roman"><br>
> olOri<br>
> IQB2Y<br>
><br>
> This document briefs the mechanism of the two schedulers and the<br>
possibility of<br>
> cooperation. It is my personal point of view only.<br>
><br>
> In a nutshell, Policy Based Scheduler allows admin to define policies<br>
for different<br>
> physical resources (an aggregate, an availability-zone, or all<br>
> infrastructure) or different (classes of) users. Admin can modify<br>
> (add/remove/modify) any policy in runtime, and the modification effect<br>
is only<br>
> in the target (e.g. the aggregate, the users) that the policy is defined<br>
to. Solver<br>
> Scheduler solves the placement of groups of instances simultaneously
by<br>
putting<br>
> all the known information into a integer linear system and uses Integer<br>
Program<br>
> solver to solve the latter. Thus relation between VMs and between
VMs-<br>
> computes are all accounted for.<br>
><br>
> If working together, Policy Based Scheduler can supply the filters
and<br>
weighers<br>
> following the policies rules defined for different computes.<br>
> These filters and weighers can be converted into constraints &
cost<br>
function for<br>
> Solver Scheduler to solve. More detailed will be found in the doc.<br>
><br>
> I look forward for comments and hope that we can work it out.<br>
><br>
> Best regards,<br>
><br>
> Khanh-Toan TRAN<br>
><br>
><br>
> _______________________________________________<br>
> OpenStack-dev mailing list<br>
> </font><a href="mailto:OpenStack-dev@lists.openstack.org" target=_blank><font size=3 color=blue face="Times New Roman"><u>OpenStack-dev@lists.openstack.org</u></font></a><font size=3 face="Times New Roman"><br>
> </font><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target=_blank><font size=3 color=blue face="Times New Roman"><u>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</u></font></a><font size=3 face="Times New Roman"><br>
<br>
_______________________________________________<br>
OpenStack-dev mailing list</font><font size=3 color=blue face="Times New Roman"><u><br>
</u></font><a href="mailto:OpenStack-dev@lists.openstack.org" target=_blank><font size=3 color=blue face="Times New Roman"><u>OpenStack-dev@lists.openstack.org</u></font></a><font size=3 color=blue face="Times New Roman"><u><br>
</u></font><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target=_blank><font size=3 color=blue face="Times New Roman"><u>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</u></font></a>
<br><font size=3 face="Times New Roman"> </font><tt><font size=2>_______________________________________________<br>
OpenStack-dev mailing list<br>
OpenStack-dev@lists.openstack.org<br>
</font></tt><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"><tt><font size=2>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</font></tt></a><tt><font size=2><br>
</font></tt>
<br>