[Openstack] Swift performance for very small objects

Paulo Ricardo Motta Gomes pauloricardomg at gmail.com
Sun May 20 01:34:25 UTC 2012


Hello,

I'm doing some experiments in a Swift cluster testbed of 9 nodes/devices
and 3 zones (3 nodes on each zone).

In one of my tests, I noticed that PUTs of very small objects are extremely
inefficient.

- 5000 PUTs of objects with an average size of 40K - total of 195MB - took
67s (avg time per request: 0.0135s)
- 5000 PUTS of objects with an average size of 190 bytes - total of 930KB -
took 60s (avg time per request: 0.0123s)

I plotted object size vs request time and found that there is significant
difference in request times only after 200KB. When objects are smaller than
this PUT requests have a minimum execution time of 0.01s, no matter the
object size.

I suppose swift is not optimized for such small objects, but I wonder what
is the main cause for this, if it's the HTTP overhead or disk writing. I
checked the log of the object servers and requests are taking an average of
0.006s, whether objects are 40K or 190 bytes, which indicate part of the
bottleneck could be at the disk. Curently I'm using a loopback device for
storage.

I thought that maybe this could be improved a bit if the proxy server
maintained persistent connections to the storage nodes instead of opening a
new one for each request?

It would be great if you could share your thoughts on this and how could
the performance of this special case be improved.

Cheers,

Paulo

-- 
European Master in Distributed Computing***
Royal Institute of Technology - KTH
*
*Instituto Superior Técnico - IST*
*http://paulormg.com*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20120520/a2c37912/attachment.html>


More information about the Openstack mailing list