Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp2585550rwd; Mon, 22 May 2023 00:46:38 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7O+31BXlY3YYAEvLHuoJkWjPFi0/X/3RJSQFc/IRwKwtsbbb0mKOd/o5izHVTI3VMQNGnH X-Received: by 2002:a05:6a21:3386:b0:102:4597:de69 with SMTP id yy6-20020a056a21338600b001024597de69mr11178550pzb.30.1684741598649; Mon, 22 May 2023 00:46:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684741598; cv=none; d=google.com; s=arc-20160816; b=tWJRWDU0ElAIbpKpVyYBRwPJoqMKF21ZVJMR9u9Y0/KqoaeWzB4zz5PVbbWILgsrGd 71RdgzwOd1lnipD1SAZGfpRfxLd738DjR79WWuOOanNp6DAccmWPkgxiY7zWsdj9g5fP bkds1KZRs4xYP55ZVrFJzYpJsvJPvUEmq7qhNAHmnj8szh+XsSswrHfxmvEd2zcHxsii baDjug4Bu9hQ66GFsp6OWDCd7ChjdI4op0DRZhUq8TcZ3mXsQvmvWS9i5xZJpVIB7plt AVzPDb7zdUXhe1Q+iZjRJvg5sglyIec/sqndGsX2bxaIwL9wA0uVSFDPnzG0xBV4Mlwg mRoA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=sgzO2oS5bCjgkGEKcuzpbbehzv1fqa08++GJhHZGJnk=; b=qCex/709ukvKnewWkT+4tg8YndjsPJ4AICEWO+bd6jc5q0aKuoqISJ9BqzTlJepIyW nC/3RgnwjXMkP4mNuuU/w4BWZjIenOlSZ9t9Mz8KVKGtlmaG49tfVZobMMqqD94J0saC NLz28NcZLB48lQY/Wv++WlHBRnNKwDq72zGMbZo3Qlsan2YzuMEdgNq9puDU7GfCRp0T iK+SbtoqZVJSt8OTCGM9tY6nEBSpmNGj8GVpsYFyfPykSfh+wZLaqD/z/oUwh1TB8VhV cXlCY74Yr6FCS2lDvUwG7Mxxu7O0JYEVYMbzTppC7qxRL8aonbnVpufc5mTK5xYmk5aW ABHg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bytedance.com header.s=google header.b=B9OMUnv3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=bytedance.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id bt5-20020a632905000000b005350498d1e7si4192112pgb.857.2023.05.22.00.46.23; Mon, 22 May 2023 00:46:38 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@bytedance.com header.s=google header.b=B9OMUnv3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=bytedance.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232282AbjEVHGD (ORCPT + 99 others); Mon, 22 May 2023 03:06:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36346 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232261AbjEVHF1 (ORCPT ); Mon, 22 May 2023 03:05:27 -0400 Received: from mail-pf1-x42a.google.com (mail-pf1-x42a.google.com [IPv6:2607:f8b0:4864:20::42a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 091EA1BF0 for ; Mon, 22 May 2023 00:01:59 -0700 (PDT) Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-64d41d8bc63so1737164b3a.0 for ; Mon, 22 May 2023 00:01:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1684738911; x=1687330911; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sgzO2oS5bCjgkGEKcuzpbbehzv1fqa08++GJhHZGJnk=; b=B9OMUnv33tNdd4xn/p1rnp8gpM96UCeXIDdHTzof5dEwYWX67z6JpdsyQaZPSH7fYP 0xl2BymrQyLxgojJyRmIBKH64o8K6wqmHipT3fNNM8HjCm30OCRTAFhRZnQETqcP5thx P5yO6NgOVwy8MwNho2m98VZV1UY7rWaamv2fjlUEUnhCVpFhLcvZ7dp3OIYtosvdeWZc jfnYzwwptrztNkN3CdKh1BIIyb5WkJiJzBO9KXXNBx/b4FdN5Af3B47IgPO7hW9tXQNA 4UA5fFW/5Os2QHbMchluOHsxg1m1u7Pl0bZEh6iuGfbBnVDFKNYDbK9/BDiwQbwl5uGz Ugwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684738911; x=1687330911; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sgzO2oS5bCjgkGEKcuzpbbehzv1fqa08++GJhHZGJnk=; b=ksSGbONxIcAXsEPdNborxmPnvu7A95xukMzeiSr/chPrvFCKDkR4N+8CDVCvqcquZ3 8wieOnbZA3P0UojDkZiPToguRthttfb2tJ1LImEAhTSUnlamioqTJNDwsgcaLTi3ob63 UTxe0McThgj56oAOjA7GIvNuxIIOwz0L3J1vgCYSMB7cozlXZcXmw+EX1WkD7RALedc8 hZIizPp1BNEwUtscsRRkakramVdlxdIce3VLwIk2xOLIZGBBi2GE9GJHiQUTjcLlkLdZ fLFVY6LGLBb+hS8ewQu9pQrDqMf5ajxwaRGFfK7fr5yh0HEEWQ7npbhabTkQEQnqsFN1 S3IQ== X-Gm-Message-State: AC+VfDwz59QduTGTRkMK29iUdW5TdACennx2hPiOK3bfS9zbs73/fRzn tPy4dvTpWMNX5vPgGDLA3thzbw== X-Received: by 2002:a05:6a20:7fa8:b0:101:9344:bf82 with SMTP id d40-20020a056a207fa800b001019344bf82mr11034569pzj.15.1684738911283; Mon, 22 May 2023 00:01:51 -0700 (PDT) Received: from localhost.localdomain ([139.177.225.251]) by smtp.gmail.com with ESMTPSA id d27-20020a630e1b000000b0052cbd854927sm3687505pgl.18.2023.05.22.00.01.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 May 2023 00:01:50 -0700 (PDT) From: Abel Wu To: "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Glauber Costa , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Abel Wu Subject: [PATCH v2 2/4] sock: Fix misuse of sk_under_memory_pressure() Date: Mon, 22 May 2023 15:01:20 +0800 Message-Id: <20230522070122.6727-3-wuyun.abel@bytedance.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20230522070122.6727-1-wuyun.abel@bytedance.com> References: <20230522070122.6727-1-wuyun.abel@bytedance.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The status of global socket memory pressure is updated when: a) __sk_mem_raise_allocated(): enter: sk_memory_allocated(sk) > sysctl_mem[1] leave: sk_memory_allocated(sk) <= sysctl_mem[0] b) __sk_mem_reduce_allocated(): leave: sk_under_memory_pressure(sk) && sk_memory_allocated(sk) < sysctl_mem[0] So the conditions of leaving global pressure are inconstant, which may lead to the situation that one pressured net-memcg prevents the global pressure from being cleared when there is indeed no global pressure, thus the global constrains are still in effect unexpectedly on the other sockets. This patch fixes this by ignoring the net-memcg's pressure when deciding whether should leave global memory pressure. Fixes: e1aab161e013 ("socket: initial cgroup code") Signed-off-by: Abel Wu --- include/net/sock.h | 9 +++++++-- net/core/sock.c | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/include/net/sock.h b/include/net/sock.h index c73d9bad7ac7..bf930d4db7f0 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -1409,14 +1409,19 @@ static inline bool sk_has_memory_pressure(const struct sock *sk) return sk->sk_prot->memory_pressure != NULL; } +static inline bool sk_under_global_memory_pressure(const struct sock *sk) +{ + return sk->sk_prot->memory_pressure && + *sk->sk_prot->memory_pressure; +} + static inline bool sk_under_memory_pressure(const struct sock *sk) { if (mem_cgroup_sockets_enabled && sk->sk_memcg && mem_cgroup_under_socket_pressure(sk->sk_memcg)) return true; - return sk->sk_prot->memory_pressure && - *sk->sk_prot->memory_pressure; + return sk_under_global_memory_pressure(sk); } static inline long diff --git a/net/core/sock.c b/net/core/sock.c index 5440e67bcfe3..801df091e37a 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -3095,7 +3095,7 @@ void __sk_mem_reduce_allocated(struct sock *sk, int amount) if (mem_cgroup_sockets_enabled && sk->sk_memcg) mem_cgroup_uncharge_skmem(sk->sk_memcg, amount); - if (sk_under_memory_pressure(sk) && + if (sk_under_global_memory_pressure(sk) && (sk_memory_allocated(sk) < sk_prot_mem_limits(sk, 0))) sk_leave_memory_pressure(sk); } -- 2.37.3