tcp: improve latencies of timer triggered events
authorEric Dumazet <edumazet@google.com>
Fri, 20 Jul 2012 05:45:50 +0000 (05:45 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 20 Jul 2012 17:59:41 +0000 (10:59 -0700)
commit6f458dfb409272082c9bfa412f77ff2fc21c626f
tree7475cd12eb01023b9852cbc957080b9aa7cfdc64
parent9dc274151a548ffd215caecec5a8872db8799447
tcp: improve latencies of timer triggered events

Modern TCP stack highly depends on tcp_write_timer() having a small
latency, but current implementation doesn't exactly meet the
expectations.

When a timer fires but finds the socket is owned by the user, it rearms
itself for an additional delay hoping next run will be more
successful.

tcp_write_timer() for example uses a 50ms delay for next try, and it
defeats many attempts to get predictable TCP behavior in term of
latencies.

Use the recently introduced tcp_release_cb(), so that the user owning
the socket will call various handlers right before socket release.

This will permit us to post a followup patch to address the
tcp_tso_should_defer() syndrome (some deferred packets have to wait
RTO timer to be transmitted, while cwnd should allow us to send them
sooner)

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Tom Herbert <therbert@google.com>
Cc: Yuchung Cheng <ycheng@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Cc: Nandita Dukkipati <nanditad@google.com>
Cc: H.K. Jerry Chu <hkchu@google.com>
Cc: John Heffner <johnwheffner@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/tcp.h
include/net/tcp.h
net/ipv4/tcp_output.c
net/ipv4/tcp_timer.c