From: John Heffner <[EMAIL PROTECTED]> Date: Sun, 26 Aug 2007 21:32:26 -0400
> There are a few interesting things here. For one, the bursts caused by > TSO seem to be causing the receiver to do stretch acks. This may have a > negative impact on flow performance, but it's hard to say for sure how > much. Interestingly, it will even further reduce the CPU load on the > sender, since it has to process fewer acks. > > As I suspected, in the non-TSO case the receiver gets lots of packets > directly queued to user. This should result in somewhat lower CPU > utilization on the receiver. I don't know if it can account for all the > difference you see. I had completely forgotten these stretch ACK and ucopy issues. When the receiver gets inundated with a backlog of receive queue packets, it just spins there copying into userspace _every_ _single_ packet in that queue, then spits out one ACK. Meanwhile the sender has to pause long enough for the pipe to empty slightly. The transfer is much better behaved if we ACK every two full sized frames we copy into the receiver, and therefore don't stretch ACK, but at the cost of cpu utilization. These effects are particularly pronounced on systems where the bus bandwidth is also one of the limiting factors. - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html