Hello all,
I was chatting to some colleagues yesterday who are trying to do some stress testing and have noticed some weird results.

I'm afraid I've not personally reproduced this yet, but I wanted to post on a Friday whilst the list was more active.

The set up is firing off messages of ~900 octets in size into a queue with a ring limit policy and I'm pretty sure they are using Qpid 0.8

As I understand it they have a few producers and a consumers and the "steady state" message rate is OKish, but if they kill off a couple of consumers to force the queue to start filling what seems to happen (as described to me) is that when the (ring) queue fills up to its limit (and I guess starts overwriting) the consumer rate plummets massively.

As I say I've not personally tried this yet, but as it happens another colleague was doing something independently and he reported something similar. He was using the C++ qpid::client API and from what I can gather did a bit of digging and found a command to disable consumer flow control, which seemed to solve his particular issue.


Do the scenarios above sound like flow control issues? I'm afraid I've not looked much at this and the only documentation I can find relates to the producer flow control feature introduced in 0.10 which isn't applicable here as a) the issues were seen in a 0.8 broker and b) as far as the doc goes producer flow control isn't applied on ring queues.

The colleague who did the tinkering on qpid::client I believe figured it out from the low-level doxygen API documentation, but I've not seen anything in the higher level documents and I've certainly not seen anything in the qpid::messaging or JMS stuff (which is mostly where my own experience comes from). I'd definitely like to be able to disable it from Java and qpid::messaging too.


I'd appreciate a brain dump of distilled flow control knowledge that I can pass on if that's possible!!!


As an aside, another thing seemed slightly weird to me. My colleagues are running an a 16 core Linux box and the worker threads are set to 17 as expected however despite running with I think 8 producers and 32 consumers the CPU usage reported by top maxes out at 113% this seems massively low on a 16 core box and I'd have hoped to see a massively higher message rate than they are actually seeing and the CPU usage getting closer to 1600%. Is there something "special" that needs to be done to make best use out of a nice big multicore Xeon box. IIRC the MRG whitepaper mentions "Use taskset to start qpid-daemon on all cpus". This isn't something I'm familiar with but looks like it relates to CPU affinity, but to my mind that doesn't account for maxing out at only a fraction of the available CPU capacity (it's not network bound BTW).


Are there any tutorials on how to obtain the absolute maximum super turbo message throughput :-) We're not even coming *close* to the figures quoted in the MRG whitepaper despite running of more powerful hardware, so I'm assuming we're doing something wrong unless the MRG figures are massively exaggerated.


Many thanks
Frase






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

Reply via email to