Re: [openstack-dev] [Nova] [Gantt][Scheduler-split] Why we need a Smart Placement Engine as a Service! (was: Scheduler split status (updated))

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

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

Please update your use cases here ..

debo

On Mon, Jul 14, 2014 at 7:25 PM, Yathiraj Udupi (yudupi)
yud...@cisco.com wrote:
 Hi all,

 Adding to the interesting discussion thread regarding the scheduler split
 and its importance, I would like to pitch in a couple of thoughts in favor
 of Gantt.  It was in the Icehouse summit in HKG in one of the scheduler
 design sessions, I along with a few others (cc’d) pitched a session on Smart
 Resource Placement
 (https://etherpad.openstack.org/p/NovaIcehouse-Smart-Resource-Placement),
 where we pitched for a  Smart Placement Decision Engine  as a Service ,
 addressing cross-service scheduling as one of the use cases.  We pitched the
 idea as to how a stand-alone service can act as a  smart resource placement
 engine, (see figure:
 https://docs.google.com/drawings/d/1BgK1q7gl5nkKWy3zLkP1t_SNmjl6nh66S0jHdP0-zbY/edit?pli=1)
 that can use state data from all the services, and make a unified placement
 decision.   We even have proposed a separate blueprint
 (https://blueprints.launchpad.net/nova/+spec/solver-scheduler with working
 code now here: https://github.com/CiscoSystems/nova-solver-scheduler) called
 Smart Scheduler (Solver Scheduler), which has the goals of being able to do
 smart resource placement taking into account complex constraints
 incorporating compute(nova), storage(cinder), and network constraints.   The
 existing Filter Scheduler or the projects like Smart (Solver) Scheduler (for
 covering the complex constraints scenarios) could easily fulfill the
 decision making aspects of the placement engine.

 I believe the Gantt project is the right direction in terms of separating
 out the placement decision concern, and creating a separate scheduler as a
 service, so that it can freely talk to any of the other services, or use a
 unified global state repository and make the unified decision.  Projects
 like Smart(Solver) Scheduler can easily fit into the Gantt Project as
 pluggable drivers to add the additional smarts required.

 To make our Smart Scheduler as a service, we currently have prototyped this
 Scheduler as a service providing a RESTful interface to the smart scheduler,
 that is detached from Nova (loosely connected):
 For example a RESTful request like this (where I am requests for 2 Vms, with
 a requirement of 1 GB disk, and another request for 1 Vm of flavor
 ‘m1.tiny’, but also has a special requirement that it should be close to the
 volume with uuid: “ef6348300bc511e4bc4cc03fd564d1bc (Compute-Volume
 affinity constraint)) :


 curl -i -H Content-Type: application/json -X POST -d
 '{instance_requests: [{num_instances: 2, request_properties:
 {instance_type: {root_gb: 1}}}, {num_instances: 1,
 request_properties: {flavor: m1.tiny”, “volume_affinity:
 ef6348300bc511e4bc4cc03fd564d1bc}}]}'
 http://x.x.x.x/smart-scheduler-as-a-service/v1.0/placement


 provides a placement decision something like this:

 {

   result: [

 [

   {

 host: {

   host: Host1,

   nodename: Node1

 },

 instance_uuid: VM_ID_0_0

   },

   {

 host: {

   host: Host2,

   nodename: Node2

 },

 instance_uuid: VM_ID_0_1

   }

 ],

 [

   {

 host: {

   host: Host1,

   nodename: Node1

 },

 instance_uuid: VM_ID_1_0

   }

 ]

   ]

 }


 This placement result can be used by Nova to proceed and complete the
 scheduling.


 This is where I see the potential for Gantt, which will be a stand alone
 placement decision engine, and can easily accommodate different pluggable
 engines (such as Smart Scheduler
 (https://blueprints.launchpad.net/nova/+spec/solver-scheduler))  to do smart
 placement decisions.


 Pointers:
 Smart Resource Placement overview:
 https://docs.google.com/document/d/1IiPI0sfaWb1bdYiMWzAAx0HYR6UqzOan_Utgml5W1HI/edit?pli=1
 Figure:
 https://docs.google.com/drawings/d/1BgK1q7gl5nkKWy3zLkP1t_SNmjl6nh66S0jHdP0-zbY/edit?pli=1
 Nova Design Session Etherpad:
 https://etherpad.openstack.org/p/NovaIcehouse-Smart-Resource-Placement
 https://etherpad.openstack.org/p/IceHouse-Nova-Scheduler-Sessions
 Smart Scheduler Blueprint:
 https://blueprints.launchpad.net/nova/+spec/solver-scheduler
 Working code: https://github.com/CiscoSystems/nova-solver-scheduler


 Thanks,

 Yathi.






 On 7/14/14, 1:40 PM, Murray, Paul (HP Cloud) pmur...@hp.com wrote:

 Hi All,



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



 On extensible resource tracking



 Jay, I am surprised to hear you say no one has explained to you why there is
 an extensible resource tracking blueprint. It’s simple, there was a
 

[openstack-dev] [Nova] [Gantt][Scheduler-split] Why we need a Smart Placement Engine as a Service! (was: Scheduler split status (updated))

2014-07-14 Thread Yathiraj Udupi (yudupi)
Hi all,

Adding to the interesting discussion thread regarding the scheduler split and 
its importance, I would like to pitch in a couple of thoughts in favor of 
Gantt.  It was in the Icehouse summit in HKG in one of the scheduler design 
sessions, I along with a few others (cc’d) pitched a session on Smart Resource 
Placement 
(https://etherpad.openstack.org/p/NovaIcehouse-Smart-Resource-Placement), where 
we pitched for a  Smart Placement Decision Engine  as a Service , addressing 
cross-service scheduling as one of the use cases.  We pitched the idea as to 
how a stand-alone service can act as a  smart resource placement engine, (see 
figure: 
https://docs.google.com/drawings/d/1BgK1q7gl5nkKWy3zLkP1t_SNmjl6nh66S0jHdP0-zbY/edit?pli=1)
 that can use state data from all the services, and make a unified placement 
decision.   We even have proposed a separate blueprint 
(https://blueprints.launchpad.net/nova/+spec/solver-scheduler with working code 
now here: https://github.com/CiscoSystems/nova-solver-scheduler) called Smart 
Scheduler (Solver Scheduler), which has the goals of being able to do smart 
resource placement taking into account complex constraints incorporating 
compute(nova), storage(cinder), and network constraints.   The existing Filter 
Scheduler or the projects like Smart (Solver) Scheduler (for covering the 
complex constraints scenarios) could easily fulfill the decision making aspects 
of the placement engine.

I believe the Gantt project is the right direction in terms of separating out 
the placement decision concern, and creating a separate scheduler as a service, 
so that it can freely talk to any of the other services, or use a unified 
global state repository and make the unified decision.  Projects like 
Smart(Solver) Scheduler can easily fit into the Gantt Project as pluggable 
drivers to add the additional smarts required.

To make our Smart Scheduler as a service, we currently have prototyped this 
Scheduler as a service providing a RESTful interface to the smart scheduler, 
that is detached from Nova (loosely connected):
For example a RESTful request like this (where I am requests for 2 Vms, with a 
requirement of 1 GB disk, and another request for 1 Vm of flavor ‘m1.tiny’, but 
also has a special requirement that it should be close to the volume with uuid: 
“ef6348300bc511e4bc4cc03fd564d1bc (Compute-Volume affinity constraint)) :


curl -i -H Content-Type: application/json -X POST -d '{instance_requests: 
[{num_instances: 2, request_properties: {instance_type: {root_gb: 1}}}, 
{num_instances: 1, request_properties: {flavor: m1.tiny”, 
“volume_affinity: ef6348300bc511e4bc4cc03fd564d1bc}}]}' 
http://x.x.x.x/smart-scheduler-as-a-service/v1.0/placement


provides a placement decision something like this:

{

  result: [

[

  {

host: {

  host: Host1,

  nodename: Node1

},

instance_uuid: VM_ID_0_0

  },

  {

host: {

  host: Host2,

  nodename: Node2

},

instance_uuid: VM_ID_0_1

  }

],

[

  {

host: {

  host: Host1,

  nodename: Node1

},

instance_uuid: VM_ID_1_0

  }

]

  ]

}


This placement result can be used by Nova to proceed and complete the 
scheduling.


This is where I see the potential for Gantt, which will be a stand alone 
placement decision engine, and can easily accommodate different pluggable 
engines (such as Smart Scheduler 
(https://blueprints.launchpad.net/nova/+spec/solver-scheduler))  to do smart 
placement decisions.


Pointers:
Smart Resource Placement overview: 
https://docs.google.com/document/d/1IiPI0sfaWb1bdYiMWzAAx0HYR6UqzOan_Utgml5W1HI/edit?pli=1
Figure: 
https://docs.google.com/drawings/d/1BgK1q7gl5nkKWy3zLkP1t_SNmjl6nh66S0jHdP0-zbY/edit?pli=1
Nova Design Session Etherpad: 
https://etherpad.openstack.org/p/NovaIcehouse-Smart-Resource-Placement
https://etherpad.openstack.org/p/IceHouse-Nova-Scheduler-Sessions
Smart Scheduler Blueprint: 
https://blueprints.launchpad.net/nova/+spec/solver-scheduler
Working code: https://github.com/CiscoSystems/nova-solver-scheduler



Thanks,

Yathi.





On 7/14/14, 1:40 PM, Murray, Paul (HP Cloud) 
pmur...@hp.commailto:pmur...@hp.com wrote:

Hi All,

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

On extensible resource tracking

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