[openstack-dev] [oslo.messaging] Performance testing. Initial steps.

Denis Makogon dmakogon at mirantis.com
Wed Jan 28 11:40:00 UTC 2015


On Wed, Jan 28, 2015 at 11:39 AM, Flavio Percoco <flavio at redhat.com> wrote:

> On 28/01/15 10:23 +0200, Denis Makogon wrote:
>
>>
>>
>> On Tue, Jan 27, 2015 at 10:26 PM, Gordon Sim <gsim at redhat.com> wrote:
>>
>>    On 01/27/2015 06:31 PM, Doug Hellmann wrote:
>>          On Tue, Jan 27, 2015, at 12:28 PM, Denis Makogon wrote:
>>                  I'd like to build tool that would be able to profile
>> messaging over
>>            various deployments. This "tool" would give me an ability to
>>            compare
>>            results of performance testing produced by native tools and
>>            oslo.messaging-based tool, eventually it would lead us into
>> digging
>>            into
>>            code and trying to figure out where "bad things" are happening
>>            (that's
>>            the
>>            actual place where we would need to profile messaging code).
>>            Correct me
>>            if
>>            i'm wrong.
>>
>>
>>        It would be interesting to have recommendations for deployment of
>>        rabbit
>>        or qpid based on performance testing with oslo.messaging. It would
>> also
>>        be interesting to have recommendations for changes to the
>>        implementation
>>        of oslo.messaging based on performance testing. I'm not sure you
>> want
>>        to
>>        do full-stack testing for the latter, though.
>>
>>        Either way, I think you would be able to start the testing without
>> any
>>        changes in oslo.messaging.
>>
>>    I agree. I think the first step is to define what to measure and then
>>    construct an application using olso.messaging that allows the data of
>>    interest to be captured using different drivers and indeed different
>>    configurations of a given driver.
>>
>>    I wrote a very simple test application to test one aspect that I felt
>> was
>>    important, namely the scalability of the RPC mechanism as you increase
>> the
>>    number of clients and servers involved. The code I used is https://
>>    github.com/grs/ombt, its probably stale at the moment, I only link to
>> it as
>>    an example of approach.
>>
>>    Using that test code I was then able to compare performance in this one
>>    aspect across drivers (the 'rabbit', 'qpid' and new amqp 1.0 based
>> drivers
>>    _ I wanted to try zmq, but couldn't figure out how to get it working
>> at the
>>    time), and for different deployment options using a given driver (amqp
>> 1.0
>>    using qpidd or qpid dispatch router in either standalone or with
>> multiple
>>    connected routers).
>>
>>    There are of course several other aspects that I think would be
>> important
>>    to explore: notifications, more specific variations in the RPC
>> 'topology'
>>    i.e. number of clients on given server number of servers in single
>> group
>>    etc, and a better tool (or set of tools) would allow all of these to be
>>    explored.
>>
>>    From my experimentation, I believe the biggest differences in
>> scalability
>>    are going to come not from optimising the code in oslo.messaging so
>> much as
>>    choosing different patterns for communication. Those choices may be
>>    constrained by other aspects as well of course, notably approach to
>>    reliability.
>>
>>
>>
>>
>> After couple internal discussions and hours of investigations, i think
>> i've
>> foung the most applicabale solution
>> that will accomplish performance testing approach and will eventually be
>> evaluated as messaging drivers
>> configuration and AMQP service deployment recommendataion.
>>
>> Solution that i've been talking about is already pretty well-known across
>> OpenStack components - Rally and its scenarios.
>> Why it would be the best option? Rally scenarios would not touch messaging
>>  core part. Scenarios are gate-able.
>> Even if we're talking about internal testing, scenarios are very useful
>> in this
>> case,
>> since they are something that can be tuned/configured taking into account
>> environment needs.
>>
>> Doug, Gordon, what do you think about bringing scenarios into messaging?
>>
>
> I personally wouldn't mind having them but I'd like us to first
> discuss what kind of scenarios we want to test.
>
> I'm assuming these scenarios would be pure oslo.messaging scenarios
> and they won't require any of the openstack services. Therefore, I
> guess these scenarios would test things like performance with many

consumers, performance with several (a)synchronous calls, etc. What
> performance means in this context will have to be discussed as well.
>

Correct, oslo.messaging scenarios would expect to have only AMQP service
and nothing else.
Yes, that's what i've been thinking about. Also, i'd like to share doc that
i've found, see [1].
As i can see it would be more than useful to enable next scenarios:

   - Single multi-thread publisher (rpc client) against single multi-thread
   consumer
      - using RPC cast/call methods try to measure time between request and
      response.
   - Multiple multi-thread publishers against single multi-thread consumer
      - using RPC cast/call methods try to measure time between requests
      and responses to multiple publishers.
   - Multiple multi-thread publishers against multiple multi-thread
   consumers


[1] http://agocs.org/blog/2014/08/19/rabbitmq-best-practices-in-go/



> In addition to the above, it'd be really interesting if we could have
> tests for things like reconnects delays, which I think is doable with
> Rally. Am I right?
>
>
That's might be the case. But i'd ask Rally team first.


> Cheers,
> Flavio
>
>
>
>>
>>    ____________________________________________________________
>> ______________
>>    OpenStack Development Mailing List (not for usage questions)
>>    Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:
>> unsubscribe
>>    http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>>
>>
>> Kind regards,
>> Denis M.
>>
>>
>  ____________________________________________________________
>> ______________
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:
>> unsubscribe
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>
>
> --
> @flaper87
> Flavio Percoco
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
Kind regards,
Denis M.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20150128/0243cc91/attachment.html>


More information about the OpenStack-dev mailing list