Re: [PATCH 0/9 Rev3] Implement batching skb API and support in IPoIB

David Miller
2007-08-27T02:04:22Z

From: John Heffner <jheffner@psc.edu>
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.