“The sockets API lets you develop client and server applications that can communicate across a local network or across the world via the Internet. Like any API, you can use the sockets API in ways that promote high performance – or inhibit it. This article explores four ways to use the sockets API to squeeze the greatest performance out your application and to tune the GNU/Linux environment to achieve the best results.”
This is a really neat tutorial, reasonably practical, I mean, I could factor changes to my library to take advantage of all this. Plus hints to the Linux TCP stack are really neat too.
I’m only let down by them not providing a tar.gz of the full compilable source that they hinted at in the article itself.
Otherwise, I think other folk have made this comment before, I’ll throw my sentiments behind that, these IBM howto-like articles are both practical and interesting.
Shouldn’t it already be tweaked for both compatibility and performance out of the box?
It should, and it is. However, simply put, what’s best for 90% of apps, is worst for the remaining 10%. In those cases is nice to know what can be done to increase performance.
If you’re not routing anywhere and it’s just point to point chuck tcp headers entirely and go raw ethernet instead.
Wonderful params chart, some good tips from a terrific article.
In section 3:
625KB / 0.050 = 31.25MBps.
My calculator seems to think that 625 / 0.05 / 1000 = 12.5 and not 31.25
The window size is increased to ~5.7 times the standard window size. How can the bandwidth be increased more than fourteen-fold?
Edited 2006-01-20 12:00