+Willem On Fri, Jun 02, 2023 at 04:11:34PM +0800, Abel Wu wrote: > The sk_under_memory_pressure() is called to check whether there is > memory pressure related to this socket. But now it ignores the net- > memcg's pressure if the proto of the socket doesn't care about the > global pressure, which may put burden on its memcg compaction or > reclaim path (also remember that socket memory is un-reclaimable). > > So always check the memcg's vm status to alleviate memstalls when > it's in pressure. > This is interesting. UDP is the only protocol which supports memory accounting (i.e. udp_memory_allocated) but it does not define memory_pressure. In addition, it does have sysctl_udp_mem. So effectively UDP supports a hard limit and ignores memcg pressure at the moment. This patch will change its behavior to consider memcg pressure as well. I don't have any objection but let's get opinion of UDP maintainer. > Signed-off-by: Abel Wu <wuyun.abel@xxxxxxxxxxxxx> > --- > include/net/sock.h | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/include/net/sock.h b/include/net/sock.h > index 3f63253ee092..ad1895ffbc4a 100644 > --- a/include/net/sock.h > +++ b/include/net/sock.h > @@ -1411,13 +1411,11 @@ static inline bool sk_has_memory_pressure(const struct sock *sk) > > static inline bool sk_under_memory_pressure(const struct sock *sk) > { > - if (!sk->sk_prot->memory_pressure) > - return false; > - > if (mem_cgroup_under_socket_pressure(sk->sk_memcg)) > return true; > > - return !!*sk->sk_prot->memory_pressure; > + return sk->sk_prot->memory_pressure && > + *sk->sk_prot->memory_pressure; > } > > static inline long > -- > 2.37.3 >