You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by Ilyushonak Barys <Ba...@troika.ru> on 2011/06/27 12:25:19 UTC

perftest performance and qpid messaging api

Hi, folks.

I have done some tests in my environment and faced with very strange behavior.
Perftest works in some times faster (average 5), than my custom code (c++ client). I'm speaking about relative value in constant environment.
The main question is: is any difference in performance between client api and messaging api?
The perftest use client api (which deprecated after v0.6), I use messaging api.

I have goal to increase subscriber performance, so I tried varied things, like

1)      http://qpid.apache.org/books/0.10/Programming-In-Apache-Qpid/html/ch02s06.html

2)      non-persistence messages

3)      reliability: unreliable/at-least-once

4)      using or not client acknowledge
It allowed me to increase performance in 2 times. But my client still works in 5 times slower, than perftest.

Environment:
I have clustered 0.8 c++ broker (virtual), and one workstation as a client machine.
I use c++ client, constant message size (64 bytes) in both tests.

Please, advice.

Best Regards,
Barys Ilyushonak

_______________________________________________________

The information contained in this message may be privileged and conf idential and protected from disclosure. If you are not the original intended recipient, you are hereby notified that any review, retransmission, dissemination, or other use of, or taking of any action in reliance upon, this information is prohibited. If you have received this communication in error, please notify the sender immediately by replying to this message and delete it from your computer. Thank you for your cooperation. Troika Dialog, Russia. 
If you need assistance please contact our Contact Center  (+7495) 258 0500 or go to www.troika.ru/eng/Contacts/system.wbp  


RE: perftest performance and qpid messaging api

Posted by Ilyushonak Barys <Ba...@troika.ru>.
Gordon, Alan,

Thank you very much for the answers. It gave me thoughts to go further.

Regards,
Boris
-----Original Message-----
From: Gordon Sim [mailto:gsim@redhat.com] 
Sent: Tuesday, June 28, 2011 9:47 AM
To: users@qpid.apache.org
Subject: Re: perftest performance and qpid messaging api

On 06/27/2011 12:03 PM, Alan Conway wrote:
> On 06/27/2011 06:25 AM, Ilyushonak Barys wrote:
>> Hi, folks.
>>
>> I have done some tests in my environment and faced with very strange 
>> behavior.
>> Perftest works in some times faster (average 5), than my custom code 
>> (c++ client). I'm speaking about relative value in constant environment.
>> The main question is: is any difference in performance between client 
>> api and messaging api?
>> The perftest use client api (which deprecated after v0.6), I use 
>> messaging api.
>>
>> I have goal to increase subscriber performance, so I tried varied 
>> things, like
>>
>> 1)
>> http://qpid.apache.org/books/0.10/Programming-In-Apache-Qpid/html/ch0
>> 2s06.html
>>
>>
>> 2) non-persistence messages
>>
>> 3) reliability: unreliable/at-least-once
>>
>> 4) using or not client acknowledge
>> It allowed me to increase performance in 2 times. But my client still 
>> works in 5 times slower, than perftest.
>>
>> Environment:
>> I have clustered 0.8 c++ broker (virtual), and one workstation as a 
>> client machine.
>> I use c++ client, constant message size (64 bytes) in both tests.
>
> I did some benchmarks a while back and got similar performance for 
> both APIs. The new API has some slower settings by default but once 
> all the parameters are tweaked it's about the same.
>
> I was comparing:
>
> qpid_cpp_benchmark --receive-option link:{reliability:unreliable} 
> --repeat 5 --messages 100000 --no-timestamp
>
> perftest --count 100000 -s
>
> qpid_cpp_benchmark is a python script that runs C++ clients qpid-send 
> and qpid-receive. You can find them all in Qpid SVN:
> https://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/src/tests/

One issue is that the number of headers in a message affects the performance. This appears to be the case for both the old and new (qpid::client and qpid::messaging) APIs and appears to be related to memory allocation while decoding qpid::framing::FieldTable.

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org


_______________________________________________________

