linux-stable/net/core
Tom Herbert 11ef7a8996 net: Performance fix for process_backlog
In process_backlog the input_pkt_queue is only checked once for new
packets and quota is artificially reduced to reflect precisely the
number of packets on the input_pkt_queue so that the loop exits
appropriately.

This patches changes the behavior to be more straightforward and
less convoluted. Packets are processed until either the quota
is met or there are no more packets to process.

This patch seems to provide a small, but noticeable performance
improvement. The performance improvement is a result of staying
in the process_backlog loop longer which can reduce number of IPI's.

Performance data using super_netperf TCP_RR with 200 flows:

Before fix:

88.06% CPU utilization
125/190/309 90/95/99% latencies
1.46808e+06 tps
1145382 intrs.sec.

With fix:

87.73% CPU utilization
122/183/296 90/95/99% latencies
1.4921e+06 tps
1021674.30 intrs./sec.

Signed-off-by: Tom Herbert <therbert@google.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-07-07 19:24:34 -07:00
..
datagram.c
dev.c net: Performance fix for process_backlog 2014-07-07 19:24:34 -07:00
dev_addr_lists.c
dev_ioctl.c
drop_monitor.c
dst.c ipv4: fix dst race in sk_dst_get() 2014-06-25 17:41:44 -07:00
ethtool.c
fib_rules.c
filter.c net: filter: Use kcalloc/kmalloc_array to allocate arrays 2014-06-25 16:40:02 -07:00
flow.c
flow_dissector.c
gen_estimator.c
gen_stats.c
iovec.c
link_watch.c
Makefile
neighbour.c
net-procfs.c
net-sysfs.c Revert "net: return actual error on register_queue_kobjects" 2014-06-19 18:12:15 -07:00
net-sysfs.h
net-traces.c
net_namespace.c
netclassid_cgroup.c
netevent.c
netpoll.c
netprio_cgroup.c
pktgen.c
ptp_classifier.c
request_sock.c
rtnetlink.c
scm.c
secure_seq.c
skbuff.c net: fix setting csum_start in skb_segment() 2014-06-25 20:45:54 -07:00
sock.c
sock_diag.c
stream.c
sysctl_net_core.c
timestamping.c
tso.c
user_dma.c
utils.c