[ovirt-users] Delay difference between queries (Python vs REST)

Juan Hernández jhernand at redhat.com
Wed Jan 18 08:43:53 UTC 2017


On 01/17/2017 08:42 PM, Yaniv Kaul wrote:
> 
> 
> On Tue, Jan 17, 2017 at 6:03 PM, Juan Hernández <jhernand at redhat.com
> <mailto:jhernand at redhat.com>> wrote:
> 
>     On 01/17/2017 04:59 PM, Nicolas Ecarnot wrote:
>     > Le 17/01/2017 à 16:26, Juan Hernández a écrit :
>     >> On 01/17/2017 03:56 PM, Nicolas Ecarnot wrote:
>     >>> Hello,
>     >>>
>     >>> On a 3.6.5 DC, I'm trying to figure out how many VMs there are,
>     using
>     >>> two methods :
>     >>>
>     >>> _*Python SDK :*_
>     >>>
>     >>> *from ovirtsdk.xml import params
>     >>> from ovirtsdk.api import API
>     >>> api = API(url='https://engine.fqdn/ovirt-engine/api
>     <https://engine.fqdn/ovirt-engine/api>',
>     >>> username='admin at internal', password='xxx', insecure=True)
>     >>> print len(api.vms.list())*
>     >>>
>     >>> time ./getMvm.py
>     >>> 62
>     >>>
>     >>> real    0m23.016s
>     >>> user    0m22.288s
>     >>> sys    0m0.054s
>     >>>
>     >>>
>     >>> _*REST :*_
>     >>>
>     >>> *time curl -H "Version: 3" -H "Prefer: persistent-auth" -H "Filter:
>     >>> false" -H "Accept: application/xml" -H "Content-Type:
>     application/xml"
>     >>> -k -u 'admin at internal:xxx'
>     https://***engine.fqdn*/ovirt-engine/api/vms*
>     >>>
>     >>> (Then grep or anything that would get the values from the xml
>     returned.)
>     >>>
>     >>> real    0m0.383s
>     >>> user    0m0.036s
>     >>> sys    0m0.038s
>     >>>
>     >>>
>     >>> I am a beginner in both methods, but I would prefer play with
>     Python.
>     >>> I'm very surprised to have to wait more than 20 seconds to get an
>     >>> answer.
>     >>> Looking at the engine log, I see that the authentication part is
>     >>> finished after say 3 seconds, then 20 seconds with absolutely no
>     error
>     >>> message, no CPU load, no RAM burst, no nothing.
>     >>> On the SPM, exactly triple null nothing nada niet void is obviously
>     >>> explaining such a delay.
>     >>>
>     >>> I'm wondering if this super hyper sluggishness is somewhat
>     related to
>     >>> the GUI global slowness I'm experiencing like other users since
>     we left
>     >>> 3.2.x, and I would love that some oVirt ninja uses the
>     comparison above
>     >>> to tell what parts in oVirt is used or not that could explain such a
>     >>> difference (database, access to SPM, LVM, network access,
>     whatever...)
>     >>>
>     >>> --
>     >>> Nicolas ECARNOT
>     >>>
>     >>
>     >> The performance problem is inside version 3 of the Python SDK.
>     That is
>     >> one of the reasons that we had to do a new version of the Python
>     SDK for
>     >> version 4 of the engine. If you are using version 4 of the engine
>     then
>     >> you can use version 4 of the SDK:
>     >>
>     >>   https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk
>     <https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk>
>     >>
>     >>
>     https://github.com/oVirt/ovirt-engine-sdk/blob/master/sdk/examples/list_vms.py
>     <https://github.com/oVirt/ovirt-engine-sdk/blob/master/sdk/examples/list_vms.py>
>     >>
>     >>
>     >> It should be much faster. Would be nice if you can repeat your
>     test and
>     >> report the results.
>     >>
>     >
>     > Hello Juan,
>     >
>     > Indeed, you were right. I tried the same from a recent server with a
>     > recent SDK, and I let you have a look :
>     >
>     > # rpm -q python-ovirt-engine-sdk4
>     > python-ovirt-engine-sdk4-4.0.1-1.el7.centos.x86_64
>     >
>     > # time ./getMvm.py
>     > 62
>     >
>     > real    0m1.004s
>     > user    0m0.234s
>     > sys    0m0.031s
>     >
>     > And repeating the same test gives a very decent average, so thank you.
>     >
> 
>     Twenty times faster, approx, good to know. Thanks. By the way, if you
>     want even better performance, then make sure to disable debug and enable
>     compression:
> 
>       connection = sdk.Connection(
>         ...
>         debug=False,
>         compress=True,
>       )
> 
> 
> Shouldn't it be the default?
> Y.
>  

Debug is disabled by default, but in is enabled in almost all the
examples. As I suggested an example I also suggest to makes sure to
disable it.

Compression is enabled by default in version 4.1 of the SDK, which isn't
released yet. In version 4.0 it needs to be enabled explicitly.


More information about the Users mailing list