<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2018-05-17 9:38 GMT+08:00 Alex Xu <span dir="ltr"><<a href="mailto:soulxu@gmail.com" target="_blank">soulxu@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="gmail-">2018-05-17 1:24 GMT+08:00 Jay Pipes <span dir="ltr"><<a href="mailto:jaypipes@gmail.com" target="_blank">jaypipes@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span>On 05/16/2018 01:01 PM, Nadathur, Sundar wrote:<br>
</span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span>
Hi,<br>
    The Cyborg quota spec [1] proposes to implement a quota (maximum usage) for accelerators on a per-project basis, to prevent one project (tenant) from over-using some resources and starving other tenants. There are separate resource classes for different accelerator types (GPUs, FPGAs, etc.), and so we can do quotas per RC.<br>
<br>
The current proposal [2] is to track the usage in Cyborg agent/driver. I am not sure that scheme will work, as I have indicated in the comments on [1]. Here is another possible way.<br>
<br></span>
  * The operator configures the oslo.limit in keystone per-project<br>
    per-resource-class (GPU, FPGA, ...).<br>
      o Until this gets into Keystone, Cyborg may define its own quota<span><br>
        table, as defined in [1].<br></span>
  * Cyborg implements a table to track per-project usage, as defined in [1].<br>
</blockquote>
<br>
Placement already stores usage information for all allocations of resources. There is already even a /usages API endpoint that you can specify a project and/or user:<br>
<br>
<a href="https://developer.openstack.org/api-ref/placement/#list-usages" rel="noreferrer" target="_blank">https://developer.openstack.or<wbr>g/api-ref/placement/#list-usag<wbr>es</a><br>
<br>
I see no reason not to use it.<br>
<br>
There is already actually a spec to use placement for quota usage checks in Nova here:<br>
<br>
<a href="https://review.openstack.org/#/c/509042/" rel="noreferrer" target="_blank">https://review.openstack.org/#<wbr>/c/509042/</a></blockquote><div><br></div></span><div>FYI, I'm working on a spec which append to that spec. It's about counting quota for the resource class(GPU, custom RC, etc) other than nova built-in resources(cores, ram). It should be able to count the resource classes which are used by cyborg. But yes, we probably should answer Matt's question first, whether we should let Nova count quota instead of Cyborg.</div></div></div></div></blockquote><div><br></div><div>here is the line <a href="https://review.openstack.org/#/c/569011/">https://review.openstack.org/#/c/569011/</a></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class="gmail-"><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
Probably best to have a look at that and see if it will end up meeting your needs.<br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  * Cyborg provides a filter for the Nova scheduler, which checks<span><br>
    whether the project making the request has exceeded its own quota.<br>
</span></blockquote>
<br>
Quota checks happen before Nova's scheduler gets involved, so having a scheduler filter handle quota usage checking is pretty much a non-starter.<br>
<br>
I'll have a look at the patches you've proposed and comment there.<br>
<br>
Best,<br>
-jay<br>
<br>
______________________________<wbr>______________________________<wbr>______________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.op<wbr>enstack.org?subject:unsubscrib<wbr>e</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi<wbr>-bin/mailman/listinfo/openstac<wbr>k-dev</a><br>
</blockquote></span></div><br></div></div>
</blockquote></div><br></div></div>