Bug 803106 - Scalability: Component Outlines tab in /conductor/pool_families is slow when there are a large number of images
Summary: Scalability: Component Outlines tab in /conductor/pool_families is slow when ...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: CloudForms Cloud Engine
Classification: Retired
Component: aeolus-conductor
Version: 1.0.0
Hardware: Unspecified
OS: Unspecified
unspecified
high
Target Milestone: rc
Assignee: Jiri Tomasek
QA Contact: wes hayutin
URL:
Whiteboard:
Depends On:
Blocks: 824512
TreeView+ depends on / blocked
 
Reported: 2012-03-14 01:08 UTC by Richard Su
Modified: 2012-12-04 14:58 UTC (History)
11 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
A large number of images increased the number of queries to Image Warehouse and degraded the "Images" page load time. This update paginates the results in "Images" and reduces the load time.
Clone Of:
: 824512 (view as bug list)
Environment:
Last Closed: 2012-12-04 14:58:45 UTC
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHEA-2012:1516 0 normal SHIPPED_LIVE CloudForms Cloud Engine 1.1 update 2012-12-04 19:51:45 UTC

Description Richard Su 2012-03-14 01:08:42 UTC
Description of problem:
It takes about 56 seconds for this page to load when there are 100 images in the system. There are alot of calls to iwhd, so this may be the underlying issue. Perhaps we can paginate the table.

Version-Release number of selected component (if applicable):
aeolus-conductor-0.8.0-42.el6.noarch

How reproducible:
always

Steps to Reproduce:
1. Build 100 images for mock. 
You can use this jmeter test to help with creating multiple images: https://github.com/aeolusproject/aeolus-performance-testing/tree/master/jmeter/build-and-push

Comment 1 Richard Su 2012-03-14 23:10:31 UTC
The source of the slowness is in to two places in app/views/images/_list.html.haml. Both are indeed calls to iwhd.

The first is these two lines to fetch the name and version of the OS:

        = image.os.name.empty? ? "N/A" : image.os.name
        = image.os.version.empty? ? "N/A" : image.os.version

It is the call on the os method that is expensive. Removing these two lines eliminates 24 seconds.

The second is a call to retrieve the last push or last build timestamp.

        = Time.at(image.latest_pushed_or_unpushed_build.timestamp.to_f) rescue ''

Removing this lines saves 16 seconds.

Comment 2 Jiri Tomasek 2012-03-29 10:59:37 UTC
added images pagination in commit cc30f44ae11fd8c3096564477e777c1cea0f295b

Comment 4 Hugh Brock 2012-05-11 14:52:57 UTC
I'm flagging this for Z since it is a legit high-severity issue and there is already a fix. Wes, Dave, are you comfortable with risk on the fix?

Comment 6 Jiri Tomasek 2012-05-29 14:46:11 UTC
Note: the patchfix related to this BZ has been pushed into 1.0.1 (commit 4178f9f320dd99c60c5f4e0501f1d58883d4fc9f)

Comment 9 errata-xmlrpc 2012-12-04 14:58:45 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHEA-2012-1516.html


Note You need to log in before you can comment on or make changes to this bug.