On Wed, 2010-10-13 at 21:59 -0700, Aaron Fabbri wrote: > On Tue, Oct 12, 2010 at 10:22 AM, Andrew Stitcher <astitc...@redhat.com> > wrote: > > For those interested in the Rdma implementation: > > > > I've been doing a lot of stability work, stressing the rdma code in odd > > corner cases (unexpected disconnects mostly). While on this trail I > > reailised I could simplify the Rdma::AsynchIO state machine drastically > > by ensuring that all callbacks generated by this layer happen in the > > "thread context" of the connection. > > Thanks for the heads up. I'm taking a quick look at the diffs. By > "thread context of the connection", do you mean always having these > callbacks happen from the poller threads?
yes. > > Can you give some hints on how this simplified things? Look at the code, and you will see ;-) In a little more detail - the Rdma::AsynchIO code is a lot easier to understand IMO. being sure that all the callbacks happens from an IO thread with the connection properly serialised makes it easier to not screw up changes too. > > > > > After an iteration to improve the performance which added a simple > > version of the state machine back, we have a version that has very > > similar throughput, but a little better latency as measured by me on my > > development boxes. > > What sort of latency improvement are you seeing? Irrelevant I think given I did no real tuning and this seems to be important to get good and reliable results. I was only testing in order to be sure there was no obvious regression. In other words in my testing the minimum latencies returned by latency test were not very dissimilar, but the max and avg latencies were improved. Andrew --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:dev-subscr...@qpid.apache.org