<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Jan:<div><br></div><div>Here are two use cases from when I was at ISI. In both cases, we wanted access to a machine with customized hardware to improve performance of certain applications:</div><div><br></div><div>1. GPUs.  We wanted the users to be able to specify request a host that had GPU cards so they could run GPU-accelarated apps in their instances. </div><div><br></div><div>2. Shared-memory machine. We had an SGI UV machine with specific performance characteristics, and sometimes we wanted to specifically launch instances on that machine, even if the instance could fit on one of the regular x86 boxes we had. So we had an extra spec with something like "system=uv".</div><div><br></div><div><br><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Take care,</div><div><br></div><div>Lorin</div><div>--</div><div>Lorin Hochstein</div><div>Lead Architect - Cloud Services</div><div>Nimbis Services, Inc.</div><div><a href="https://www.nimbisservices.com/">www.nimbisservices.com</a></div><div><br></div></div></span><br class="Apple-interchange-newline"></div></span><br class="Apple-interchange-newline"></span><br class="Apple-interchange-newline">
</div>
<br><div><div>On Apr 2, 2012, at 9:23 PM, Jan Drake wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div bgcolor="#FFFFFF"><div>If I understand this correctly, the motivation is to be able to provide a hint to schedulers on host-level appropriateness based on information external to that found in the hyperviser.  </div><div><br></div><div>Right/Wrong/Close?</div><div><br></div><div>It would help to have a real-world example of where basic host resource  evalution for scheduling would cause a situation requiring the host-level hard-coding of what is essentially a flavor-constraint.</div><div><br></div><div>I'll hold further thoughts for downstream.</div><div><br></div><div><br></div><div>Jan<br><br></div><div><br>On Apr 2, 2012, at 6:06 PM, Lorin Hochstein <<a href="mailto:lorin@nimbisservices.com">lorin@nimbisservices.com</a>> wrote:<br><br></div><div></div><blockquote type="cite"><div><div>Just created a blueprint for this:</div><div><br></div><div><a href="https://blueprints.launchpad.net/nova/+spec/host-capabilities-api">https://blueprints.launchpad.net/nova/+spec/host-capabilities-api</a></div><div><br></div><br><div apple-content-edited="true">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Take care,</div><div><br></div><div>Lorin</div><div>--</div><div>Lorin Hochstein</div><div>Lead Architect - Cloud Services</div><div>Nimbis Services, Inc.</div><div><a href="https://www.nimbisservices.com/">www.nimbisservices.com</a></div><div><br></div></div></span><br class="Apple-interchange-newline"></div><br class="Apple-interchange-newline"><br class="Apple-interchange-newline">
</div>
<br><div><div>On Apr 2, 2012, at 3:29 PM, Jay Pipes wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Can I add a feature request to the below thoughtstream? Can we make it so that the management of these things can be done outside of config files? i.e. via a REST API with some simple middleware exposing the particular scheduler nodes' understanding of which capabilities/filters it is using to apply its scheduling algorithm?<br><br>Making changes to configuration files works OK for simple uses and testing, not so much for on-demand operations :) I say this after grumbling about similar configuration obstacles with ratelimits.<br><br>Best,<br>-jay<br><br>On 04/02/2012 02:37 PM, Chris Behrens wrote:<br><blockquote type="cite">I have some plans for being able to set arbitrary "capabilities" for<br></blockquote><blockquote type="cite">hosts via nova.conf that you can use to build scheduler filters.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Right now, there are capabilities, but I believe we're only creating<br></blockquote><blockquote type="cite">these from hypervisor stats. You can filter on those today. What I'm<br></blockquote><blockquote type="cite">planning on adding is a way to specify additional keyname/value pairs in<br></blockquote><blockquote type="cite">nova.conf to supplement the capabilities we build from hypervisor stats.<br></blockquote><blockquote type="cite">You could set things like this in your nova.conf:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">--host_capabilities=instance_type_ids=1,2,3;keyX;keyY=something<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">etc. Since capabilities are already passed to scheduler rules, you could<br></blockquote><blockquote type="cite">add some basic filters that do:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">if 'instance_type_ids' in capabilities and instance_type.id not in<br></blockquote><blockquote type="cite">capabilities['instance_type_ids']:<br></blockquote><blockquote type="cite">return False<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Since host_capabilities are just arbitrary keyname/value pairs, you can<br></blockquote><blockquote type="cite">pretty much add anything you want to --host_capabilities and then write<br></blockquote><blockquote type="cite">some matching scheduler filter rules.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">That's the basic idea, anyway. The exact same behavior will apply to<br></blockquote><blockquote type="cite">'cells' and the cells scheduler as well. (Except you'll have<br></blockquote><blockquote type="cite">cells_capabilities= somewhere (prob nova.conf for the cells service).<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">- Chris<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">On Apr 2, 2012, at 10:36 AM, Day, Phil wrote:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><blockquote type="cite">Hi Folks,<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">I’m looking for a capability to limit some flavours to some hosts. I<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">want the mapping to be as flexible as possible, and work within a<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">zone/cell (I don’t want to add zones just to get this mapping). For<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">example I want to express something like:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Host_1 supports flavours A, C<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Host_2 supports flavours A, B<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Host_3 supports flavours A, B, C<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Host_4 supports flavours D<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Ideally there would be some form of grouping to sets of flavours:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Flavour_A is part of Flavour_Sets 1, 2, 3<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Flavour_B is part of Flavour_Sets 2, 3<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Flavour_C is part of Flavour_Sets 1, 3, 4<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Host_1 supports flavour Set 1<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Host_2 supports flavour Set 2<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Host_3 supports flavour Set 3<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Host_4 supports flavour Set 4<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">>From the Essex design summit I thought that host aggregates was going to give this sort of capability, but having looked through the code that seems to be quite tightly coupled with specific hypervisor functionality, whereas this is purely a scheduler feature.<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">I can see that I could define flavour group membership through the<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">instanace_type_extra_specs, but not how to then associate these with<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">specific hosts.<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">I know I’m a tad behind some of the recent changes – so before<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">suggesting a design summit session on this I thought I’d ask - is<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">there something that already does this type of mapping ?<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Cheers,<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Phil<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">_______________________________________________<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Mailing list:https://launchpad.net/~openstack<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Post to :<a href="mailto:openstack@lists.launchpad.net">openstack@lists.launchpad.net</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><<a href="mailto:openstack@lists.launchpad.net">mailto:openstack@lists.launchpad.net</a>><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Unsubscribe :<a href="https://launchpad.net/~openstack">https://launchpad.net/~openstack</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">More help :<a href="https://help.launchpad.net/ListHelp">https://help.launchpad.net/ListHelp</a><br></blockquote></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">_______________________________________________<br></blockquote><blockquote type="cite">Mailing list: <a href="https://launchpad.net/~openstack">https://launchpad.net/~openstack</a><br></blockquote><blockquote type="cite">Post to     : <a href="mailto:openstack@lists.launchpad.net">openstack@lists.launchpad.net</a><br></blockquote><blockquote type="cite">Unsubscribe : <a href="https://launchpad.net/~openstack">https://launchpad.net/~openstack</a><br></blockquote><blockquote type="cite">More help   : <a href="https://help.launchpad.net/ListHelp">https://help.launchpad.net/ListHelp</a><br></blockquote><br>_______________________________________________<br>Mailing list: <a href="https://launchpad.net/~openstack">https://launchpad.net/~openstack</a><br>Post to     : <a href="mailto:openstack@lists.launchpad.net">openstack@lists.launchpad.net</a><br>Unsubscribe : <a href="https://launchpad.net/~openstack">https://launchpad.net/~openstack</a><br>More help   : <a href="https://help.launchpad.net/ListHelp">https://help.launchpad.net/ListHelp</a><br></div></blockquote></div><br></div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>Mailing list: <a href="https://launchpad.net/~openstack">https://launchpad.net/~openstack</a></span><br><span>Post to     : <a href="mailto:openstack@lists.launchpad.net">openstack@lists.launchpad.net</a></span><br><span>Unsubscribe : <a href="https://launchpad.net/~openstack">https://launchpad.net/~openstack</a></span><br><span>More help   : <a href="https://help.launchpad.net/ListHelp">https://help.launchpad.net/ListHelp</a></span><br></div></blockquote></div></blockquote></div><br></div></body></html>