activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Albert Strasheim (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AMQCPP-93) Performance analysis
Date Sat, 09 Jun 2007 10:19:34 GMT

    [ https://issues.apache.org/activemq/browse/AMQCPP-93?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_39242
] 

Albert Strasheim commented on AMQCPP-93:
----------------------------------------

I've done some profiling of a benchmark that simulates part of our application using Intel
VTune (great tool, and free for non-commerial use on Linux).

We're mostly doing quite a few writeLongs and writeInts on a BytesMessage. The data ends up
in the 1 KB to 2 KB range. Then we send the messages to a topic. For the benchmark I profiled,
we didn't have any consumers, so the broker probably just discards the message. Throughout
the test runs, the broker was never very busy.

When using Stomp, the top functions were:

ByteArrayOutputStream::write(unsigned char) 26.23%
DataOutputStream::write(unsigned char) 20.32%
[our function that does some mangling of the data before it is written to the message] 11.93%
[everything else] 41.61%

With Openwire the picture was more or less the same:

ByteArrayOutputStream::write(unsigned char) 22.27%
DataOutputStream::write(unsigned char) 17.33%
ByteArrayOutputStream::write(unsigned char*, size_t) 15.65%
[our function that does some mangling of the data before it is written to the message] 9.82%
[everything else] 34.93%

We see that Stomp is quite a bit faster than Openwire. It's interesting to note that Openwire
calls two different write functions on ByteArrayOutputStream and that both eat up quite a
substantial amount of the time (37.92% for both in Openwire vs 26.23% for the single function
in Stomp).

A few times we some strange long pauses (up to 500 ms) between sends. This might be due to
some Delayed ACK/Nagle's algorithm issue, as is described here:

http://www.stuartcheshire.org/papers/NagleDelayedAck/

In conclusion, it looks ByteArrayOutputStream and DataOutputStream might be good candidates
to attempt to optimize (at least for this application).

I'm working on removing our application-specific code from this benchmark. I'll attach the
code here when I'm done.

> Performance analysis
> --------------------
>
>                 Key: AMQCPP-93
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-93
>             Project: ActiveMQ C++ Client
>          Issue Type: Task
>    Affects Versions: 2.0
>            Reporter: Nathan Mittler
>            Assignee: Nathan Mittler
>             Fix For: 2.2
>
>
> Do a performance analysis on openwire vs stomp.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message