[Openstack] [Swift] Optimizing single node Swift instance

Shrinand Javadekar shrinand at maginatics.com
Mon Mar 3 18:36:08 UTC 2014


One of the options that a colleague of mine came up with is related to
the on disk directory structure of the objects. I believe Swift hashes
every object, uses the trailing N bytes of the hash itself to name the
directory into which this object is put. Is this configurable in any
way? For e.g. can I try and put many objects into a single directory
by making N = 1. This will reduce the amount of work done when a
single object is written.

What do you think?
-Shri

On Sat, Mar 1, 2014 at 2:25 PM, Shrinand Javadekar
<shrinand at maginatics.com> wrote:
> Hi,
>
> I have single node Swift instance running in a VM. It has: 4 cores, 16
> GB memory and 300GB SSD disk
>
> I want to get the best possible throughput from this Swift instance
> when, say 100 clients are writing data concurrently. Are there any
> recommendations to achieve this?
>
> So far, I've tried the following:
>
> 1. I tweaked the # of workers threads in the config files and it seems
> that I get best results when I have:
>
> # grep workers *.conf
> account-server.conf:workers = 16
> container-server.conf:workers = 16
> object-server.conf:workers = 64
> proxy-server.conf:workers = 64
>
> 2. I am fine with not using SSL.
> 3. Sharding data across multiple containers also gives me better results.
>
> I think I also observed better throughput with larger objects, but the
> object size I need to work with cannot be changed. I have to 64K
> objects.
>
> With these options, the best I got was ~20MB/s, whereas a simple dd
> shows that the disk is capable of ~128MB/s (1Gbps).
>
> Are there other options that I can tweak for getting better throughput?
>
> Thanks in advance.
> -Shri




More information about the Openstack mailing list