← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1675504] Re: openstack_dashboard.usage.quotas.tenant_quota_usages fetches to many quotas and degrades performances

 

Reviewed:  https://review.openstack.org/456416
Committed: https://git.openstack.org/cgit/openstack/horizon/commit/?id=359467b4013bb4f89a6a1309e6eda89459288986
Submitter: Jenkins
Branch:    master

commit 359467b4013bb4f89a6a1309e6eda89459288986
Author: Akihiro Motoki <amotoki@xxxxxxxxx>
Date:   Wed Apr 12 18:10:20 2017 +0000

    Retrieve quota and usage only for resources really required
    
    tenant_quota_usage() is used to retrieve quota and usage
    to determine if a resource can be created.
    However, tenant_quota_usage retrieves quota and usage for
    all resources and it can be a performance problem.
    
    This commit allows to load quota and usage only for resources
    which are actually required.
    
    Closes-Bug: #1675504
    Change-Id: Iab7322a337a451a1a040cc2f4b55cc319b1ffc4c


** Changed in: horizon
       Status: In Progress => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Dashboard (Horizon).
https://bugs.launchpad.net/bugs/1675504

Title:
  openstack_dashboard.usage.quotas.tenant_quota_usages fetches to many
  quotas and degrades performances

Status in OpenStack Dashboard (Horizon):
  Fix Released

Bug description:
  When looking at the keypair dashboard, or router dashboard, etc...
  openstack_dashboard.usage.quotas.tenant_quota_usages queries also
  cinder, etc... and therefore makes tons of unused and unnecessary api
  calls.

  It slows down panels very heavily.

  I did a quick and dirty test on some dashboards (with a local horizon
  targeted on a production environment's APIs) by modifying the
  tenant_quota_usages function to retrieve only the desired quotas and
  usages for the page I need, and it turns out that rendering a page is
  between 3 to five time faster. Just enormous.

  We really do not need to fetch all usages and quotas when retrieving
  keypairs, etc...

  This function should accept extra parameters to get only the desired
  quotas and usages.

  However this is a huge task because it requires modifying ALL
  dashboards.

  OPENSTACK_HYPERVISOR_FEATURES['enable_quotas'] and
  OPENSTACK_NEUTRON_NETWORK['enable_quotas'] set to False is not a
  solution because it prevents fetching these quotas whatever the
  dashboard.

  The solution is e.g. not fetching network quotas and usages on the
  volumes dashboard or cinder quotas and usages on the keypairs
  dashboard, etc...

  Quick tests show that the performance impact is simply more than
  tremendously gigantic. e.g.: My "routers" page with the current
  function takes 20 to 30 seconds to render (just catastrophic), and
  only 3 to 5 seconds If I get only the the desired quotas and usages
  required only for this dashboard.

To manage notifications about this bug go to:
https://bugs.launchpad.net/horizon/+bug/1675504/+subscriptions


References