The information contained in this message may be privileged and conf idential and protected from disclosure. If you are not the original intended recipient, you are hereby notified that any review, retransmission, dissemination, or other use of, or taking of any action in reliance upon, this information is prohibited. If you have received this communication in error, please notify the sender immediately by replying to this message and delete it from your computer. Thank you for your cooperation. Troika Dialog, Russia. 
If you need assistance please contact our Contact Center  (+7495) 258 0500 or go to www.troika.ru/eng/Contacts/system.wbp  



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org


Re: perftest performance and qpid messaging api

Posted by Gordon Sim <gs...@redhat.com>.
On 06/27/2011 12:03 PM, Alan Conway wrote:
> On 06/27/2011 06:25 AM, Ilyushonak Barys wrote:
>> Hi, folks.
>>
>> I have done some tests in my environment and faced with very strange
>> behavior.
>> Perftest works in some times faster (average 5), than my custom code
>> (c++ client). I'm speaking about relative value in constant environment.
>> The main question is: is any difference in performance between client
>> api and messaging api?
>> The perftest use client api (which deprecated after v0.6), I use
>> messaging api.
>>
>> I have goal to increase subscriber performance, so I tried varied
>> things, like
>>
>> 1)
>> http://qpid.apache.org/books/0.10/Programming-In-Apache-Qpid/html/ch02s06.html
>>
>>
>> 2) non-persistence messages
>>
>> 3) reliability: unreliable/at-least-once
>>
>> 4) using or not client acknowledge
>> It allowed me to increase performance in 2 times. But my client still
>> works in 5 times slower, than perftest.
>>
>> Environment:
>> I have clustered 0.8 c++ broker (virtual), and one workstation as a
>> client machine.
>> I use c++ client, constant message size (64 bytes) in both tests.
>
> I did some benchmarks a while back and got similar performance for both
> APIs. The new API has some slower settings by default but once all the
> parameters are tweaked it's about the same.
>
> I was comparing:
>
> qpid_cpp_benchmark --receive-option link:{reliability:unreliable}
> --repeat 5 --messages 100000 --no-timestamp
>
> perftest --count 100000 -s
>
> qpid_cpp_benchmark is a python script that runs C++ clients qpid-send
> and qpid-receive. You can find them all in Qpid SVN:
> https://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/src/tests/

One issue is that the number of headers in a message affects the 
performance. This appears to be the case for both the old and new 
(qpid::client and qpid::messaging) APIs and appears to be related to 
memory allocation while decoding qpid::framing::FieldTable.

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org


Re: perftest performance and qpid messaging api

Posted by Alan Conway <ac...@redhat.com>.
On 06/27/2011 06:25 AM, Ilyushonak Barys wrote:
> Hi, folks.
>
> I have done some tests in my environment and faced with very strange behavior.
> Perftest works in some times faster (average 5), than my custom code (c++ client). I'm speaking about relative value in constant environment.
> The main question is: is any difference in performance between client api and messaging api?
> The perftest use client api (which deprecated after v0.6), I use messaging api.
>
> I have goal to increase subscriber performance, so I tried varied things, like
>
> 1)      http://qpid.apache.org/books/0.10/Programming-In-Apache-Qpid/html/ch02s06.html
>
> 2)      non-persistence messages
>
> 3)      reliability: unreliable/at-least-once
>
> 4)      using or not client acknowledge
> It allowed me to increase performance in 2 times. But my client still works in 5 times slower, than perftest.
>
> Environment:
> I have clustered 0.8 c++ broker (virtual), and one workstation as a client machine.
> I use c++ client, constant message size (64 bytes) in both tests.

I did some benchmarks a while back and got similar performance for both APIs. 
The new API has some slower settings by default but once all the parameters are 
tweaked it's about the same.

I was comparing:

qpid_cpp_benchmark --receive-option link:{reliability:unreliable} --repeat 5 
--messages 100000 --no-timestamp

perftest --count 100000 -s

qpid_cpp_benchmark is a python script that runs C++ clients qpid-send and 
qpid-receive. You can find them all in Qpid SVN: 
https://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/src/tests/

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org