[openstack-dev] [Horizon] [Performance] Gathering quota usage data in Horizon

Lingxian Kong anlin.kong at gmail.com
Thu Jan 26 03:24:19 UTC 2017


Hi, guys,

Sorry for recalling this thread after 1 year, but we are currently
suffering from the poor performance issue for our public cloud.

As usage of our customers keeps growing, we are at a stage that should
seriously pay more attention to horizon performance problem, so Google took
me to this email after a lot of search.

Currently, when loading a page that may contain some buttons for
creating/allocating resource (e.g. 'Access & Security'), horizon will check
the quota usage first to see if a specific button should be disabled or
not, and the checkings just happen *in sequence*, which makes things even
worse.

What's more, the quota usage query in horizon is included in one
function[1], it will invoke Nova, Cinder, Neutron (perhaps more in future)
APIs to get usage of bunch of resources, rather than the resource that page
is rendering, which is another flaw IMHO. I know that this function call is
already put in cache, but most of our customers' pain just come from the
first click.

So, I have a few questions:

1. Does horizon support some config option that could disable quota check?
As a public cloud, it doesn't make much sense that usage should be limited,
and we have a monitoring tool that will increase quotas automatically when
customer's usage will hit the quota limit. So, getting rid of that check
will save our customers appreciable mass of waiting time.

2. Another option is to support get quota usage for specific resource
rather than all the resources, e.g. when loading floating ip tab, horizon
only get floating ip quota usage from Neutron, which has only 2 api calls.

3. I found this FFE[2] which is great (also replied), but splitting tabs is
not the end, more effort should be put into the performance improvement.

4. Some other trivial improvement like this:
https://review.openstack.org/425494

[1]: https://github.com/openstack/horizon/blob/master/
openstack_dashboard/usage/quotas.py#L396
[2]:
http://openstack.markmail.org/thread/ra3brm6voo4ouxtx#query:+page:1+mid:oata2tifthnhy5b7+state:results


Cheers,
Lingxian Kong (Larry)

On Wed, Dec 23, 2015 at 9:50 PM, Timur Sufiev <tsufiev at mirantis.com> wrote:

