diff options
author | Menglong Dong <imagedong@tencent.com> | 2021-11-28 07:01:02 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-11-29 14:05:47 +0100 |
commit | aeeecb889165617a841e939117f9a8095d0e7d80 (patch) | |
tree | d5f96508b40bed44e1256c6097420adbccd9128e /net/ipv4 | |
parent | devlink: Remove misleading internal_flags from health reporter dump (diff) | |
download | linux-aeeecb889165617a841e939117f9a8095d0e7d80.tar.xz linux-aeeecb889165617a841e939117f9a8095d0e7d80.zip |
net: snmp: add statistics for tcp small queue check
Once tcp small queue check failed in tcp_small_queue_check(), the
throughput of tcp will be limited, and it's hard to distinguish
whether it is out of tcp congestion control.
Add statistics of LINUX_MIB_TCPSMALLQUEUEFAILURE for this scene.
Signed-off-by: Menglong Dong <imagedong@tencent.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/proc.c | 1 | ||||
-rw-r--r-- | net/ipv4/tcp_output.c | 5 |
2 files changed, 5 insertions, 1 deletions
diff --git a/net/ipv4/proc.c b/net/ipv4/proc.c index f30273afb539..43b7a77cd6b4 100644 --- a/net/ipv4/proc.c +++ b/net/ipv4/proc.c @@ -297,6 +297,7 @@ static const struct snmp_mib snmp4_net_list[] = { SNMP_MIB_ITEM("TCPDSACKIgnoredDubious", LINUX_MIB_TCPDSACKIGNOREDDUBIOUS), SNMP_MIB_ITEM("TCPMigrateReqSuccess", LINUX_MIB_TCPMIGRATEREQSUCCESS), SNMP_MIB_ITEM("TCPMigrateReqFailure", LINUX_MIB_TCPMIGRATEREQFAILURE), + SNMP_MIB_ITEM("TCPSmallQueueFailure", LINUX_MIB_TCPSMALLQUEUEFAILURE), SNMP_MIB_SENTINEL }; diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 5079832af5c1..c4ab6c8f0c77 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -2524,8 +2524,11 @@ static bool tcp_small_queue_check(struct sock *sk, const struct sk_buff *skb, * test again the condition. */ smp_mb__after_atomic(); - if (refcount_read(&sk->sk_wmem_alloc) > limit) + if (refcount_read(&sk->sk_wmem_alloc) > limit) { + NET_INC_STATS(sock_net(sk), + LINUX_MIB_TCPSMALLQUEUEFAILURE); return true; + } } return false; } |