January 27, 2009 at 4:00 pm by Rob Ciampa
Recently, one of our senior systems engineers and I presented the topic of “High Performance Messaging Systems” to a Unix/Linux/BSD user group at the Cooper Union in New York. Full disclosure: I’m a former Unix kernel engineer whose research was deterministic communication flow. Admittedly, that was several years ago, but (again full disclosure) I currently run several Linux servers and desktops at home with various types of middleware, queuing systems, applications, etc. I thought product marketing and strategy work would cure me of my technical tendencies, but alas they have not.
We expected our presentation to focus on the inflection point of when/where peer-to-peer messaging systems (and sockets) deteriorate and should yield to a more formalized message network, but – surprise – many of the questions had to do with server tuning. This, of course, makes sense because if data producers and consumers are performance dogs, then one might as well put token ring between them. However, tuning end points is still a bit art and still a bit science: network interface card selection, interrupt coalescence, thread management, etc. Sorry for the technical complexity but the point is this: if end systems are the bottleneck, fix ‘em first. The bottleneck will naturally move to the middleware and to the network. That’s the new battleground (which bandwidth won’t fix) and a discussion for another day when we look at holistic end-to-end performance.
For the curious: when do peer-to-peer system begin to break down? Around 5 end points. No kidding. That, too, is a discussion for another day.
=rob.ciampa