Eric Dumazet
0eab5eb7a3
pkt_sched: fq: rate limiting improvements
FQ rate limiting suffers from two problems, reported
by Steinar :
1) FQ enforces a delay when flow quantum is exhausted in order
to reduce cpu overhead. But if packets are small, current
delay computation is slightly wrong, and observed rates can
be too high.
Steinar had this problem because he disabled TSO and GSO,
and default FQ quantum is 2*1514.
(Of course, I wish recent TSO auto sizing changes will help
to not having to disable TSO in the first place)
2) maxrate was not used for forwarded flows (skbs not attached
to a socket)
Tested:
tc qdisc add dev eth0 root est 1sec 4sec fq maxrate 8Mbit
netperf -H lpq84 -l 1000 &
sleep 10 ; tc -s qdisc show dev eth0
qdisc fq 8003: root refcnt 32 limit 10000p flow_limit 100p buckets 1024
quantum 3028 initial_quantum 15140 maxrate 8000Kbit
Sent 16819357 bytes 11258 pkt (dropped 0, overlimits 0 requeues 0)
rate 7831Kbit 653pps backlog 7570b 5p requeues 0
44 flows (43 inactive, 1 throttled), next packet delay 2977352 ns
0 gc, 0 highprio, 5545 throttled
lpq83:~# tcpdump -p -i eth0 host lpq84 -c 12
09:02:52.079484 IP lpq83 > lpq84: . 1389536928:1389538376(1448) ack 3808678021 win 457 <nop,nop,timestamp 961812 572609068>
09:02:52.079499 IP lpq83 > lpq84: . 1448:2896(1448) ack 1 win 457 <nop,nop,timestamp 961812 572609068>
09:02:52.079906 IP lpq84 > lpq83: . ack 2896 win 16384 <nop,nop,timestamp 572609080 961812>
09:02:52.082568 IP lpq83 > lpq84: . 2896:4344(1448) ack 1 win 457 <nop,nop,timestamp 961815 572609071>
09:02:52.082581 IP lpq83 > lpq84: . 4344:5792(1448) ack 1 win 457 <nop,nop,timestamp 961815 572609071>
09:02:52.083017 IP lpq84 > lpq83: . ack 5792 win 16384 <nop,nop,timestamp 572609083 961815>
09:02:52.085678 IP lpq83 > lpq84: . 5792:7240(1448) ack 1 win 457 <nop,nop,timestamp 961818 572609074>
09:02:52.085693 IP lpq83 > lpq84: . 7240:8688(1448) ack 1 win 457 <nop,nop,timestamp 961818 572609074>
09:02:52.086117 IP lpq84 > lpq83: . ack 8688 win 16384 <nop,nop,timestamp 572609086 961818>
09:02:52.088792 IP lpq83 > lpq84: . 8688:10136(1448) ack 1 win 457 <nop,nop,timestamp 961821 572609077>
09:02:52.088806 IP lpq83 > lpq84: . 10136:11584(1448) ack 1 win 457 <nop,nop,timestamp 961821 572609077>
09:02:52.089217 IP lpq84 > lpq83: . ack 11584 win 16384 <nop,nop,timestamp 572609090 961821>
Reported-by: Steinar H. Gunderson <sesse@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
|
2013-10-01 13:00:38 -04:00 |
| .. |
|
9p
|
for-linus-3.12-merge minor 9p fixes and tweaks for 3.12 merge window
|
2013-09-11 12:34:13 -07:00 |
|
802
|
mrp: add periodictimer to allow retries when packets get lost
|
2013-09-23 16:53:52 -04:00 |
|
8021q
|
net: vlan: inherit addr_assign_type along with dev_addr
|
2013-09-03 20:57:49 -04:00 |
|
appletalk
|
net: proc_fs: trivial: print UIDs as unsigned int
|
2013-08-15 14:37:46 -07:00 |
|
atm
|
|
|
|
ax25
|
|
|
|
batman-adv
|
batman-adv: set the TAG flag for the vid passed to BLA
|
2013-09-17 21:15:16 +02:00 |
|
bluetooth
|
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem
|
2013-09-27 13:11:17 -04:00 |
|
bridge
|
bridge: fix NULL pointer deref of br_port_get_rcu
|
2013-09-15 22:03:33 -04:00 |
|
caif
|
caif: Add missing braces to multiline if in cfctrl_linkup_request
|
2013-09-05 14:31:02 -04:00 |
|
can
|
can: gw: add a per rule limitation of frame hops
|
2013-08-29 22:58:24 +02:00 |
|
ceph
|
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client
|
2013-09-19 12:50:37 -05:00 |
|
core
|
net: flow_dissector: fix thoff for IPPROTO_AH
|
2013-09-30 15:32:05 -04:00 |
|
dcb
|
|
|
|
dccp
|
net:dccp: do not report ICMP redirects to user space
|
2013-09-18 12:33:44 -04:00 |
|
decnet
|
|
|
|
dns_resolver
|
net: strict_strtoul is obsolete, use kstrtoul instead
|
2013-07-12 16:09:14 -07:00 |
|
dsa
|
net: dsa: inherit addr_assign_type along with dev_addr
|
2013-09-03 20:57:49 -04:00 |
|
ethernet
|
net: Fix sysfs_format_mac() code duplication.
|
2013-07-16 17:09:22 -07:00 |
|
ieee802154
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
|
2013-09-05 14:54:29 -07:00 |
|
ipv4
|
ip_tunnel: Remove double unregister of the fallback device
|
2013-10-01 12:42:16 -04:00 |
|
ipv6
|
ip6tnl: allow to use rtnl ops on fb tunnel
|
2013-10-01 12:55:53 -04:00 |
|
ipx
|
net: proc_fs: trivial: print UIDs as unsigned int
|
2013-08-15 14:37:46 -07:00 |
|
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
|
xfrm: Remove rebundant address family checking
|
2013-08-07 10:12:58 +02:00 |
|
l2tp
|
l2tp: make datapath resilient to packet loss when sequence numbers enabled
|
2013-07-02 16:33:25 -07:00 |
|
lapb
|
net/lapb: re-send packets on timeout
|
2013-09-23 16:52:45 -04:00 |
|
llc
|
llc: Use normal etherdevice.h tests
|
2013-09-03 22:34:47 -04:00 |
|
mac80211
|
Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
|
2013-08-28 13:51:40 -04:00 |
|
mac802154
|
|
|
|
mpls
|
|
|
|
netfilter
|
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf
|
2013-10-01 12:39:35 -04:00 |
|
netlabel
|
netlabel: use domain based selectors when address based selectors are not available
|
2013-08-02 16:57:01 -07:00 |
|
netlink
|
net: netlink: filter particular protocols from analyzers
|
2013-09-06 14:43:48 -04:00 |
|
netrom
|
|
|
|
nfc
|
NFC: Update secure element state
|
2013-08-14 01:13:40 +02:00 |
|
openvswitch
|
net: ovs: flow: fix potential illegal memory access in __parse_flow_nlattrs
|
2013-09-11 16:09:58 -04:00 |
|
packet
|
net: packet: use reciprocal_divide in fanout_demux_hash
|
2013-08-29 16:43:29 -04:00 |
|
phonet
|
net: proc_fs: trivial: print UIDs as unsigned int
|
2013-08-15 14:37:46 -07:00 |
|
rds
|
|
|
|
rfkill
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
|
2013-09-05 14:54:29 -07:00 |
|
rose
|
|
|
|
rxrpc
|
|
|
|
sched
|
pkt_sched: fq: rate limiting improvements
|
2013-10-01 13:00:38 -04:00 |
|
sctp
|
net: sctp: rfc4443: do not report ICMP redirects to user space
|
2013-09-16 21:40:15 -04:00 |
|
sunrpc
|
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
|
2013-09-12 15:01:38 -07:00 |
|
tipc
|
tipc: set sk_err correctly when connection fails
|
2013-08-30 16:06:57 -04:00 |
|
unix
|
af_unix: fix bug on large send()
|
2013-08-11 22:02:36 -07:00 |
|
vmw_vsock
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
|
2013-08-16 15:37:26 -07:00 |
|
wimax
|
|
|
|
wireless
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
|
2013-09-05 14:54:29 -07:00 |
|
x25
|
x25: add a sanity check parsing X.25 facilities
|
2013-09-04 00:27:27 -04:00 |
|
xfrm
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
|
2013-09-05 14:58:52 -04:00 |
|
compat.c
|
|
|
|
Kconfig
|
Remove GENERIC_HARDIRQ config option
|
2013-09-13 15:09:52 +02:00 |
|
Makefile
|
|
|
|
nonet.c
|
|
|
|
socket.c
|
Merge git://git.kvack.org/~bcrl/aio-next
|
2013-09-13 10:55:58 -07:00 |
|
sysctl_net.c
|
|
|