diff options
| author | David S. Miller <davem@davemloft.net> | 2016-11-30 10:04:32 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2016-11-30 10:04:32 -0500 |
| commit | 6d5274eba48539bf4fcea3fa85d8789e4a6b3425 (patch) | |
| tree | 4878c60feb2769477239b63194ce5946129bcd75 /include/linux | |
| parent | a090994980a15f8cc14fc188b5929bd61d2ae9c3 (diff) | |
| parent | 1c885808e45601b2b6f68b30ac1d999e10b6f606 (diff) | |
| download | cachepc-linux-6d5274eba48539bf4fcea3fa85d8789e4a6b3425.tar.gz cachepc-linux-6d5274eba48539bf4fcea3fa85d8789e4a6b3425.zip | |
Merge branch 'tcp-sender-chronographs'
Yuchung Cheng says:
====================
tcp: sender chronographs instrumentation
This patch set provides instrumentation on TCP sender limitations.
While developing the BBR congestion control, we noticed that TCP
sending process is often limited by factors unrelated to congestion
control: insufficient sender buffer and/or insufficient receive
window/buffer to saturate the network bandwidth. Unfortunately these
limits are not visible to the users and often the poor performance
is attributed to the congestion control of choice.
Thie patch aims to help users get the high level understanding of
where sending process is limited by, similar to the TCP_INFO design.
It is not to replace detailed kernel tracing and instrumentation
facilities.
In addition this patch set provide a new option to the timestamping
work to instrument these limits on application data unit. For exampe,
one can use SO_TIMESTAMPING and this patch set to measure the how
long a particular HTTP response is limited by small receive window.
Patch set was initially written by Francis Yan then polished
by Yuchung Cheng, with lots of help from Eric Dumazet and Soheil
Hassas Yeganeh.
====================
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/tcp.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/include/linux/tcp.h b/include/linux/tcp.h index 32a7c7e35b71..00e0ee8f001f 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h @@ -211,8 +211,11 @@ struct tcp_sock { u8 reord; /* reordering detected */ } rack; u16 advmss; /* Advertised MSS */ - u8 rate_app_limited:1, /* rate_{delivered,interval_us} limited? */ - unused:7; + u32 chrono_start; /* Start time in jiffies of a TCP chrono */ + u32 chrono_stat[3]; /* Time in jiffies for chrono_stat stats */ + u8 chrono_type:2, /* current chronograph type */ + rate_app_limited:1, /* rate_{delivered,interval_us} limited? */ + unused:5; u8 nonagle : 4,/* Disable Nagle algorithm? */ thin_lto : 1,/* Use linear timeouts for thin streams */ thin_dupack : 1,/* Fast retransmit on first dupack */ @@ -425,4 +428,6 @@ static inline void tcp_saved_syn_free(struct tcp_sock *tp) tp->saved_syn = NULL; } +struct sk_buff *tcp_get_timestamping_opt_stats(const struct sock *sk); + #endif /* _LINUX_TCP_H */ |
