[openstack-dev] [oslo][messaging] Further improvements and refactoring

Alexei Kornienko alexei.kornienko at gmail.com
Thu Jun 26 14:08:29 UTC 2014


Hello,

Returning to performance issues of oslo.messaging.
I've found 2 biggest issue in existing implementation of rabbit (kombu) 
driver:

1) For almost every message sent/received a new object of 
Consumer/Publisher class is created. And each object of this class tries 
to declare it's queue even if it's already declared.
https://github.com/openstack/oslo.messaging/blob/master/oslo/messaging/_drivers/impl_rabbit.py#L159
This causes a huge slowdown.

2) with issue #1 is fixed (I've applied a small hack to fix it in my 
repo) the next big issue araise. For every rpc message received a reply 
is sent when processing is done (it seems that reply is sent even for 
"cast" calls which it really strange to me). Reply sent is using 
connection pool to "speed up" replies. Due to bad implementation of 
custom connection pool for every message sent underlying connection 
channel is closed and reopened:
https://github.com/openstack/oslo.messaging/blob/master/oslo/messaging/_drivers/impl_rabbit.py#L689

Cause of this major issues oslo.messaging performance is at least 10 
times slower than it could be.

My opinion is that there is no simple and elegant fix for this issues in 
current implementation of oslo.messaging (most because of bad 
architecture of the library and processing flow). My proposal is that we 
should start working on new major release of messaging library with 
architectural issues fixed. This will allow us to avoid mentioned issues 
and provide much more performance and flexibility for end users.
Main goal that we should achieve is separate rpc code from messaging 
code this will allow us to implement both parts in much simpler and 
cleaner way and in the same time it would be much faster.

Please share your thoughts on this topic.

Regards,
Alexei Kornienko

On 06/16/2014 02:47 PM, Gordon Sim wrote:
> On 06/13/2014 02:06 PM, Ihar Hrachyshka wrote:
>> On 10/06/14 15:40, Alexei Kornienko wrote:
>>> On 06/10/2014 03:59 PM, Gordon Sim wrote:
> >>>
>>>> I think there could be a lot of work required to significantly
>>>> improve that driver, and I wonder if that would be better spent
>>>> on e.g. the AMQP 1.0 driver which I believe will perform much
>>>> better and will offer more choice in deployment.
> >>
>>> I agree with you on this. However I'm not sure that we can do such
>>> a decision. If we focus on amqp driver only we should mention it
>>> explicitly and deprecate qpid driver completely. There is no point
>>> in keeping driver that is not really functional.
>>
>> The driver is functional. It may be not that efficient as
>> alternatives, but that's not a valid reason to deprecate it.
>
> The question in my view is what the plan is for ongoing development.
>
> Will the driver get better over time, or is it likely to remain as is 
> at best (or even deteriorate)?
>
> Choice is good, but every choice adds to the maintenance burden, in 
> testing against regressions if nothing else.
>
> I think an explicit decision about the future is beneficial, whatever 
> the decision may be.
>
>
>
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev




More information about the OpenStack-dev mailing list