On 07/20/2010 11:06 PM, Jason Guiditta wrote:
> I noticed when I was testing Jan's latest instance listing patch that
> there was a performance issue.  I have not completely tracked it down
> yet, but I don't think it is directly related to that patchset, as I
> noticed the same behavior when on another branch without those patches.
> To see where I am talking about, go to a pool with some instances (the
> path to this may have changed, depending on if you have Tomas' patch
> that removes the left nav).  The initial page load is fairly normal
> (though, even that I think is a little slower than it should be).
> However, once the ajax call goes out to get the table, there is a very
> long wait.  I think this is something specific to this path, as if you
> go to /instance directly, it seems much faster.  Here is an example
> snippet from my log showing just the slow bit:
>
> Rendered instance/_instances (940.2ms)
> Completed in 1492ms (View: 954, DB: 19) | 200 OK
> [http://localhost/pool/list/1?ajax=true]
>
> As a reference, the initial page load is:
>
> Rendered layouts/_main_nav (14.5ms)
> Rendered layouts/_notification (2.4ms)
> Completed in 346ms (View: 147, DB: 17) | 200 OK
> [http://localhost/pool/1]
>
> So the 2nd call takes over 4 times as long!  I tried to write a profile
> test for this, but realized that since the issue is isolated in the ajax
> call, I cannot replicate it in that kind of test, as perf tests don't
> run ajax.  Hopefully this is enough information to go on.  Jan or Tomas,
> if either of you guys have time to track this down, that would be really
> good, as this _has_ to be fixed (anyone else with time, feel free to
> jump in instead).  I'll check in if anyone has any insight on this when
> I get back Thursday.  Thanks,
>
> -j
>

Hi,
this problem is related to condormatic util. Pool calls method 
"condormatic_instances_sync_states" when listing instances. And in 
condormatic_instances_sync_states method is slow parsing of condor XML 
output with REXML.

Patch "Replaced REXML by Nokogiri in condormatic" replaces REXML with 
Nokogiri for parsing, here are some results:

Pool list before patch (REXML):
time in condormatic_instances_sync_states 3.1s
rendered 4657ms
overall request time (firebug) 5.2s

Pool list with Nokogiri:
time in condormatic_instances_sync_states 0.7s
rendered 2265ms
overall request (firebug) 2.8s

I think it's possible to improve performance also by setting state of 
instances only once, but this perf. improve will be much smaller.

Jan
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel

Reply via email to