Re: [External] Re: [PATCH] mm: proc: add Sock to /proc/meminfo

Vlastimil Babka
2020-10-16T15:38:33Z

On 10/13/20 10:09 AM, Mike Rapoport wrote:
>> We are not complaining about TCP using too much memory, but how do
>> we know that TCP uses a lot of memory. When I firstly face this problem,
>> I do not know who uses the 25GB memory and it is not shown in the /proc/meminfo.
>> If we can know the amount memory of the socket buffer via /proc/meminfo, we
>> may not need to spend a lot of time troubleshooting this problem. Not everyone
>> knows that a lot of memory may be used here. But I believe many people
>> should know /proc/meminfo to confirm memory users.
> If I undestand correctly, the problem you are trying to solve is to
> simplify troubleshooting of memory usage for people who may not be aware
> that networking stack can be a large memory consumer.
>
> For that a paragraph in 'man 5 proc' maybe a good start:

Yeah. Another major consumer that I've seen at some point was xfs buffers. And
there might be others, and adding everything to /proc/meminfo is not feasible. I
have once proposed adding a counter called "Unaccounted:" which would at least
tell the user easily if a significant portion is occupied by memory not
explained by the other meminfo counters, and look for trends (increase =
potential memory leak?). For specific prominent consumers not covered by meminfo
but that have some kind of internal counters, we could document where to look,
such as /proc/net/sockstat or maybe create some /proc/ or /sys directory with
file per consumer so that it's still easy to check, but without the overhead of
global counters and bloated /proc/meminfo?

> From ddbcf38576d1a2b0e36fe25a27350d566759b664 Mon Sep 17 00:00:00 2001
> From: Mike Rapoport<rppt@linux.ibm.com>
> Date: Tue, 13 Oct 2020 11:07:35 +0300
> Subject: [PATCH] proc.5: meminfo: add not anout network stack memory
> consumption
>
> Signed-off-by: Mike Rapoport<rppt@linux.ibm.com>
> ---
> man5/proc.5 | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/man5/proc.5 b/man5/proc.5
> index ed309380b..8414676f1 100644
> --- a/man5/proc.5
> +++ b/man5/proc.5
> @@ -3478,6 +3478,14 @@ Except as noted below,
> all of the fields have been present since at least Linux 2.6.0.
> Some fields are displayed only if the kernel was configured
> with various options; those dependencies are noted in the list.
> +.IP
> +Note that significant part of memory allocated by the network stack
> +is not accounted in the file.
> +The memory consumption of the network stack can be queried
> +using
> +.IR /proc/net/sockstat
> +or
> +.BR ss (8)
> .RS
> .TP
> .IR MemTotal " %lu"
> -- 2.25.4