<div dir="ltr">Hi Jay,<div><br></div><div>Ah! Very interesting.</div><div><br></div><div>My initial reaction is that weighting resources to make flavors use more resources than in reality could make actual usage reporting difficult. But nothing reverse-weighting couldn't deal with. It's a very good idea that highlights a more simple approach to what I had in mind - and for that, thank you very much :)</div>
<div><br></div><div>Joe </div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Apr 5, 2014 at 3:40 PM, Jay Pipes <span dir="ltr"><<a href="mailto:jaypipes@gmail.com" target="_blank">jaypipes@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Sat, 2014-04-05 at 14:56 -0600, Joe Topjian wrote:<br>
> Hi Jay,<br>
><br>
>         The only problem with this is that what happens if an instance<br>
>         type's<br>
>         underlying resource allocation changes? Quotas and<br>
>         reservations<br>
>         generally need to be on the actual resources that are<br>
>         consumed, not on<br>
>         an abstract representation of those resources like an instance<br>
>         type, due<br>
>         to the fact that the abstract representation can changes over<br>
>         time.<br>
><br>
>         My idea about the UI above works nicely with the idea of<br>
>         changeable<br>
>         instance types. The UI can do simple real-time calculations<br>
>         about what a<br>
>         quota allocation represents in terms of the actual resources<br>
>         used by an<br>
>         instance type.<br>
><br>
><br>
> Yes, but there is nothing limiting a user to only a set amount of a<br>
> certain resource in a certain environment.<br>
><br>
> Perhaps I am misunderstanding this discussion, but here is an example<br>
> scenario of how I see it:<br>
><br>
> I have a small set of compute nodes that are configured in such a way<br>
> that make them "special" (SSD, GPU, etc). I can put those compute<br>
> nodes in a host aggregate and tie a series of flavors to that host<br>
> aggregate.<br>
><br>
> But since there is only one quota that the user has, there is nothing<br>
> that is preventing a user from hogging a large majority of the those<br>
> "special" nodes. For example, if a user has a quota of 500 cpus and<br>
> 800gb of memory, and if the "special" nodes collectively only have<br>
> 1500 cpus and 2400gb of memory, the user could consume 1/3rd of the<br>
> special resources.<br>
><br>
> However, if I was able to tie a separate quota to that host aggregate,<br>
> I could give the user a quota of 50 cpus and 80gb of memory alongside<br>
> his standard quota of 500/800 for the rest of the cloud.<br>
><br>
> I greatly apologize if this scenario is *not* what Narayan was talking<br>
> about. In addition, this is not a feature that I'm personally in<br>
> desperate need for, but would definitely implement it if it was<br>
> available -- much more than a quota template.<br>
<br>
</div></div>Yes, the above scenario indeed is an interesting use case. Part of the<br>
issue is that with the addition of the "extra specs" part of the<br>
instance type, the instance type no longer represents just the dedicated<br>
resources that the a single instance of that type consumes, but also a<br>
free-form set of "capabilities" that the instance has -- GPU, SSD, etc.<br>
<br>
The trick really is going to be about quantifying what those free-form<br>
qualitative "tags" like GPU actually represent when it comes to the<br>
consumption of resources in Nova. As it stands now, quota management has<br>
no real way of differentiating one CPU unit from another. I imagine that<br>
one solution to this would be to attach a "weighting factor" to each<br>
free-form instance type extra spec that would effectively multiply the<br>
actual resource that is consumed by the instance of that type by the<br>
factor, thereby producing a quantifiable value.<br>
<br>
For example, let's say you had these two instance types:<br>
<br>
 m1.small<br>
  - 2GB memory<br>
  - 10GB disk<br>
  - 1 CPU<br>
<br>
 g1.small<br>
  - 2GB memory<br>
  - 10GB disk<br>
  - 1 CPU<br>
  - extra_specs:<br>
    - gpu<br>
    - ssd<br>
<br>
An admin might assign the "gpu" extra spec a weighting factor of<br>
"cpu:1.5" and the "ssd" extra spec a weighting factor of "disk:10.0".<br>
This could be used by the quota management system to effectively give<br>
the g1.small instance type the following adjusted resource allocation:<br>
<br>
 - 2GB memory<br>
 - 1.5 CPU<br>
 - 100GB disk<br>
<br>
Make sense?<br>
<span class="HOEnZb"><font color="#888888"><br>
-jay<br>
<br>
<br>
<br>
</font></span></blockquote></div><br></div>