Message ID | 20101209025511.GC5379@Desktop-Junchang |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Junchang Wang <junchangwang@gmail.com> Date: Thu, 9 Dec 2010 10:55:16 +0800 > We know for sure pktgen is going to write skb->data right after > *_alloc_skb, causing unnecessary cache misses. > > Idea is to add a prefetchw() call to prefetch the first cache line > indicated by skb->data. On systems with Adjacent Cache Line Prefetch, > it's probably two cache lines are prefetched. > > With this patch, pktgen on Intel SR1625 server with two E5530 > quad-core processors and a single ixgbe-based NIC went from 8.63Mpps > to 9.03Mpps, with 4.6% improvement. > > Signed-off-by: Junchang Wang <junchangwang@gmail.com> > Acked-by: Eric Dumazet <eric.dumazet@gmail.com> Applied, thanks. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 2953b2a..18fe20d 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -2660,6 +2660,7 @@ static struct sk_buff *fill_packet_ipv4(struct net_device *odev, sprintf(pkt_dev->result, "No memory"); return NULL; } + prefetchw(skb->data); skb_reserve(skb, datalen); @@ -3007,6 +3008,7 @@ static struct sk_buff *fill_packet_ipv6(struct net_device *odev, sprintf(pkt_dev->result, "No memory"); return NULL; } + prefetchw(skb->data); skb_reserve(skb, 16);