RE: [PATCH net-next 1/2] net: Keep sk->sk_forward_alloc as a proper size

Zhang, Cathy
2023-05-10T11:11:56Z

Hi Shakeel, Eric and all,

How about adding memory pressure checking in sk_mem_uncharge()
to decide if keep part of memory or not, which can help avoid the issue
you fixed and the problem we find on the system with more CPUs.

The code draft is like this:

static inline void sk_mem_uncharge(struct sock *sk, int size)
{
int reclaimable;
int reclaim_threshold = SK_RECLAIM_THRESHOLD;

if (!sk_has_account(sk))
return;
sk->sk_forward_alloc += size;

if (mem_cgroup_sockets_enabled && sk->sk_memcg &&
mem_cgroup_under_socket_pressure(sk->sk_memcg)) {
sk_mem_reclaim(sk);
return;
}

reclaimable = sk->sk_forward_alloc - sk_unused_reserved_mem(sk);

if (reclaimable > reclaim_threshold) {
reclaimable -= reclaim_threshold;
__sk_mem_reclaim(sk, reclaimable);
}
}

I've run a test with the new code, the result looks good, it does not introduce
latency, RPS is the same.

> -----Original Message-----
> From: Shakeel Butt <shakeelb@google.com>
> Sent: Wednesday, May 10, 2023 12:10 AM
> To: Eric Dumazet <edumazet@google.com>; Linux MM <linux-
> mm@kvack.org>; Cgroups <cgroups@vger.kernel.org>
> Cc: Zhang, Cathy <cathy.zhang@intel.com>; Paolo Abeni
> <pabeni@redhat.com>; davem@davemloft.net; kuba@kernel.org;
> Brandeburg, Jesse <jesse.brandeburg@intel.com>; Srinivas, Suresh
> <suresh.srinivas@intel.com>; Chen, Tim C <tim.c.chen@intel.com>; You,
> Lizhen <lizhen.you@intel.com>; eric.dumazet@gmail.com;
> netdev@vger.kernel.org
> Subject: Re: [PATCH net-next 1/2] net: Keep sk->sk_forward_alloc as a proper
> size
>
> +linux-mm & cgroup
>
> Thread: https://lore.kernel.org/all/20230508020801.10702-1-
> cathy.zhang@intel.com/
>
> On Tue, May 9, 2023 at 8:43 AM Eric Dumazet <edumazet@google.com>
> wrote:
> >
> [...]
> > Some mm experts should chime in, this is not a networking issue.
>
> Most of the MM folks are busy in LSFMM this week. I will take a look at this
> soon.