Bug 912076 (external-scheduler)

Summary: PRD33 - Implement a plug-in scheduler implementation that interfaces to external scheduler via scheduling API and SDK
Product: Red Hat Enterprise Virtualization Manager Reporter: Simon Grinberg <sgrinber>
Component: RFEsAssignee: Gilad Chaplik <gchaplik>
Status: CLOSED ERRATA QA Contact: Ondra Machacek <omachace>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 3.2.0CC: abaron, aburden, acathrow, adahms, bdagan, chetan, dfediuck, iheim, lpeer, pep, pstehlik
Target Milestone: ---Keywords: FutureFeature
Target Release: 3.3.0Flags: sgrinber: Triaged+
Hardware: Unspecified   
OS: Unspecified   
URL: http://www.ovirt.org/Features/oVirtScheduler
Whiteboard: sla
Fixed In Version: Doc Type: Release Note
Doc Text:
Red Hat Enterprise Virtualization Manager includes a new scheduler to handle the placement of virtual machines, allowing users to create new scheduling policies and write their own logic in Python and include that logic in a policy. The new oVirt scheduler serves virtual machine scheduling requests during migration or while virtual machine are running. Scheduling is performed by applying hard constraints and soft constraints to get the optimal host for that request at a given point of time. Scheduling Policy Elements * Filter: a basic logic unit that filters out hypervisors that do not satisfy the hard constraints for placing a given virtual machine. * Weight function: a function that calculates a score for a given host based on the internal logic of the function. Weight functions are a method for implementing soft constraints in the scheduling process. Since these are weights, a lower score is considered to be better. * Load balancing module: code implementing logic for distributing loads. To date, the definition of a load was mostly CPU related, which could be resolved by migrating a virtual machine. The new scheduler allows users to write their own logic to handle other load types such as network and I/O by other means such as integrating with third-party systems. Scheduling Process Outline Every cluster has a scheduling policy. To date, there were three main policies - None, Even distribution, and Power saving - and now administrators can create their own policies or use the built-in policies. Each policy contains a list of filters, one or more weight functions and a single load-balancing module. The scheduling process takes all relevant hosts and runs them through the relevant filters of a specific policy. Note that filter order is meaningless. The filtered host list is then used as an input to the relevant weight functions of that policy, which creates a cost table. The cost table indicates the host with the lowest weight (cost), which is the optimal solution for the given request. Multiple weight functions may be prioritized using a factor. Adding User Code See Bug #912059 for more information on adding code. Important Notes - New scheduling policies created by administrators are not validated by the system. This may end up with unexpected results, so it is highly important to verify that a new policy is not introducing issues or instability to the system. - User-provided code is unsupported. - Using user-provided code may affect performance, so administrators are advised to carefully test their code and the general performance changes.
Story Points: ---
Clone Of:
: 975631 (view as bug list) Environment:
Last Closed: 2014-01-21 17:14:00 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: SLA RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 912059, 975630    
Bug Blocks: 516905, 826626, 975631, 1019470    

Description Simon Grinberg 2013-02-17 16:24:14 UTC
This bug is a placeholder for this functionality and a detailed requirements list will be provided later. This is opened now to triage and block all the RFE's that depend on this infrastructure. 

Basic concepts are: 
- The end user scheduler is isolated from the engine and the DB - unlike the actual plug-in. 
- Must provide a way to collect enough info to form a decision
- The API should have the option to create binding to a scripting language TBD (SDK) 

The plug-in is based on the infra in bug 912059	that provide infrastructure for scheduler plug in that is running within the engine scope. So the plugin is running within the engine scope while providing interface to an external interface.

Comment 4 Cheryn Tan 2013-09-30 01:51:38 UTC
Hi Doron, can you please proofread the description in the Doc Text field for accuracy? I've tried to cover this bug and bug 912059 with one release note text. If you think they should be addressed separately, let me know.

Comment 5 Doron Fediuck 2013-09-30 09:00:18 UTC
(In reply to Cheryn Tan from comment #4)
> Hi Doron, can you please proofread the description in the Doc Text field for
> accuracy? I've tried to cover this bug and bug 912059 with one release note
> text. If you think they should be addressed separately, let me know.

Hi Cheryn,
Thanks. I updated the text, and as you can see I think bug 912059 should provide the details for adding user code. The current bug handles the new scheduler implementation.

Comment 7 errata-xmlrpc 2014-01-21 17:14:00 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHSA-2014-0038.html