[Openstack] [SWIFT] Proxies Sizing for 90.000 / 200.000 RPM

Sina Sadeghi sina at aptira.com
Wed Oct 24 23:19:56 UTC 2012


The guys from Zmanda presented some evaluation of swift at the summit, 
might be useful here

http://www.zmanda.com/blogs/?p=947 they've written a blog but it doesn't 
have all the findings which they presented at the summit.

Maybe Chander would be willing to share? I've CC'd him in.

--
*Sina Sadeghi*
Lead Cloud Engineer

*Aptira Pty Ltd*
1800 APTIRA
aptira.com <http://www.aptira.com>
Follow @aptira <https://twitter.com/#/aptira>

On 25/10/12 08:03, Alejandro Comisario wrote:
> Wow nice, i think we have a lot to look at guys.
> I'll get back to you as soon as we have more metrics to share 
> regarding this matter.
> Basically, we are going to try to add more proxies, since indeed, the 
> requests are to small (20K not 20MB)
>
> Thanks guys !
> -----------
> Alejandrito
>
> On Wed, Oct 24, 2012 at 5:49 PM, John Dickinson <me at not.mn 
> <mailto:me at not.mn>> wrote:
>
>     Smaller requests, of course, will have a higher percentage
>     overhead for each request, so you will need more proxies for many
>     small requests than the same number of larger requests (all other
>     factors being equal).
>
>     If most of the requests are reads, then you probably won't have to
>     worry about keystone keeping up.
>
>     You may want to look at tuning the object server config variable
>     "keep_cache_size". This variable is the maximum size of an object
>     to keep in the buffer cache for publicly requested objects. So if
>     you tuned it to be 20K (20971520)--by default it is 5424880--you
>     should be able to serve most of your requests without needing to
>     do a disk seek, assuming you have enough RAM on the object
>     servers. Note that background processes on the object servers end
>     up using the cache for storing the filesystem inodes, so lots of
>     RAM will be a very good thing in your use case. Of course, the
>     usefulness of this caching is dependent on how frequently a given
>     object is accessed. You may consider an external caching system
>     (anything from varnish or squid to a CDN provider) if the direct
>     public access becomes too expensive.
>
>     One other factor to consider is that since swift stores 3 replicas
>     of the data, there are 3 servers that can serve a request for a
>     given object, regardless of how many storage nodes you have. This
>     means that if all 3500 req/sec are to the same object, only 3
>     object servers are handling that. However, if the 3500 req/sec are
>     spread over many objects, the full cluster will be utilized. Some
>     of us have talked about how to improve swift's performance for
>     concurrent access to a single object, but those improvements have
>     not been coded yet.
>
>     --John
>
>
>
>     On Oct 24, 2012, at 1:20 PM, Alejandro Comisario
>     <alejandro.comisario at mercadolibre.com
>     <mailto:alejandro.comisario at mercadolibre.com>> wrote:
>
>     > Thanks Josh, and Thanks John.
>     > I know it was an exciting Summit! Congrats to everyone !
>     >
>     > John, let me give you extra data and something that i've already
>     said, that might me wrong.
>     >
>     > First, the request size that will compose the 90.000RPM -
>     200.000 RPM will be from 90% 20K objects, and 10% 150/200K objects.
>     > Second, all the "GET" requests, are going to be "public",
>     configured through ACL, so, if the GET requests are public (so, no
>     X-Auth-Token is passed) why should i be worried about the keystone
>     middleware ?
>     >
>     > Just to clarify, because i really want to understand what my
>     real metrics are so i can know where to tune in case i need to.
>     > Thanks !
>     >
>     > ---
>     > Alejandrito
>     >
>     >
>     > On Wed, Oct 24, 2012 at 3:28 PM, John Dickinson <me at not.mn
>     <mailto:me at not.mn>> wrote:
>     > Sorry for the delay. You've got an interesting problem, and we
>     were all quite busy last week with the summit.
>     >
>     > First, the standard caveat: Your performance is going to be
>     highly dependent on your particular workload and your particular
>     hardware deployment. 3500 req/sec in two different deployments may
>     be very different based on the size of the requests, the spread of
>     the data requested, and the type of requests. Your experience may
>     vary, etc, etc.
>     >
>     > However, for an attempt to answer your question...
>     >
>     > 6 proxies for 3500 req/sec doesn't sound unreasonable. It's in
>     line with other numbers I've seen from people and what I've seen
>     from other large scale deployments. You are basically looking at
>     about 600 req/sec/proxy.
>     >
>     > My first concern is not the swift workload, but how keystone
>     handles the authentication of the tokens. A quick glance at the
>     keystone source seems to indicate that keystone's auth_token
>     middleware is using a standard memcached module that may not play
>     well with concurrent connections in eventlet. Specifically,
>     sockets cannot be reused concurrently by different greenthreads.
>     You may find that the token validation in the auth_token
>     middleware fails under any sort of load. This would need to be
>     verified by your testing or an examination of the memcache module
>     being used. An alternative would be to look at the way swift
>     implements it's memcache connections in an eventlet-friendly way
>     (see swift/common/memcache.py:_get_conns() in the swift codebase).
>     >
>     > --John
>     >
>     >
>     >
>     > On Oct 11, 2012, at 4:28 PM, Alejandro Comisario
>     <alejandro.comisario at mercadolibre.com
>     <mailto:alejandro.comisario at mercadolibre.com>> wrote:
>     >
>     > > Hi Stackers !
>     > > This is the thing, today we have a 24 datanodes (3 copies,
>     90TB usables) each datanode has 2 intel hexacores CPU with HT and
>     96GB of RAM, and 6 Proxies with the same hardware configuration,
>     using swift 1.4.8 with keystone.
>     > > Regarding the networking, each proxy / datanodes has a dual
>     1Gb nic, bonded in LACP mode 4, each of the proxies are behind an
>     F5 BigIP Load Balancer ( so, no worries over there ).
>     > >
>     > > Today, we are receiving 5000 RPM ( Requests per Minute ) with
>     660 RPM per Proxies, i know its low, but now ... with a new
>     product migration, soon ( really soon ) we are expecting to
>     receive about a total of 90.000 RPM average ( 1500 req / s ) with
>     weekly peaks of 200.000 RPM ( 3500 req / s ) to the swift api,
>     witch will be 90% public gets ( no keystone auth ) and 10%
>     authorized PUTS (keystone in the middle, worth to know that we
>     have a 10 keystone vms pool, connected to a 5 nodes galera mysql
>     cluster, so no worries there either )
>     > >
>     > > So, 3500 req/s divided by 6 proxy nodes doesnt sounds too
>     much, but well, its a number that we cant ignore.
>     > > What do you think about this numbers? does this 6 proxies
>     sounds good, or we should double or triple the proxies ? Does
>     anyone has this size of requests and can share their configs ?
>     > >
>     > > Thanks a lot, hoping to ear from you guys !
>     > >
>     > > -----
>     > > alejandrito
>     > > _______________________________________________
>     > > Mailing list: https://launchpad.net/~openstack
>     <https://launchpad.net/%7Eopenstack>
>     > > Post to     : openstack at lists.launchpad.net
>     <mailto:openstack at lists.launchpad.net>
>     > > Unsubscribe : https://launchpad.net/~openstack
>     <https://launchpad.net/%7Eopenstack>
>     > > More help   : https://help.launchpad.net/ListHelp
>     >
>     >
>
>
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~openstack
> Post to     : openstack at lists.launchpad.net
> Unsubscribe : https://launchpad.net/~openstack
> More help   : https://help.launchpad.net/ListHelp

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20121025/317c4698/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: logo.jpg
Type: image/jpeg
Size: 15934 bytes
Desc: not available
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20121025/317c4698/attachment.jpg>


More information about the Openstack mailing list