aboutsummaryrefslogtreecommitdiffstats
path: root/mm/percpu-stats.c
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2019-05-04 16:48:54 -0700
committerDavid S. Miller <davem@davemloft.net>2019-05-07 12:09:25 -0700
commit37c0aead7902b1ddf1b668e1ab74c80b9a7fd183 (patch)
tree0fe6429a54468c277bae91eaa708ad31c70d2be1 /mm/percpu-stats.c
parentnet_sched: sch_fq: do not assume EDT packets are ordered (diff)
downloadlinux-dev-37c0aead7902b1ddf1b668e1ab74c80b9a7fd183.tar.xz
linux-dev-37c0aead7902b1ddf1b668e1ab74c80b9a7fd183.zip
net_sched: sch_fq: handle non connected flows
FQ packet scheduler assumed that packets could be classified based on their owning socket. This means that if a UDP server uses one UDP socket to send packets to different destinations, packets all land in one FQ flow. This is unfair, since each TCP flow has a unique bucket, meaning that in case of pressure (fully utilised uplink), TCP flows have more share of the bandwidth. If we instead detect unconnected sockets, we can use a stochastic hash based on the 4-tuple hash. This also means a QUIC server using one UDP socket will properly spread the outgoing packets to different buckets, and in-kernel pacing based on EDT model will no longer risk having big rb-tree on one flow. Note that UDP application might provide the skb->hash in an ancillary message at sendmsg() time to avoid the cost of a dissection in fq packet scheduler. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'mm/percpu-stats.c')
0 files changed, 0 insertions, 0 deletions