diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2010-09-28 02:53:41 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-09-29 13:25:37 -0700 |
commit | 8df40d1033d64597dcf1efd4f7547e817f7a953b (patch) | |
tree | b6ec7503d4d38c53d1123b184df7acad9a1debe4 /net/ipv6 | |
parent | dd4080ee575db1a2d0f40538aed5aa7662a06c54 (diff) | |
download | linux-3.10-8df40d1033d64597dcf1efd4f7547e817f7a953b.tar.gz linux-3.10-8df40d1033d64597dcf1efd4f7547e817f7a953b.tar.bz2 linux-3.10-8df40d1033d64597dcf1efd4f7547e817f7a953b.zip |
sit: enable lockless xmits
SIT tunnels can benefit from lockless xmits, using NETIF_F_LLTX
Bench on a 16 cpus machine (dual E5540 cpus), 16 threads sending
10000000 UDP frames via one sit tunnel (size:220 bytes per frame)
Before patch :
real 3m15.399s
user 0m9.185s
sys 51m55.403s
75029.00 87.5% _raw_spin_lock vmlinux
1090.00 1.3% dst_release vmlinux
902.00 1.1% dev_queue_xmit vmlinux
627.00 0.7% sock_wfree vmlinux
613.00 0.7% ip6_push_pending_frames ipv6.ko
505.00 0.6% __ip_route_output_key vmlinux
After patch:
real 1m1.387s
user 0m12.489s
sys 15m58.868s
28239.00 23.3% dst_release vmlinux
13570.00 11.2% ip6_push_pending_frames ipv6.ko
13118.00 10.8% ip6_append_data ipv6.ko
7995.00 6.6% __ip_route_output_key vmlinux
7924.00 6.5% sk_dst_check vmlinux
5015.00 4.1% udpv6_sendmsg ipv6.ko
3594.00 3.0% sock_alloc_send_pskb vmlinux
3135.00 2.6% sock_wfree vmlinux
3055.00 2.5% ip6_sk_dst_lookup ipv6.ko
2473.00 2.0% ip_finish_output vmlinux
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/sit.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c index 2cb64607923..d7701782b63 100644 --- a/net/ipv6/sit.c +++ b/net/ipv6/sit.c @@ -1140,6 +1140,7 @@ static void ipip6_tunnel_setup(struct net_device *dev) dev->iflink = 0; dev->addr_len = 4; dev->features |= NETIF_F_NETNS_LOCAL; + dev->features |= NETIF_F_LLTX; } static int ipip6_tunnel_init(struct net_device *dev) |