First, if you haven't done so, set the MTU on all your GigE interfaces to 9000. This should help a lot as there's a significant amount of per-packet overhead. Hopefully your switch supports this.
Also, if you want to take advantage of checksum offloading (doing zero-copy), you'll have to use the sendfile(2) call. There's really no way around this with a sockets API.
-John
Neither of these has any chance of being your problem.
Its likely the hardware; you really dont know whats going on with the bus on the machine. It could be the driver (which is clearly designed and optimized to run on an i386 platform), or just some OS related delay in the interrupt processing. You cant put a rocket engine on a bicycle and expect rocket level performance.
Also make sure you are negotiating a gig link. It almost sounds as if you have a 100Mb/s link somewhere along the line.
Dennis
- : send the line "unsubscribe linux-net" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html