On Tue, Apr 16, 2013 at 9:56 AM, Eric Dumazet <[email protected]> wrote: > I am afraid I don't understand what the issue is. > > the pull_tail() in itself is not a performance issue : Intel guys only > fixed last gays ago fact that IGB/IXGBE drivers were not pulling tcp > headers in skb->head , and nobody noticed. > > Real cost is the cache line miss.
According to Markus there is a pretty huge performance penalty if the whole packet (TCP/IP headers + payload) ends up in the fragment, and stack has to memcpy headers into the linear part. > Now, if you pull too many bytes in skb->head, say part of TCP payload, > you lose opportunities in TCP coalescing or splice(). So it sounds like this patch is a bad change from that POV, since it would cause us to have lots of TCP payload in the linear part and then second half of the payload in the fragments (if we are running with 4K IPoIB MTU). Seems like the real fix is to enable the header separation feature in adapters that support it (ConnectX-2 and -3) so that exactly TCP/IP headers go in linear part and payload goes in the fragment. That's a bit more involved, but I'll look into doing it. - R. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
