]> git.baikalelectronics.ru Git - kernel.git/commit
tcp: optimize tcp internal pacing
authorEric Dumazet <edumazet@google.com>
Mon, 15 Oct 2018 16:37:56 +0000 (09:37 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 16 Oct 2018 05:56:42 +0000 (22:56 -0700)
commita177ed583bb91f913772585c590fea9c2666a5fd
tree25eae7e82f14b3b683fc0288a1cd83d3b87a4af2
parent5314e8788fefea14d7fcc1b796c56947429e5414
tcp: optimize tcp internal pacing

When TCP implements its own pacing (when no fq packet scheduler is used),
it is arming high resolution timer after a packet is sent.

But in many cases (like TCP_RR kind of workloads), this high resolution
timer expires before the application attempts to write the following
packet. This overhead also happens when the flow is ACK clocked and
cwnd limited instead of being limited by the pacing rate.

This leads to extra overhead (high number of IRQ)

Now tcp_wstamp_ns is reserved for the pacing timer only
(after commit "tcp: do not change tcp_wstamp_ns in tcp_mstamp_refresh"),
we can setup the timer only when a packet is about to be sent,
and if tcp_wstamp_ns is in the future.

This leads to a ~10% performance increase in TCP_RR workloads.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_output.c