<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
Hi Yathi,
<div><br>
</div>
<div>Thanks for the reminder about the nova solver scheduler. It’s definitely a cool idea to look at integrating the two systems!</div>
<div><br>
</div>
<div>Ramki is definitely involved in this discussion. We thought placement was a good first example of a broad class of problems that a linear solver could help address, esp. in the NFV context. I like the idea of integrating Congress and the Nova solver
scheduler and then generalizing what we learned to handle other kinds of optimization problems. So that’s what I’m thinking long term.</div>
<div><br>
</div>
<div>Tim</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
<div>
<div><br>
</div>
<div>On Dec 16, 2014, at 11:28 AM, Yathiraj Udupi (yudupi) <<a href="mailto:yudupi@cisco.com">yudupi@cisco.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<blockquote type="cite">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; font-size: 14px; font-family: Calibri, sans-serif;">
<div>To add to what I mentioned below… We from the Solver Scheduler team are a small team here at Cisco, trying to drive this project and slowly adding more complex use cases for scheduling and policy–driven placements. We would really love to have some
real contributions from everyone in the community and build this the right way. </div>
<div>If it may interest – some interesting scheduler use cases are here based on one of our community meetings in IRC - <a href="https://etherpad.openstack.org/p/SchedulerUseCases">https://etherpad.openstack.org/p/SchedulerUseCases</a> This could apply to
Congress driving some of this too. </div>
<div><br>
</div>
<div>I am leading the effort for the Solver Scheduler project ( <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_stackforge_nova-2Dsolver-2Dscheduler&d=AAMGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=B6BWd4kFfgOzAREgThxkmTZKy7dDXE2-eBAmL0PBK7s&m=gSzCqpS6tRMB8r5xNbeWoNcpobYiFYvOFpo3QBmvm0M&s=mdMcHh7nMTJv8PmY0i8NpQXP9_gpUpI3gxEec6zyt7A&e=">https://github.com/stackforge/nova-solver-scheduler</a> )
, and if any of you are willing to contribute code, API, benchmarks, and also work on integration, my team and I can help you guide through this. We would be following the same processes under Stackforge at the moment. </div>
<div><br>
</div>
<div>Thanks,</div>
<div>Yathi. </div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<span id="OLK_SRC_BODY_SECTION">
<div>
<div>On 12/16/14, 11:14 AM, "Yathiraj Udupi (yudupi)" <<a href="mailto:yudupi@cisco.com">yudupi@cisco.com</a>> wrote:</div>
</div>
<div><br>
</div>
<blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;" type="cite">
<div>
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; font-size: 14px; font-family: Calibri, sans-serif;">
<div>Tim, </div>
<div><br>
</div>
<div>I read the conversation thread below and this got me interested as it relates to our discussion we had in the Policy Summit (mid cycle meet up) held in Palo Alto a few months ago. </div>
<div><br>
</div>
<div>This relates to our project – Nova Solver Scheduler, which I had talked about at the Policy summit. Please see this - <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_stackforge_nova-2Dsolver-2Dscheduler&d=AAMGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=B6BWd4kFfgOzAREgThxkmTZKy7dDXE2-eBAmL0PBK7s&m=gSzCqpS6tRMB8r5xNbeWoNcpobYiFYvOFpo3QBmvm0M&s=mdMcHh7nMTJv8PmY0i8NpQXP9_gpUpI3gxEec6zyt7A&e=">https://github.com/stackforge/nova-solver-scheduler</a> </div>
<div><br>
</div>
<div>We already have a working constraints-based solver framework/engine that handles Nova placement, and we are currently active in Stackforge, and aim to get this integrated into the Gantt project (<a href="https://blueprints.launchpad.net/nova/+spec/solver-scheduler">https://blueprints.launchpad.net/nova/+spec/solver-scheduler</a>),
based on our discussions in the Nova scheduler sub group. </div>
<div><br>
</div>
<div>When I saw discussions around using Linear programming (LP) solvers, PULP, etc, I thought of pitching in here to say, we already have demonstrated integrating a LP based solver for Nova compute placements. Please see: <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__www.youtube.com_watch-3Fv-3D7QzDbhkk-2DBI-23t-3D942&d=AAMGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=B6BWd4kFfgOzAREgThxkmTZKy7dDXE2-eBAmL0PBK7s&m=gSzCqpS6tRMB8r5xNbeWoNcpobYiFYvOFpo3QBmvm0M&s=EH2bJNaqNXJoAXzDbMtWkwQaJDUj-IC9QDgie_xdA8E&e=">https://www.youtube.com/watch?v=7QzDbhkk-BI#t=942</a> for
a demo of this (from our talk at the Atlanta Openstack summit). </div>
<div> Based on this email thread, I believe Ramki, one of our early collaborators is driving a similar solution in the NFV ETSI research group. Glad to know our Solver scheduler project is getting interest now. </div>
<div><br>
</div>
<div>As part of Congress integration, at the policy summit, I had suggested, we can try to translate a Congress policy into our Solver Scheduler’s constraints, and use this to enforce Nova placement policies. </div>
<div>We can already demonstrate policy-driven nova placements using our pluggable constraints model. So it should be easy to integrate with Congress. </div>
<div><br>
</div>
<div>The Nova solver scheduler team would be glad to help with any efforts wrt to trying out a Congress integration for Nova placements.</div>
<div><br>
</div>
<div>Thanks,</div>
<div>Yathi.</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<span id="OLK_SRC_BODY_SECTION">
<div>
<div>On 12/16/14, 10:24 AM, "Tim Hinrichs" <<a href="mailto:thinrichs@vmware.com">thinrichs@vmware.com</a>> wrote:</div>
</div>
<div><br>
</div>
<blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;" type="cite">
<div>
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
[Adding openstack-dev to this thread. For those of you just joining… We started kicking around ideas for how we might integrate a special-purpose VM placement engine into Congress.]
<div><br>
</div>
<div>Kudva: responses inline.<br>
<div><br>
</div>
<div><br>
<div>
<div>On Dec 16, 2014, at 6:25 AM, Prabhakar Kudva <<a href="mailto:kudva@us.ibm.com">kudva@us.ibm.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<blockquote type="cite"><font size="2" face="sans-serif">Hi, </font><br>
<br>
<font size="2" face="sans-serif">I am very interested in this.</font> <br>
<br>
<font size="2" face="sans-serif">So, it looks like there are two parts to this:</font><br>
<font size="2" face="sans-serif">1. Policy analysis when there are a significant mix of logical and builtin predicates (i.e.,</font><br>
<font size="2" face="sans-serif">runtime should identify a solution space when there are arithmetic operators). This will</font><br>
<font size="2" face="sans-serif">require linear programming/ILP type solvers. There might be a need to have a function</font><br>
<font size="2" face="sans-serif">in runtime.py that specifically deals with this (Tim?)</font><br>
<br>
</blockquote>
<div><br>
</div>
<div>I think it’s right that we expect there to be a mix of builtins and standard predicates. But what we’re considering here is having the linear solver be treated as if it were a domain-specific policy engine. So that solver wouldn’t be embedded into the
runtime.py necessarily. Rather, we’d delegate part of the policy to that domain-specific policy engine.</div>
<br>
<blockquote type="cite"><font size="2" face="sans-serif">2. Enforcement. That is with a large number of constraints in place for placement and</font><br>
<font size="2" face="sans-serif">scheduling, how does the policy engine communicate and enforce the placement
</font><br>
<font size="2" face="sans-serif">constraints to nova scheduler.</font> <br>
<br>
</blockquote>
<div><br>
</div>
<div>I would imagine that we could delegate either enforcement or monitoring or both. Eventually we want enforcement here, but monitoring could be useful too.</div>
<div><br>
</div>
<div>And yes you’re asking the right questions. I was trying to break the problem down into pieces in my bullet (1) below. But I think there is significant overlap in the questions we need to answer whether we’re delegating monitoring or enforcement.</div>
<br>
<blockquote type="cite"><font size="2" face="sans-serif">Both of these require some form of mathematical analysis.</font><br>
<br>
<font size="2" face="sans-serif">Would be happy and interested to discuss more on these lines.</font><br>
<br>
</blockquote>
<div><br>
</div>
<div>Maybe take a look at how I tried to breakdown the problem into separate questions in bullet (1) below and see if that makes sense.</div>
<div><br>
</div>
<div>Tim</div>
<br>
<blockquote type="cite"><font size="2" face="sans-serif">Prabhakar</font> <br>
<br>
<br>
<br>
<br>
<br>
<br>
<font size="1" color="#5f5f5f" face="sans-serif">From: </font><font size="1" face="sans-serif">Tim Hinrichs <<a href="mailto:thinrichs@vmware.com">thinrichs@vmware.com</a>></font><br>
<font size="1" color="#5f5f5f" face="sans-serif">To: </font><font size="1" face="sans-serif">"<a href="mailto:ruby.krishnaswamy@orange.com">ruby.krishnaswamy@orange.com</a>" <<a href="mailto:ruby.krishnaswamy@orange.com">ruby.krishnaswamy@orange.com</a>></font><br>
<font size="1" color="#5f5f5f" face="sans-serif">Cc: </font><font size="1" face="sans-serif">"Ramki Krishnan (<a href="mailto:ramk@Brocade.com">ramk@Brocade.com</a>)" <<a href="mailto:ramk@Brocade.com">ramk@Brocade.com</a>>, Gokul B Kandiraju/Watson/IBM@IBMUS,
Prabhakar Kudva/Watson/IBM@IBMUS</font> <br>
<font size="1" color="#5f5f5f" face="sans-serif">Date: </font><font size="1" face="sans-serif">12/15/2014 12:09 PM</font><br>
<font size="1" color="#5f5f5f" face="sans-serif">Subject: </font><font size="1" face="sans-serif">Re: Placement and Scheduling via Policy</font><br>
<hr noshade="">
<br>
<br>
<br>
<font size="3">[Adding Prabhakar and Gokul, in case they are interested.] </font>
<br>
<br>
<font size="3">1) Ruby, thinking about the solver as taking 1 matrix of [vm, server] and returning another matrix helps me understand what we’re talking about—thanks. I think you’re right that once we move from placement to optimization problems in general
we’ll need to figure out how to deal with actions. But if it’s a placement-specific policy engine, then we can build VM-migration into it. </font><br>
<br>
<font size="3">It seems to me that the only part left is figuring out how to take an arbitrary policy, carve off the placement-relevant portion, and create the inputs the solver needs to generate that new matrix. Some thoughts...</font><br>
<br>
<font size="3">- My gut tells me that the placement-solver should basically say “I enforce policies having to do with the schema nova:location.” This way the Congress policy engine knows to give it policies relevant to nova:location (placement). If we do
that, I believe we can carve off the right sub theory. </font> <br>
<br>
<font size="3">- That leaves taking a Datalog policy where we know nova:location is important and converting it to the input language required by a linear solver. We need to remember that the Datalog rules may reference tables from other services like Neutron,
Ceilometer, etc. I think the key will be figuring out what class of policies we can actually do that for reliably. Cool—a concrete question.</font><br>
<br>
<br>
<font size="3">2) We can definitely wait until January on this. I’ll be out of touch starting Friday too; it seems we all get back early January, which seems like the right time to resume our discussions. We have some concrete questions to answer, which was
what I was hoping to accomplish before we all went on holiday. </font> <br>
<br>
<font size="3">Happy Holidays!</font> <br>
<font size="3">Tim</font> <br>
<br>
<br>
<font size="3">On Dec 15, 2014, at 5:53 AM, <</font><a href="mailto:ruby.krishnaswamy@orange.com"><font size="3" color="blue"><u>ruby.krishnaswamy@orange.com</u></font></a><font size="3">> <</font><a href="mailto:ruby.krishnaswamy@orange.com"><font size="3" color="blue"><u>ruby.krishnaswamy@orange.com</u></font></a><font size="3">>
wrote:</font> <br>
<br>
<font size="2" face="Arial">Hi Tim</font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Calibri">“Questions:</font> <br>
<font size="2" face="Calibri">1) Is there any more data the solver needs? Seems like it needs something about CPU-load for each VM.</font><br>
<font size="2" face="Calibri">2) Which solver should we be using? What does the linear program that we feed it look like? How do we translate the results of the linear solver into a collection of ‘migrate_VM’ API calls?”</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> Question (2) seems to me the first to address, in particular:</font><br>
<font size="2" face="Arial"> “how to prepare the input (variables, constraints, goal) and invoke the solver” </font><br>
<font size="2" face="Wingdings">ð </font><font size="2" face="Arial">We need rules that represent constraints to give the solver (e.g. a technical constraint that a VM should not be assigned to more than one server or that more than maximum resource (cpu /
mem …) of a server cannot be assigned.</font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> “how to translate the results of the linear solver into a collection of API calls”:</font><br>
<font size="2" face="Wingdings">ð </font><font size="2" face="Arial">The output from the “solver” will give the new placement plan (respecting the constraints in input)?</font><br>
<font size="2" face="Courier New">o </font><font size="2" face="Arial">E.g. a table of [vm, server, true/false]</font><br>
<font size="2" face="Wingdings">ð </font><font size="2" face="Arial">Then this depends on how “action” is going to be implemented in Congress (whether an external solver is used or not)</font><br>
<font size="2" face="Courier New">o </font><font size="2" face="Arial">Is the action presented as the “final” DB rows that the system must produce as a result of the actions?</font><br>
<font size="2" face="Courier New">o </font><font size="2" face="Arial">E.g. if current vm table is [vm3, host4] and the recomputed row says [vm3, host6], then the action is to move vm3 to host6?</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> “how will the solver be invoked”?</font> <br>
<font size="2" face="Wingdings">ð </font><font size="2" face="Arial">When will the optimization call be invoked?</font><br>
<font size="2" face="Wingdings">ð </font><font size="2" face="Arial">Is it “batched”, e.g. periodically invoke Congress to compute new assignments?</font><br>
<font size="2" face="Arial"> </font><br>
<font size="2" face="Arial"> Which solver to use: </font><br>
<font size="2" face="Arial"> </font><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__www.coin-2Dor.org_projects_&d=AAMFAw&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=B6BWd4kFfgOzAREgThxkmTZKy7dDXE2-eBAmL0PBK7s&m=3lvgeryw4T-aWafrSZZG96NcydtHt6HnT_6vKookx6U&s=01_9grcy8VGwbKRXcqhFRex3N0XIoCBzOimWFwXYI58&e="><font size="2" color="blue" face="Arial"><u>http://www.coin-or.org/projects/</u></font></a><font size="2" face="Arial">
and </font><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__www.coin-2Dor.org_projects_PuLP.xml&d=AAMFAw&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=B6BWd4kFfgOzAREgThxkmTZKy7dDXE2-eBAmL0PBK7s&m=3lvgeryw4T-aWafrSZZG96NcydtHt6HnT_6vKookx6U&s=RRiv5ZWCQwWguBZIsIXzCA4_otY4Gr7aeFmFMRB4ZZQ&e="><font size="2" color="blue" face="Arial"><u>http://www.coin-or.org/projects/PuLP.xml</u></font></a><br>
<font size="2" face="Arial"> I think it may be useful to pass through an interface (e.g. LP modeler to generate LP files in standard formats accepted by prevalent solvers)</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> The mathematical program:</font> <br>
<font size="2" face="Arial"> We can (Orange) contribute to writing down in an informal way the program for this precise use case, if this can wait until January.</font><br>
<font size="2" face="Arial"> Perhaps the objective is to may be “minimize the number of servers whose usage is less than 50%”, since the original policy “Not more than 1 server of type1 to have a load under 50%” need not necessarily have a solution.</font><br>
<font size="2" face="Arial"> </font><br>
<font size="2" face="Arial"> This may help to derive the “mappings” from Congress (rules to program equations, intermediary tables to program variables)?</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial">For “migration” use case: it may be useful to add some constraint representing cost of migration, such that the solver computes the new assignment plan such that the maximum migration cost is not exceeded. To start with, perhaps
number of migrations?</font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial">I will be away from the end of the week until 5<sup>th</sup> January. I will also discuss with colleagues to see how we can formalize contribution (congress+nfv poc).</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial">Rgds</font> <br>
<font size="2" face="Arial">Ruby</font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Tahoma"><b>De :</b> Tim Hinrichs [</font><a href="mailto:thinrichs@vmware.com"><font size="2" color="blue" face="Tahoma"><u>mailto:thinrichs@vmware.com</u></font></a><font size="2" face="Tahoma">]
<b><br>
Envoyé :</b> vendredi 12 décembre 2014 19:41<b><br>
À :</b> KRISHNASWAMY Ruby IMT/OLPS<b><br>
Cc :</b> Ramki Krishnan (</font><a href="mailto:ramk@Brocade.com"><font size="2" color="blue" face="Tahoma"><u>ramk@Brocade.com</u></font></a><font size="2" face="Tahoma">)<b><br>
Objet :</b> Re: Placement and Scheduling via Policy</font> <br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri">There’s a ton of good stuff here! </font><br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri">So if we took Ramki’s initial use case and combined it with Ruby’s HA constraint, we’d have something like the following policy.
</font><br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Arial">// anti-affinity</font> <br>
<font size="2" face="Arial">error (server, VM1, VM2) :-</font> <br>
<font size="2" face="Arial"> same_ha_group(VM1, VM2),</font> <br>
<font size="2" face="Arial"> nova:location(VM1, server),</font> <br>
<font size="2" face="Arial"> nova:location(VM2, server)</font> <br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Arial">// server-utilization </font><br>
<font size="2" face="Arial">error(server) :-</font> <br>
<font size="2" face="Arial">type1_server(server),</font> <br>
<font size="2" face="Arial">ceilometer:average_utilization(server, “cpu-util”, avg),</font><br>
<font size="2" face="Arial">avg < 50</font> <br>
<font size="3" face="Times New Roman"> </font> <br>
<font size="2" face="Calibri">As a start, this seems plenty complex to me. anti-affinity is great b/c it DOES NOT require a sophisticated solver; server-utilization is great because it DOES require a linear solver.</font><br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri">Data the solver needs:</font> <br>
<font size="2" face="Calibri">- Ceilometer: cpu-utilization for all the servers</font><br>
<font size="2" face="Calibri">- Nova: data as to where each VM is located</font> <br>
<font size="2" face="Calibri">- Policy: high-availability groups</font> <br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri">Questions:</font> <br>
<font size="2" face="Calibri">1) Is there any more data the solver needs? Seems like it needs something about CPU-load for each VM.</font><br>
<font size="2" face="Calibri">2) Which solver should we be using? What does the linear program that we feed it look like? How do we translate the results of the linear solver into a collection of ‘migrate_VM’ API calls?</font><br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri">Maybe another few emails and then we set up a phone call.</font><br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri">Tim</font> <br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri">On Dec 11, 2014, at 1:33 AM, <</font><a href="mailto:ruby.krishnaswamy@orange.com"><font size="2" color="blue" face="Calibri"><u>ruby.krishnaswamy@orange.com</u></font></a><font size="2" face="Calibri">> <</font><a href="mailto:ruby.krishnaswamy@orange.com"><font size="2" color="blue" face="Calibri"><u>ruby.krishnaswamy@orange.com</u></font></a><font size="2" face="Calibri">>
wrote:</font> <br>
<font size="2" face="Calibri"><br>
</font><br>
<font size="2" face="Arial">Hello</font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial">A) First a small extension to the use case that Ramki proposes
</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> - Add high availability constraint.</font> <br>
<font size="2" face="Arial"> - Assuming server-a and server-b are of same size and same failure model.</font><br>
<font size="2" face="Arial"> [Later: Assumption of identical failure rates can be loosened.</font><br>
<font size="2" face="Arial"> Instead of considering only servers as failure domains, can introduce other failure domains
</font><font size="2" face="Wingdings">è</font><font size="2" face="Arial"> not just an anti-affinity policy but a calculation from 99,99.. requirement to VM placements, e.g.
</font><br>
<font size="2" face="Arial"> ]</font> <br>
<font size="2" face="Arial"> - For an exemplary maximum usage scenario, 53 physical servers could be under peak utilization (100%), 1 server (server-a) could be under partial utilization (50%) with 2 instances of type large.3 and 1 instance of type large.2,
and 1 server (server-b) could be under partial utilization (37.5%) with 3 instances of type large.2.</font><br>
<font size="2" face="Arial"> Call VM.one.large2 as the large2 VM in server-a</font><br>
<font size="2" face="Arial"> Call VM.two.large2 as one of the large2 VM in server-b</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> - VM.one.large2 and VM.two.large2 </font><br>
<font size="2" face="Arial"> - When one of the large.3 instances mapped to server-a is deleted from physical server type 1, Policy 1 will be violated, since the overall utilization of server-a falls to 37,5%.</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> - Various new placements(s) are described below</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> VM.two.large2 must not be moved. Moving VM.two.large2 breaks non-affinity constraint.</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> error (server, VM1, VM2) :-</font> <br>
<font size="2" face="Arial"> node (VM1, server1),</font> <br>
<font size="2" face="Arial"> node (VM2, server2),</font> <br>
<font size="2" face="Arial"> same_ha_group(VM1, VM2),</font> <br>
<font size="2" face="Arial"> equal(server1, server2);</font> <br>
<font size="2" face="Arial"> </font><br>
<font size="2" face="Arial"> 1) New placement 1: Move 2 instances of large.2 to server-a. Overall</font><br>
<font size="2" face="Arial"> utilization of server-a - 50%. Overall utilization of server-b -</font><br>
<font size="2" face="Arial"> 12.5%.</font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> 2) New placement 2: Move 1 instance of large.3 to server-b. Overall</font><br>
<font size="2" face="Arial"> utilization of server-a - 0%. Overall utilization of server-b -</font><br>
<font size="2" face="Arial"> 62.5%.</font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> 3) New placement 3: Move 3 instances of large.2 to server-a. Overall</font><br>
<font size="2" face="Arial"> utilization of server-a - 62.5%. Overall utilization of server-b -</font><br>
<font size="2" face="Arial"> 0%.</font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> New placements 2 and 3 could be considered optimal, since they</font><br>
<font size="2" face="Arial"> achieve maximal bin packing and open up the door for turning off</font><br>
<font size="2" face="Arial"> server-a or server-b and maximizing energy efficiency.</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> But new placement 3 breaks client policy.</font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial">BTW: what happens if a given situation does not allow the policy violation to be removed? </font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial">B) Ramki’s original use case can itself be extended:</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> Adding additional constraints to the previous use case due to cases such as:</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial">- </font><font size="2" face="Arial">Server heterogeneity
</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial">- </font><font size="2" face="Arial">CPU “pinning”
</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial">- </font><font size="2" face="Arial">“VM groups” (and allocation
</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial">- </font><font size="2" face="Arial">Application interference
</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial">- Refining on the statement “i</font><font size="2" face="Courier New">nstantaneous energy consumption can be approximately measured using an overall utilization metric, which is a combination of CPU utilization, memory usage,
I/O usage, and network usage”</font> <br>
<font size="2" face="Courier New"> </font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial">Let me know if this will interest you. Some (e.g. application interference) will need some time. E.G; benchmarking / profiling to class VMs etc.</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial">C) New placement plan execution</font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial">- </font><font size="2" face="Arial">In Ramki’s original use case, violation is detected at events such as VM delete.</font><br>
<font size="2" face="Arial">While certainly this by itself is sufficiently complex, we may need to consider other triggering cases (periodic or when multiple VMs are deleted/added)</font><br>
<font size="2" face="Arial">- </font><font size="2" face="Arial">In this case, it may not be sufficient to compute the new placement plan that brings the system to a configuration that does not break policy, but also add other goals</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial">D) Let me know if a use case such as placing “video conferencing servers” (geographically distributed clients) would suit you (multi site scenario)</font><br>
<font size="2" face="Arial"> </font><br>
<font size="2" face="Wingdings">ð </font><font size="2" face="Arial">Or is it too premature?</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial">Ruby</font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Tahoma"><b>De :</b> Tim Hinrichs [</font><a href="mailto:thinrichs@vmware.com"><font size="2" color="blue" face="Tahoma"><u>mailto:thinrichs@vmware.com</u></font></a><font size="2" face="Tahoma">]
<b><br>
Envoyé :</b> mercredi 10 décembre 2014 19:44<b><br>
À :</b> KRISHNASWAMY Ruby IMT/OLPS<b><br>
Cc :</b> Ramki Krishnan (</font><a href="mailto:ramk@Brocade.com"><font size="2" color="blue" face="Tahoma"><u>ramk@Brocade.com</u></font></a><font size="2" face="Tahoma">)<b><br>
Objet :</b> Re: Placement and Scheduling via Policy</font> <br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri">Hi Ruby, </font><br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri">Whatever information you think is important for the use case is good. Section 3 from one of the docs Ramki sent you covers his use case.</font><br>
<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__datatracker.ietf.org_doc_draft-2Dkrishnan-2Dnfvrg-2Dpolicy-2Dbased-2Drm-2Dnfviaas_-3Finclude-5Ftext-3D1&d=AAMFAw&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=B6BWd4kFfgOzAREgThxkmTZKy7dDXE2-eBAmL0PBK7s&m=R82SMwEX_3O32-8F5eqMQ8Y6wuHt9WhjmMg6rr-4gWs&s=nE7Xheq0TcCDN98mFIOG_VvMsmfBeIDNDVVFV1HpJx0&e="><font size="2" color="blue" face="Calibri"><u>https://datatracker.ietf.org/doc/draft-krishnan-nfvrg-policy-based-rm-nfviaas/?include_text=1</u></font></a><br>
<font size="3" face="Times New Roman"> </font> <br>
<font size="2" face="Calibri">From my point of view, the keys things for the use case are…</font><br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri">- The placement policy (i.e. the conditions under which VMs require migration).</font><br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri">- A description of how we want to compute what specific migrations should be performed (a sketch of (i) the information that we need about current placements, policy violations, etc., (2) what systems/algorithms/etc. can utilize
that input to figure out what migrations to perform.</font> <br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri">I think we want to focus on the end-user/customer experience (write a policy, and watch the VMs move around to obey that policy in response to environment changes) and then work out the details of how to implement that experience.
That’s why I didn’t include things like delays, asynchronous/synchronous, architecture, applications, etc. in my 2 bullets above.</font><br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri">Tim</font> <br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" face="Calibri">On Dec 10, 2014, at 8:55 AM, <</font><a href="mailto:ruby.krishnaswamy@orange.com"><font size="2" color="blue" face="Calibri"><u>ruby.krishnaswamy@orange.com</u></font></a><font size="2" face="Calibri">> <</font><a href="mailto:ruby.krishnaswamy@orange.com"><font size="2" color="blue" face="Calibri"><u>ruby.krishnaswamy@orange.com</u></font></a><font size="2" face="Calibri">>
wrote:</font> <br>
<font size="2" face="Calibri"><br>
<br>
</font><br>
<font size="2" face="Arial">Hi Ramki, Tim</font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial">By a “format” for describing use cases, I meant to ask what sets of information to provide, for example,
</font><br>
<font size="2" face="Arial">- </font><font size="2" face="Arial">what granularity in description of use case?</font><br>
<font size="2" face="Arial">- </font><font size="2" face="Arial">a specific placement policy (and perhaps citing reasons for needing such policy)?</font><br>
<font size="2" face="Arial">- </font><font size="2" face="Arial">Specific applications</font><br>
<font size="2" face="Arial">- </font><font size="2" face="Arial">Requirements on the placement manager itself (delay, …)?</font><br>
<font size="2" face="Courier New">o </font><font size="2" face="Arial">Architecture as well</font><br>
<font size="2" face="Arial">- </font><font size="2" face="Arial">Specific services from the placement manager (using Congress), such as,</font><br>
<font size="2" face="Courier New">o </font><font size="2" face="Arial">Violation detection (load, security, …)</font><br>
<font size="2" face="Arial">- </font><font size="2" face="Arial">Adapting (e.g. context-aware) of policies used</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial">In any case I will read the documents that Ramki has sent to not resend similar things.</font><br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Arial">Regards</font> <br>
<font size="2" face="Arial">Ruby</font> <br>
<font size="2" face="Arial"> </font> <br>
<font size="2" face="Tahoma"><b>De :</b> Ramki Krishnan [</font><a href="mailto:ramk@Brocade.com"><font size="2" color="blue" face="Tahoma"><u>mailto:ramk@Brocade.com</u></font></a><font size="2" face="Tahoma">]
<b><br>
Envoyé :</b> mercredi 10 décembre 2014 16:59<b><br>
À :</b> Tim Hinrichs; KRISHNASWAMY Ruby IMT/OLPS<b><br>
Cc :</b> Norival Figueira; Pierre Ettori; Alex Yip; </font><a href="mailto:dilikris@in.ibm.com"><font size="2" color="blue" face="Tahoma"><u>dilikris@in.ibm.com</u></font></a><font size="2" face="Tahoma"><b><br>
Objet :</b> RE: Placement and Scheduling via Policy</font> <br>
<font size="2" face="Calibri"> </font> <br>
<font size="2" color="#004080" face="Calibri">Hi Tim,</font> <br>
<font size="2" color="#004080" face="Calibri"> </font> <br>
<font size="2" color="#004080" face="Calibri">This sounds like a plan. It would be great if you could add the links below to the Congress wiki. I am all for discussing this in the openstack-dev mailing list and at this point this discussion is completely open.</font><br>
<font size="2" color="#004080" face="Calibri"> </font> <br>
<font size="2" color="#004080" face="Calibri">IRTF NFVRG Research Group: </font><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__trac.tools.ietf.org_group_irtf_trac_wiki_nfvrg&d=AAMFAw&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=B6BWd4kFfgOzAREgThxkmTZKy7dDXE2-eBAmL0PBK7s&m=R82SMwEX_3O32-8F5eqMQ8Y6wuHt9WhjmMg6rr-4gWs&s=X---GnOf7YwhOGKMWYa8Mh52VtmO-2imfuZdKLEY39M&e="><font size="2" color="blue" face="Calibri"><u>https://trac.tools.ietf.org/group/irtf/trac/wiki/nfvrg</u></font></a><br>
<font size="2" color="#004080" face="Calibri"> </font> <br>
<font size="2" color="#004080" face="Calibri">IRTF NFVRG draft on NFVIaaS placement/scheduling (includes system analysis for the PoC we are thinking):
</font><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__datatracker.ietf.org_doc_draft-2Dkrishnan-2Dnfvrg-2Dpolicy-2Dbased-2Drm-2Dnfviaas_-3Finclude-5Ftext-3D1&d=AAMFAw&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=B6BWd4kFfgOzAREgThxkmTZKy7dDXE2-eBAmL0PBK7s&m=R82SMwEX_3O32-8F5eqMQ8Y6wuHt9WhjmMg6rr-4gWs&s=nE7Xheq0TcCDN98mFIOG_VvMsmfBeIDNDVVFV1HpJx0&e="><font size="2" color="blue" face="Calibri"><u>https://datatracker.ietf.org/doc/draft-krishnan-nfvrg-policy-based-rm-nfviaas/?include_text=1</u></font></a><br>
<font size="2" color="#004080" face="Calibri"> </font> <br>
<font size="2" color="#004080" face="Calibri">IRTF NFVRG draft on Policy Architecture and Framework (looking forward to your comments and thoughts):
</font><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__datatracker.ietf.org_doc_draft-2Dnorival-2Dnfvrg-2Dnfv-2Dpolicy-2Darch_-3Finclude-5Ftext-3D1&d=AAMFAw&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=B6BWd4kFfgOzAREgThxkmTZKy7dDXE2-eBAmL0PBK7s&m=R82SMwEX_3O32-8F5eqMQ8Y6wuHt9WhjmMg6rr-4gWs&s=lBet00H8iO1igDZNEMUGaryHWutkg8abBbL5VG8pjyk&e="><font size="2" color="blue" face="Calibri"><u>https://datatracker.ietf.org/doc/draft-norival-nfvrg-nfv-policy-arch/?include_text=1</u></font></a><br>
<font size="2" color="#004080" face="Calibri"> </font> <br>
<font size="2" color="#004080" face="Calibri">Hi Ruby,</font> <br>
<font size="2" color="#004080" face="Calibri"> </font> <br>
<font size="2" color="#004080" face="Calibri">Looking forward to your use cases.</font><br>
<font size="2" color="#004080" face="Calibri"> </font> <br>
<font size="2" color="#004080" face="Calibri">Thanks,</font> <br>
<font size="2" color="#004080" face="Calibri">Ramki</font> <br>
<font size="2" color="#004080" face="Calibri"> </font> <br>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div>
</blockquote>
</span></div>
</div>
</blockquote>
</span></div>
</blockquote>
</div>
<br>
</div>
</body>
</html>