kernel_optimize_test/net
Eric Dumazet f2f872f927 netem: Introduce skb_orphan_partial() helper
Commit 547669d483 ("tcp: xps: fix reordering issues") added
unexpected reorders in case netem is used in a MQ setup for high
performance test bed.

ETH=eth0
tc qd del dev $ETH root 2>/dev/null
tc qd add dev $ETH root handle 1: mq
for i in `seq 1 32`
do
 tc qd add dev $ETH parent 1:$i netem delay 100ms
done

As all tcp packets are orphaned by netem, TCP stack believes it can
set skb->ooo_okay on all packets.

In order to allow producers to send more packets, we want to
keep sk_wmem_alloc from reaching sk_sndbuf limit.

We can do that by accounting one byte per skb in netem queues,
so that TCP stack is not fooled too much.

Tested:

With above MQ/netem setup, scaling number of concurrent flows gives
linear results and no reorders/retransmits

lpq83:~# for n in 1 10 20 30 40 50 60 70 80 90 100
 do echo -n "n:$n " ; ./super_netperf $n -H 10.7.7.84; done
n:1 198.46
n:10 2002.69
n:20 4000.98
n:30 6006.35
n:40 8020.93
n:50 10032.3
n:60 12081.9
n:70 13971.3
n:80 16009.7
n:90 17117.3
n:100 17425.5

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-07-31 14:59:49 -07:00
..
9p 9p: client: remove unused code and any reference to "cancelled" function 2013-07-30 15:54:28 -07:00
802
8021q net: convert resend IGMP to notifier event 2013-07-23 16:52:47 -07:00
appletalk
atm
ax25
batman-adv
bluetooth Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-07-09 18:24:39 -07:00
bridge bridge: cleanup netpoll code 2013-07-26 15:24:32 -07:00
caif
can
ceph net: add sk_stream_is_writeable() helper 2013-07-24 17:54:48 -07:00
core netem: Introduce skb_orphan_partial() helper 2013-07-31 14:59:49 -07:00
dcb
dccp net: add sk_stream_is_writeable() helper 2013-07-24 17:54:48 -07:00
decnet
dns_resolver net: strict_strtoul is obsolete, use kstrtoul instead 2013-07-12 16:09:14 -07:00
dsa
ethernet net: Fix sysfs_format_mac() code duplication. 2013-07-16 17:09:22 -07:00
ieee802154
ipv4 net: split rt_genid for ipv4 and ipv6 2013-07-31 14:56:36 -07:00
ipv6 net: split rt_genid for ipv4 and ipv6 2013-07-31 14:56:36 -07:00
ipx
irda net/irda: fixed style issues in irttp 2013-07-19 17:34:40 -07:00
iucv net: delete __cpuinit usage from all net files 2013-07-14 19:36:58 -04:00
key
l2tp
lapb
llc
mac80211 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-07-09 18:24:39 -07:00
mac802154
mpls
netfilter net/sctp: Refactor SCTP skb checksum computation 2013-07-27 20:07:15 -07:00
netlabel
netlink
netrom
nfc
openvswitch
packet net: Provide a generic socket error queue delivery method for Tx time stamps. 2013-07-22 14:58:19 -07:00
phonet
rds
rfkill
rose
rxrpc
sched netem: Introduce skb_orphan_partial() helper 2013-07-31 14:59:49 -07:00
sctp net/sctp: Refactor SCTP skb checksum computation 2013-07-27 20:07:15 -07:00
sunrpc net: add sk_stream_is_writeable() helper 2013-07-24 17:54:48 -07:00
tipc net/tipc: use %*phC to dump small buffers in hex form 2013-07-11 17:03:36 -07:00
unix Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-07-09 18:24:39 -07:00
vmw_vsock VSOCK: Move af_vsock.h and vsock_addr.h to include/net 2013-07-27 22:14:06 -07:00
wimax
wireless
x25
xfrm net: split rt_genid for ipv4 and ipv6 2013-07-31 14:56:36 -07:00
compat.c
Kconfig pktgen: Require CONFIG_INET due to use of IPv4 checksum function 2013-07-30 16:45:09 -07:00
Makefile
nonet.c
socket.c net: rename busy poll socket op and globals 2013-07-10 17:08:27 -07:00
sysctl_net.c