Re: [openstack-dev] [Nova] [Gantt][Scheduler-split] Why we need a Smart Placement Engine as a Service! (was: Scheduler split status (updated))
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))
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