From: Yuchung Cheng <ych...@google.com> Dump some new fields added to tcp_info in v4.10: tcpi_busy_time, tcpi_rwnd_limited, tcpi_sndbuf_limited.
Example output for a flow busy for 110ms but never measurably limited by receive window or send buffer: busy:110ms Example output for a flow usually limited by receive window: busy:111ms rwnd_limited:101ms(91.0%) Example output for a flow sometimes limited by send buffer: busy:50ms sndbuf_limited:10ms(20.0%) Signed-off-by: Yuchung Cheng <ych...@google.com> Signed-off-by: Neal Cardwell <ncardw...@google.com> Signed-off-by: Eric Dumazet <eduma...@google.com> Signed-off-by: Soheil Hassas Yeganeh <soh...@google.com> --- misc/ss.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/misc/ss.c b/misc/ss.c index 18cfa93..392dbf7 100644 --- a/misc/ss.c +++ b/misc/ss.c @@ -784,6 +784,9 @@ struct tcpstat { double rcv_rtt; double min_rtt; int rcv_space; + unsigned long long busy_time; + unsigned long long rwnd_limited; + unsigned long long sndbuf_limited; bool has_ts_opt; bool has_sack_opt; bool has_ecn_opt; @@ -1875,6 +1878,18 @@ static void tcp_stats_print(struct tcpstat *s) if (s->app_limited) printf(" app_limited"); + if (s->busy_time) { + printf(" busy:%llums", s->busy_time / 1000); + if (s->rwnd_limited) + printf(" rwnd_limited:%llums(%.1f%%)", + s->rwnd_limited / 1000, + 100.0 * s->rwnd_limited / s->busy_time); + if (s->sndbuf_limited) + printf(" sndbuf_limited:%llums(%.1f%%)", + s->sndbuf_limited / 1000, + 100.0 * s->sndbuf_limited / s->busy_time); + } + if (s->unacked) printf(" unacked:%u", s->unacked); if (s->retrans || s->retrans_total) @@ -2171,6 +2186,9 @@ static void tcp_show_info(const struct nlmsghdr *nlh, struct inet_diag_msg *r, s.min_rtt = (double) info->tcpi_min_rtt / 1000; s.delivery_rate = info->tcpi_delivery_rate * 8.; s.app_limited = info->tcpi_delivery_rate_app_limited; + s.busy_time = info->tcpi_busy_time; + s.rwnd_limited = info->tcpi_rwnd_limited; + s.sndbuf_limited = info->tcpi_sndbuf_limited; tcp_stats_print(&s); free(s.dctcp); free(s.bbr_info); -- 2.8.0.rc3.226.g39d4020