diff --git a/misc/ss.c b/misc/ss.c index a5c482f6..2678033f 100644 --- a/misc/ss.c +++ b/misc/ss.c @@ -618,7 +618,7 @@ struct slabstat int skbs; }; -struct slabstat slabstat; +static struct slabstat slabstat; static const char *slabstat_ids[] = { @@ -634,6 +634,10 @@ static int get_slabstat(struct slabstat *s) char buf[256]; FILE *fp; int cnt; + static int slabstat_valid; + + if (slabstat_valid) + return 0; memset(s, 0, sizeof(*s)); @@ -657,6 +661,8 @@ static int get_slabstat(struct slabstat *s) break; } + slabstat_valid = 1; + fclose(fp); return 0; } @@ -2297,6 +2303,8 @@ static int tcp_show(struct filter *f, int socktype) * it is able to give us some memory for snapshot. */ if (1) { + get_slabstat(&slabstat); + int guess = slabstat.socks+slabstat.tcp_syns; if (f->states&(1<