I recently finished switching over my proton-c programs psend & precv 
to the new event-based interface, and my first test of them was a 
5 billion message soak test. 

The programs survived this test with no memory growth, and no gradual 
slowdown. 

This test is meant to find the fastest possible speed of the proton-c 
code itself. (In future, we could make other similar tests designed 
to mimic realistic user scenarios.) In this test, I run both sender 
and receiver on one box, with the loopback interface. I have MTU == 
64K, I use a credit scheme of 600 initial credits, and 300 new credits 
whenever credit falls below 300. The messages are small: exactly 100 
bytes long. 

I am using two processors, both Intel Xeon E5420 @ 2.50GHz with 6144 
KB cache. (Letting the OS decide which processors to use for my two 
processes.) 

On that system, with the above credit scheme, the test is sustaining 
throughput of 408,500 messages per second . That's over a single link, 
between two singly-threaded processes. 

This is significantly faster than my previous, non-event-based code, 
and I find the code *much* easier to understand. 

This may still not be the maximum possible speed on my box. It looks 
like the limiting factor will be the receiver, and right now it is 
using only 74% of its CPU -- so if we could get it to use 100% we *might* 
see a performance gain to the neighborhood of 550,000 messages per second. 
But I have not been able to get closer to 100% just by fooling with the 
credit scheme. Hmm. 



If you'd like to take a look, the code is here: 
https://github.com/mick-goulish/proton_c_clients.git 





Reply via email to