From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Hemminger Subject: [RFC iproute2-next 5/5] ss: use correct slab statistics Date: Wed, 2 May 2018 13:28:01 -0700 Message-ID: <20180502202801.5255-6-stephen@networkplumber.org> References: <20180502202801.5255-1-stephen@networkplumber.org> Cc: Stephen Hemminger , Stephen Hemminger To: netdev@vger.kernel.org Return-path: Received: from mail-pg0-f65.google.com ([74.125.83.65]:46525 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751307AbeEBU2L (ORCPT ); Wed, 2 May 2018 16:28:11 -0400 Received: by mail-pg0-f65.google.com with SMTP id z4-v6so11439671pgu.13 for ; Wed, 02 May 2018 13:28:11 -0700 (PDT) In-Reply-To: <20180502202801.5255-1-stephen@networkplumber.org> Sender: netdev-owner@vger.kernel.org List-ID: From: Stephen Hemminger The slabinfo names changed years ago, and ss statistics were broken. This changes to use current slab names and handle TCP IPv6. Signed-off-by: Stephen Hemminger --- misc/ss.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/misc/ss.c b/misc/ss.c index 97304cd8abfc..66c767cc415b 100644 --- a/misc/ss.c +++ b/misc/ss.c @@ -742,12 +742,12 @@ static int get_slabstat(struct slabstat *s) { char buf[256]; FILE *fp; - int cnt; + int *stats = (int *) s; static int slabstat_valid; static const char * const slabstat_ids[] = { - "sock", - "tcp_tw_bucket", - "tcp_open_request", + "sock_inode_cache", + "tw_sock_TCP", + "request_sock_TCP", }; if (slabstat_valid) @@ -759,24 +759,23 @@ static int get_slabstat(struct slabstat *s) if (!fp) return -1; - cnt = sizeof(*s)/sizeof(int); - if (!fgets(buf, sizeof(buf), fp)) { fclose(fp); return -1; } + while (fgets(buf, sizeof(buf), fp) != NULL) { - int i; + int i, v; for (i = 0; i < ARRAY_SIZE(slabstat_ids); i++) { - if (memcmp(buf, slabstat_ids[i], strlen(slabstat_ids[i])) == 0) { - sscanf(buf, "%*s%d", ((int *)s) + i); - cnt--; + if (memcmp(buf, slabstat_ids[i], strlen(slabstat_ids[i])) != 0) + continue; + + if (sscanf(buf, "%*s%d", &v) == 1) { + stats[i] += v; break; } } - if (cnt <= 0) - break; } slabstat_valid = 1; -- 2.17.0