<div class="gmail_quote">On Sat, Jan 19, 2013 at 11:47 PM, Ray Pekowski <span dir="ltr">&lt;<a href="mailto:pekowski@gmail.com" target="_blank">pekowski@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Some possible things that could make the results lower than you would<br>
expect are:<br>
1) All machines are virtual machines, including the RabbitMQ servers.<br>
Virtualization typically costs around 40%.<br>
2) All VMs were only assigned 2 CPUs. �The CPUs are Intel Xeon E5620 @ 2.4 GHz.<br>
<span class="HOEnZb"><font color="#888888"><br>
</font></span></blockquote></div>I forgot to mention some other possible reasons:<br><br>3) OpenStack RPC implementation over AMQP (RabbitMQ and Qpid) sends two messages for each reply.� This means there are three messages sent per RPC, one for the request and two for the reply.<br>
<br>The effective rate in terms of RabbitMQ message/sec for the cluster of 
three RabbitMQ servers and mirroring enabled and the OpenStack patch to 
use a single queue per process for the reply is 812 X 3 ~= 2400 msg/sec,
 which might still be considered low but perhaps the 2 CPU VMs per 
RabbitMQ server is the biggest reason for this.<br><br>4) The OpenStack RPC producers re-declare the queues and exchanges upon which they send messages.� I say re-declare, because under normal circumstances in the OpenStack implementation, the consumers exist before the producers and so have already declared/created the exchanges and queues.� I think this is done in case an RPC call is made to a service that isn&#39;t up at the time.� I wonder that is a good practice, but I may be missing some other reason for it.� I might play around with prototyping a removal of the producer side re-declares.<br>
<br>Ray<br>