[ovirt-devel] ovirt-engine-sdk-python too slow

Juan Hernández jhernand at redhat.com
Tue Nov 24 13:15:13 UTC 2015


On 11/24/2015 01:40 PM, John Hunter wrote:
> Hi,
> 
> On Tue, Nov 24, 2015 at 5:18 PM, Oved Ourfali <oourfali at redhat.com
> <mailto:oourfali at redhat.com>> wrote:
> 
>     Hi
> 
>     I discussed it with Juan (cc-ed).
> 
>     There used to be a bug in the JDBC authenticion extension that
>     artificially delayed RESTAPI responses by 5 seconds:
> 
>       brute force prevention login delay should not be applied to successful
>     login requests
>       https://bugzilla.redhat.com/1255814
> 
>     That matches the description of the issue, but in theory it has been
>     fixed. I would suggest him to check that he is using the right version
>     of the extension.
> 
> I did not use the extension ovirt-engine-extension-aaa-jdbc, and I don't 
> think this bug matches my problem, because even there is only one line
> in the python script, it still cost like 3 seconds, I don't think this is a
> reasonable time as when I import other package, it cost almost no time.
> 
> Can you explain why this import line costs so much time?
> 

If you are using 3.6 then you are using ovirt-engine-extension-aaa-jdbc,
as it is enabled by default, but looks like it isn't related to your
problem.

That line takes a long time to execute because it has to process two
large Python modules: the "params" module that contains a class per each
type used by the API (393 classes) and the "brokers" module that
contains a class per each resource used by the API (358 classes). That
makes a total of 751 classes. In my environment it takes 0.9 seconds,
approx. You may want to use the python profile in your environment and
share the results:

$ cat > profile.py <<.
import cProfile
cProfile.run("from ovirtsdk.api import API")
.

$ python profile.py

I won't be surprised to see this taking those 3 seconds in a slower
environment.

But even if this takes those 3 seconds it shouldn't be a big problem,
because you shouldn't be running that "from ... import ..." line
frequently. Your program should do this once only, when it starts.

> 
>     In addition we also know that retrieving large lists of objects with the
>     SDK is slow:
> 
>        [RFE][performance] - generate large scale list running to slow.
>        https://bugzilla.redhat.com/1221238
> 
>     We don't have a solution for that yet.
> 
>     CC-ing Juan in case you have additional questions.
> 
> 
>     On Mon, Nov 23, 2015 at 11:27 AM, John Hunter <zhjwpku at gmail.com
>     <mailto:zhjwpku at gmail.com>> wrote:
> 
>         Hi guys,
> 
>         I am using the ovirt-engine-sdk-python to communicate with the
>         ovirt-engine,
>         I am ok to list the vms but the processing time is too long,
>         like 4.5 seconds,
>         and this line:
>             from ovirtsdk.api import API
>         take almost 3 seconds.
> 
>         This seems a little bit longer than I expected it to be, so I am
>         asking is there
>         a quicker way to communicate with the ovirt-engine? 
> 

-- 
Dirección Comercial: C/Jose Bardasano Baos, 9, Edif. Gorbea 3, planta
3ºD, 28016 Madrid, Spain
Inscrita en el Reg. Mercantil de Madrid – C.I.F. B82657941 - Red Hat S.L.



More information about the Devel mailing list