<div dir="ltr">Sean, <div><br></div><div>Nice work on this. So now it's clear that starting time of libs makes sense. </div><div><br></div><div>One way to improve this is to use <a href="https://github.com/boris-42/profimp" target="_blank">https://github.com/boris-42/profimp</a>  that allows to trace any python import </div><div>and not to import all modules when they are not required.</div><div><br></div><div>Btw I already saw few patches that are improving perf: <br></div><div><br></div><div>  <a href="https://review.openstack.org/#/c/170851/">https://review.openstack.org/#/c/170851/</a><br></div><div><br></div><div>  <a href="https://review.openstack.org/#/c/164066/">https://review.openstack.org/#/c/164066/</a></div><div><br></div><div><br></div><div><br></div><div>Best regards,</div><div>Boris Pavlovic </div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Apr 13, 2015 at 2:15 PM, Sean Dague <span dir="ltr"><<a href="mailto:sean@dague.net" target="_blank">sean@dague.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">While I was working on the grenade refactor I was considering using<br>
openstack client for some resource create / testing. Doing so made me<br>
realize that osc is sluggish. From what I can tell due to the way it<br>
loads the world, there is a minimum 1.5s overhead on every command<br>
execution. For instance, "openstack server list" takes a solid extra<br>
second over "nova list" in my environment.<br>
<br>
I wrote a little tool to figure out how much time we're spending in<br>
openstack client - <a href="https://review.openstack.org/#/c/172713/" target="_blank">https://review.openstack.org/#/c/172713/</a><br>
<br>
On a randomly selected dsvm-full run from master it's about 4.5 minutes.<br>
Now, that being side, there are a bunch of REST calls it's making, so<br>
it's not all OSC's fault. However there is a lot of time lost to that<br>
reload the world issue. Especially when we are making accounts.<br>
<br>
For instance, the create accounts section of Keystone setup:<br>
<a href="https://github.com/openstack-dev/devstack/blob/master/stack.sh#L968-L1016" target="_blank">https://github.com/openstack-dev/devstack/blob/master/stack.sh#L968-L1016</a><br>
<br>
Now takes 3.5 minutes in master -<br>
<a href="http://logs.openstack.org/13/172713/1/check/check-tempest-dsvm-full/d3b0b8e/logs/devstacklog.txt.gz" target="_blank">http://logs.openstack.org/13/172713/1/check/check-tempest-dsvm-full/d3b0b8e/logs/devstacklog.txt.gz</a><br>
<br>
2015-04-12 12:37:40.997 | + echo_summary 'Starting Keystone'<br>
2015-04-12 12:41:06.833 | + echo_summary 'Configuring and starting Horizon'<br>
<br>
The same chunk in Icehouse took just over 1 minute -<br>
<a href="http://logs.openstack.org/28/165928/2/check/check-tempest-dsvm-full/f0b3e07/logs/devstacklog.txt.gz" target="_blank">http://logs.openstack.org/28/165928/2/check/check-tempest-dsvm-full/f0b3e07/logs/devstacklog.txt.gz</a><br>
<br>
2015-04-10 15:59:08.699 | + echo_summary 'Starting Keystone'<br>
2015-04-10 16:00:00.313 | + echo_summary 'Configuring and starting Horizon'<br>
<br>
In master we do create a few more accounts as well, again, it's not all<br>
OSC, however OSC is definitely adding to it.<br>
<br>
A really great comparison between OSC and Keystone commands is provided<br>
by the ec2 user creation:<br>
<br>
Icehouse:<br>
<a href="http://logs.openstack.org/28/165928/2/check/check-tempest-dsvm-full/f0b3e07/logs/devstacklog.txt.gz#_2015-04-10_16_01_07_148" target="_blank">http://logs.openstack.org/28/165928/2/check/check-tempest-dsvm-full/f0b3e07/logs/devstacklog.txt.gz#_2015-04-10_16_01_07_148</a><br>
<br>
Master:<br>
<a href="http://logs.openstack.org/13/172713/1/check/check-tempest-dsvm-full/d3b0b8e/logs/devstacklog.txt.gz#_2015-04-12_12_43_19_655" target="_blank">http://logs.openstack.org/13/172713/1/check/check-tempest-dsvm-full/d3b0b8e/logs/devstacklog.txt.gz#_2015-04-12_12_43_19_655</a><br>
<br>
The keystone version of the commands take ~ 500ms, the OSC versions 1700ms.<br>
<br>
<br>
So, under the current model I think we're paying a pretty high strategy<br>
tax in OSC use in devstack. It's adding minutes of time in a normal run.<br>
I don't know all the internals of OSC and what can be done to make it<br>
better. But I think that as a CLI we should be as responsive as<br>
possible. < 1s seems like it should be target for at least all the<br>
keystone operations. I do think this is one of the places (like<br>
rootwrap) where load time is something to not ignore.<br>
<span class="HOEnZb"><font color="#888888"><br>
        -Sean<br>
<br>
--<br>
Sean Dague<br>
<a href="http://dague.net" target="_blank">http://dague.net</a><br>
<br>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</font></span></blockquote></div><br></div>