netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: David Miller <davem@redhat.com>
Cc: willy@infradead.org, netdev@vger.kernel.org, linux-mm@kvack.org,
	ikomyagin@gmail.com, sthemmin@microsoft.com
Subject: Re: [PATCH 0/2] mark some slabs as visible not mergeable
Date: Mon, 26 Feb 2018 13:46:13 -0800	[thread overview]
Message-ID: <20180226134613.04edcc98@xeon-e3> (raw)
In-Reply-To: <20180226.151502.1181392845403505211.davem@redhat.com>

On Mon, 26 Feb 2018 15:15:02 -0500 (EST)
David Miller <davem@redhat.com> wrote:

> From: Stephen Hemminger <stephen@networkplumber.org>
> Date: Sat, 24 Feb 2018 11:04:52 -0800
> 
> > This fixes an old bug in iproute2's ss command because it was
> > reading slabinfo to get statistics. There isn't a better API
> > to do this, and one can argue that /proc is a UAPI that must
> > not change.  
> 
> Please elaborate what kind of statistics are needed.

This is ancient original iproute2 code that dumpster dives into
slabinfo to get summary statistics on active objects.

	1) open sockets (sock_inode_cache)
	2) TCP ports bound (tcp_bind_buckets) [*]
	3) TCP time wait sockets (tw_sock_TCP) [*]
	4) TCP syn sockets (request_sock_TCP) [*]

From man page:

       -s, --summary
              Print summary statistics. This option does not parse socket lists  obtaining  summary  from
              various  sources. It is useful when amount of sockets is so huge that parsing /proc/net/tcp
              is painful.


The items with * are currently broken. See 0 for timewait, synrecv, and ports.

$ sudo ss -s

Total: 1089 (kernel 1093)
TCP:   33 (estab 4, closed 1, orphaned 0, synrecv 0, timewait 0/0), ports 0

Transport Total     IP        IPv6
*	  1093      -         -        
RAW	  0         0         0        
UDP	  21        13        8        
TCP	  32        24        8        
INET	  53        37        16       
FRAG	  0         0         0        

> 
> > Therefore this patch set adds a flag to slab to give another
> > reason to prevent merging, and then uses it in network code.
> > 
> > The patches are against davem's linux-net tree and should also
> > goto stable as well.  
> 
> Well, as has been pointed out this never worked with SLUB so
> in some sense this was always broken.
> 
> And the "UAPI" of slabinfo is to show the state of the various
> slab caches.  And that's it.
> 
> If the implementation does merging or whatever, the UAPI is expressing
> that and it's perfectly legitimate and not breaking UAPI in my
> opinion.
> 
> I think the better solution is to grab the information from somewhere
> else, so let's move this conversation along with the answer to my
> question about asking for more details about what is needed by
> iproute2.
> 
> Thank you.

There is no where else that gives summary information.

Both /proc/net/tcp and sock diag info require user space to
read all the data, which is what I think Alexey was trying to avoid.
Ideally there would be network namespace aware API to do this, but
the code (iproute2 and kernel) are currently broken. Some values
are missing (because they are merged) and some values have wrong
cache name (because of acme's changes to make this generic).


--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2018-02-26 21:46 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-24 19:04 [PATCH 0/2] mark some slabs as visible not mergeable Stephen Hemminger
2018-02-24 19:04 ` [PATCH 1/2] slab: add flag to block merging of UAPI elements Stephen Hemminger
2018-02-24 19:04 ` [PATCH 2/2] net: mark slab's used by ss as UAPI Stephen Hemminger
2018-02-25  3:34   ` kbuild test robot
2018-02-25  6:05   ` [net] ba4f5b62a2: kernel_BUG_at_net/socket.c kernel test robot
2018-02-24 21:05 ` [PATCH 0/2] mark some slabs as visible not mergeable Matthew Wilcox
2018-02-25 16:36 ` Stephen Hemminger
2018-02-26 20:15 ` David Miller
2018-02-26 21:46   ` Stephen Hemminger [this message]
2018-02-27  1:13     ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180226134613.04edcc98@xeon-e3 \
    --to=stephen@networkplumber.org \
    --cc=davem@redhat.com \
    --cc=ikomyagin@gmail.com \
    --cc=linux-mm@kvack.org \
    --cc=netdev@vger.kernel.org \
    --cc=sthemmin@microsoft.com \
    --cc=willy@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).