[Openstack] Glance performance v1 vs v2
Zhi Yan Liu
lzy.dev at gmail.com
Thu Jul 3 13:34:24 UTC 2014
Hi,
I have done some tests [0] to try to figure out what's perf problem
there. As comparing, I did it by two separated cases a) sending
request by glanceclient cli normally, just like what you did before.
b) to around the glanceclient cli to send those equal api calls to
glance server directly. The results as below [1][2].
>From the result of my test, it seems we have more overhead in v2
handling stuff on glanceclient side but service side, IMO.
In the result [1], you can see glanceclient handles v1 requests is
faster then v2 stuff, 0m6.958s .vs. 0m9.624s (user's real time), this
is close to your result, but as the comparing, from [2] you can see v2
api handling on service side is not bad than v1, even ~2 times faster,
0m6.189s .vs. 0m3.446s, and based on the api spec requirement, v2
needs send two more requests for the schema validation of image and
member resource.
It will be great if you can try this on your env as a
verification/double-check for my test result, and I'd like to know
more test details of your result if follow comparison test needed.
Next step I will look into glanceclient.
[0]
* I did it in my local dev env, it's not devstack but a setup based on
master sroucecode manually (all services).
* I prepared 1000 images for the test which under queue status. (so
there's no data)
* I didn't test v2 with registry yet.
[1]
// v1 api with glanceclient cli
$ glance --os-image-api-version 1 image-list | grep 'test-' | wc -l
1000
$ time glance --os-image-api-version 1 image-list >/dev/null
real 0m6.958s
user 0m0.812s
sys 0m0.100s
// v2 api with glanceclient cli
$ glance --os-image-api-version 2 image-list | grep 'test-' | wc -l
1000
$time glance --os-image-api-version 2 image-list >/dev/null
real 0m9.624s
user 0m6.268s
sys 0m0.080s
[2]
// v1 api with curl
$ head -5 img1000-curl-v1.sh
#!/bin/bash
curl -i -X GET -H 'X-Auth-Token: fc67d68b700747cba4dfc78a862b1064' -H
'Content-Type: application/json' -H 'User-Agent: python-glanceclient'
http://10.20.0.1:9292/v1/images/detail?sort_key=name\&sort_dir=asc\&limit=20
curl -i -X GET -H 'X-Auth-Token: fc67d68b700747cba4dfc78a862b1064' -H
'Content-Type: application/json' -H 'User-Agent: python-glanceclient'
http://10.20.0.1:9292/v1/images/detail?sort_key=name\&sort_dir=asc\&limit=20\&marker=1696392e-0d04-4a72-a23a-317405c7ef01
curl -i -X GET -H 'X-Auth-Token: fc67d68b700747cba4dfc78a862b1064' -H
'Content-Type: application/json' -H 'User-Agent: python-glanceclient'
http://10.20.0.1:9292/v1/images/detail?sort_key=name\&sort_dir=asc\&limit=20\&marker=6e1c351e-77ae-4fa6-a663-e9eb9100349a
$ ./img1000-curl-v1.sh 2>/dev/null | grep '"images"' | wc -l
51
$ time ./img1000-curl-v1.sh >/dev/null 2>&1
real 0m6.189s
user 0m0.124s
sys 0m0.108s
// v2 api with curl
$ head -10 img1000-curl-v2.sh
#!/bin/bash
curl -i -X GET -H 'X-Auth-Token: fc67d68b700747cba4dfc78a862b1064' -H
'Content-Type: application/json' -H 'User-Agent: python-glanceclient'
http://10.20.0.1:9292/v2/schemas/image
curl -i -X GET -H 'X-Auth-Token: fc67d68b700747cba4dfc78a862b1064' -H
'Content-Type: application/json' -H 'User-Agent: python-glanceclient'
http://10.20.0.1:9292/v2/schemas/member
curl -i -X GET -H 'X-Auth-Token: fc67d68b700747cba4dfc78a862b1064' -H
'Content-Type: application/json' -H 'User-Agent: python-glanceclient'
http://10.20.0.1:9292/v2/images?limit=20
curl -i -X GET -H 'X-Auth-Token: fc67d68b700747cba4dfc78a862b1064' -H
'Content-Type: application/json' -H 'User-Agent: python-glanceclient'
http://10.20.0.1:9292/v2/images?marker=8b8638a4-1419-4c90-9d99-c1d8cfae6c4f\&limit=20
curl -i -X GET -H 'X-Auth-Token: fc67d68b700747cba4dfc78a862b1064' -H
'Content-Type: application/json' -H 'User-Agent: python-glanceclient'
http://10.20.0.1:9292/v2/images?marker=4bf1dd82-bc88-4c62-90b7-117f0c0efb9e\&limit=20
curl -i -X GET -H 'X-Auth-Token: fc67d68b700747cba4dfc78a862b1064' -H
'Content-Type: application/json' -H 'User-Agent: python-glanceclient'
http://10.20.0.1:9292/v2/images?marker=4b741769-f371-45b9-ac91-69b6a02d37a5\&limit=20
curl -i -X GET -H 'X-Auth-Token: fc67d68b700747cba4dfc78a862b1064' -H
'Content-Type: application/json' -H 'User-Agent: python-glanceclient'
http://10.20.0.1:9292/v2/images?marker=35b131f4-5019-48a7-a091-af7fc7df05fc\&limit=20
curl -i -X GET -H 'X-Auth-Token: fc67d68b700747cba4dfc78a862b1064' -H
'Content-Type: application/json' -H 'User-Agent: python-glanceclient'
http://10.20.0.1:9292/v2/images?marker=c9b95dfb-def8-4ff6-825d-70ba49555b5d\&limit=20
$ ./img1000-curl-v2.sh 2>/dev/null | grep '"images"' | wc -l
51
$ time ./img1000-curl-v2.sh >/dev/null 2>&1
real 0m3.446s
user 0m0.224s
sys 0m0.132s
zhiyan
On Thu, Jun 26, 2014 at 6:39 PM, Sam Morrison <sorrison at gmail.com> wrote:
> Hi Stuart,
>
> Yeah we’re using Icehouse which has this patch included. Glad to hear it’s not just our set up and to confirm that v2 API does seem to be slower.
> I’m just worried as there is talk of deprecating v2 API but currently it doesn’t seem anywhere near ready to be a suitable replacement for v1.
>
> Hopefully as more people start to look at v2 we can iron out some of these issues.
>
> Cheers,
> Sam
>
>
>
> On 25 Jun 2014, at 10:54 pm, stuart.mclaren at hp.com wrote:
>
>> Hi Sam,
>>
>> We're just starting to look at v2.
>>
>> We did see some really slow listing behaviour, backporting
>> Ie7458044edbe1ef64871bcf5ef4996ed3cc0f957 helped a lot -- but you'll
>> probably have that change already if you're using more recent code.
>>
>> Even with that it does seem slower in some cases, eg devstack listing 1000 images:
>>
>> v1:
>> $ time ./.tox/py27/bin/glance --os-image-api-version 1 image-list > /dev/null
>> real 0m6.058s
>> user 0m1.348s
>> sys 0m0.172s
>>
>> v2, no registry:
>> $ time ./.tox/py27/bin/glance --os-image-api-version 2 image-list > /dev/null
>> real 0m15.487s
>> user 0m9.233s
>> sys 0m0.120s
>>
>> v2, with registry:
>> $ time glance --os-image-api-version 2 image-list > /tmp/out
>> real 0m21.904s
>> user 0m9.217s
>> sys 0m0.116s
>>
>>
>> -Stuart
>>
>> On Wed, 25 Jun 2014, Sam Morrison wrote:
>>
>>> We’ve recently enabled glance v2 API on our glance servers. We’ve noticed it is considerably slower than v1 to do things like glance image-list. (~4 seconds compared to ~1)
>>> Has anyone else experienced this or run any benchmarks comparing the two APIs?
>>>
>>> I should note we’re using glance registry for both v1 and v2 requests too.
>>>
>>> Also just wondering if people are actually using v2?
>>> For instance from what I can tell you can’t create an image with v2 via the client yet [1]
>>>
>>> Cheers,
>>> Sam
>>>
>>>
>>> [1] https://bugs.launchpad.net/python-glanceclient/+bug/1302351
>>> _______________________________________________
>>> Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
>>> Post to : openstack at lists.openstack.org
>>> Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
>
>
> _______________________________________________
> Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
> Post to : openstack at lists.openstack.org
> Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
More information about the Openstack
mailing list