> Duncan,
>
> Thank you for the suggestion, will do.
>
> On Wed, 23 Dec 2015 at 10:55, Duncan Thomas <duncan.thomas at gmail.com>
> wrote:
>
>> On a cloud with a large number of tenants, this is going to involve a
>> large number of API calls. I'd suggest you put a spec into cinder to add an
>> API call for getting the totals straight out of the DB - it should be easy
>> enough to add.
>>
>> On 18 December 2015 at 20:35, Timur Sufiev <tsufiev at mirantis.com> wrote:
>>
>>> Matt,
>>>
>>> actually Ivan (Ivan, thanks a lot!) showed me the exact cinderclient
>>> call that I needed. Now I know how to retrieve Cinder quota usage info
>>> per-tenant, seems that to retrieve the same info cloud-wide I should sum up
>>> all the available tenant usages.
>>>
>>> With Cinder quota usages being sorted out, my next goal is Nova and
>>> Neutron. As for Neutron, there are plenty of quota-related calls I'm going
>>> to play with next week, perhaps there is something suitable for my use
>>> case. But as for Nova, I haven't found something similar to 'usage' of
>>> cinderclient call, so help from someone familiar with Nova is very
>>> appreciated :).
>>>
>>> [0] https://github.com/openstack/python-cinderclient/blob/ma
>>> ster/cinderclient/v2/quotas.py#L36
>>>
>>> On Fri, Dec 18, 2015 at 5:17 PM Matt Riedemann <
>>> mriedem at linux.vnet.ibm.com> wrote:
>>>
>>>>
>>>>
>>>> On 12/17/2015 2:40 PM, Ivan Kolodyazhny wrote:
>>>> > Hi Timur,
>>>> >
>>>> > Did you try this Cinder API [1]?  Here [2] is cinderclient output.
>>>> >
>>>> >
>>>> >
>>>> > [1]
>>>> > https://github.com/openstack/python-cinderclient/blob/master
>>>> /cinderclient/v2/quotas.py#L33
>>>> > [2] http://paste.openstack.org/show/482225/
>>>> >
>>>> > Regards,
>>>> > Ivan Kolodyazhny,
>>>> > http://blog.e0ne.info/
>>>> >
>>>> > On Thu, Dec 17, 2015 at 8:41 PM, Timur Sufiev <tsufiev at mirantis.com
>>>> > <mailto:tsufiev at mirantis.com>> wrote:
>>>> >
>>>> >     Hello, folks!
>>>> >
>>>> >     I'd like to initiate a discussion of the feature request I'm going
>>>> >     to make on behalf of Horizon to every core OpenStack service which
>>>> >     supports Quota feature, namely Cinder, Nova and Neutron.
>>>> >
>>>> >     Although all three services' APIs support special calls to get
>>>> >     current quota limitations (Nova and Cinder allows to get and
>>>> update
>>>> >     both per-tenant and default cloud-wide limitations, Neutron allows
>>>> >     to do it only for per-tenant limitations), there is no special
>>>> call
>>>> >     in any of these services to get current per-tenant usage of quota.
>>>> >     Because of that Horizon needs to get, say for 'volumes' quota, a
>>>> >     list of Cinder volumes in the current tenant and then just
>>>> calculate
>>>> >     its length [1]. When there are really a lot of entities in tenant
>>>> -
>>>> >     instances/volumes/security groups/whatever - all this calls sum up
>>>> >     and make rendering pages in Horizon much more slower than it could
>>>> >     be. Is it possible to provide special API calls to alleviate this?
>>>> >
>>>> >     [1]
>>>> >     https://github.com/openstack/horizon/blob/9.0.0.0b1/opensta
>>>> ck_dashboard/usage/quotas.py#L350
>>>> >
>>>> >     ___________________________________________________________
>>>> _______________
>>>> >     OpenStack Development Mailing List (not for usage questions)
>>>> >     Unsubscribe:
>>>> >     OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>>>> >     <http://OpenStack-dev-request@lists.openstack.org?subject:u
>>>> nsubscribe>
>>>> >     http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>> >
>>>> >
>>>> >
>>>> >
>>>> > ____________________________________________________________
>>>> ______________
>>>> > OpenStack Development Mailing List (not for usage questions)
>>>> > Unsubscribe: OpenStack-dev-request at lists.op
>>>> enstack.org?subject:unsubscribe
>>>> > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>> >
>>>>
>>>> I think Timur is asking for a way to filter on only certain resources
>>>> for quota usage/limits, like volumes in cinder or instances in nova,
>>>> rather than getting back all resource usage/limits per tenant.
>>>>
>>>> Is that correct, Timur?
>>>>
>>>> While it's possible to add this, I'm not sure how much time it's
>>>> actually going to save in the DB query time to get the quota information
>>>> for a tenant.
>>>>
>>>> Anyway, it's an API change so it would require a spec for nova which
>>>> means we wouldn't be getting to that until at least N since we're in
>>>> spec freeze for mitaka.
>>>>
>>>> --
>>>>
>>>> Thanks,
>>>>
>>>> Matt Riedemann
>>>>
>>>>
>>>> ____________________________________________________________
>>>> ______________
>>>> OpenStack Development Mailing List (not for usage questions)
>>>> Unsubscribe: OpenStack-dev-request at lists.op
>>>> enstack.org?subject:unsubscribe
>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>>
>>>
>>> ____________________________________________________________
>>> ______________
>>> OpenStack Development Mailing List (not for usage questions)
>>> Unsubscribe: OpenStack-dev-request at lists.op
>>> enstack.org?subject:unsubscribe
>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>
>>>
>>
>>
>> --
>> --
>> Duncan Thomas
>> ____________________________________________________________
>> ______________
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscrib
>> e
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20170126/22ffdb1e/attachment.html>


More information about the OpenStack-dev mailing list