From nobody Sat Feb 14 01:56:15 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 650DEE7D0B6 for ; Thu, 21 Sep 2023 23:01:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232039AbjIUXBL (ORCPT ); Thu, 21 Sep 2023 19:01:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33002 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231827AbjIUXA7 (ORCPT ); Thu, 21 Sep 2023 19:00:59 -0400 Received: from mail-io1-xd4a.google.com (mail-io1-xd4a.google.com [IPv6:2607:f8b0:4864:20::d4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 730C28ED7A for ; Thu, 21 Sep 2023 10:45:23 -0700 (PDT) Received: by mail-io1-xd4a.google.com with SMTP id ca18e2360f4ac-7954a4f80fbso84732639f.3 for ; Thu, 21 Sep 2023 10:45:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1695318322; x=1695923122; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=FIm0UyACNB+n/akQREWxQWjORl9GVEfiVT/RezLXAow=; b=uR9Fv440HlOILRKBfEnyjwVRS9vHA8Z3MjwutpA1uOL86dhb/zVn4SGqQIolWU1OwK KhlmpPc0R02vgoX/thYrAlPZudlDrrICmoo2u8FjUzY7unSqBv+CBZxpeezareQQ3DmT Z8Z9fCdhNkXPxe1BqnJGtrwCxX/LFn8TQc0ZkYzqfmNw6ncBVaSOMq34cwNsY9spcVYT lZDEORwSL1X+ANYRFJTrRE8GyJhvdiLQBFUCfJM2dX0WTOeznh/m0ZB3mBmGGADgVPM0 bVajlGr3/aINZdenXVgTQXt6CWijPyq2OAmSJR8DIvirWggGrtc64ZIM6CEmUaDga4n8 JBmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695318322; x=1695923122; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=FIm0UyACNB+n/akQREWxQWjORl9GVEfiVT/RezLXAow=; b=v3BNXau0TfMl9J8UH3VFTtocb6nsng0H68eEu2OV8N3ZCiGWJnhI5z2poXmF417Uf3 xnzrhUB6SBByoum5JTMZMFKVNIv/ZqQh7wE5a2AjyDkGN/YJDvbmneVRNkrVrLfAiNEh mjACXyEP3fR5MraZ0nlaPdz3hzBmp1xYdfw5jHxlNU5o6LVObXKf8bRGNll8PhJQh6PG 7U0P5TmzAdoH55wO590ZP3OW7FTRZec7lVquz7URAlwm/3p5aDx8uOIsqzpdLPEYSq3e IU0F+IciwyXomwysafPpVLt0wMK5jUT2gG7V27gANumBXdeH8KruforZSRGwGkKKqbRI f51Q== X-Gm-Message-State: AOJu0Yy44J/H0yxwUU2DGVcIRJhhZlmLR51vibZWy+6w1W0bqfAoJoK6 orX2m85knvKQPmd64ECdlqVoRUZV1mFtEMDh X-Google-Smtp-Source: AGHT+IFPrnsBcOBrlhPC5hJYwVV2PE3AiCfsgKWx3CsvgDAaTduMINork77xXDD5F6NyG97FAk+4bBmhLTyqQlsm X-Received: from yosry.c.googlers.com ([fda3:e722:ac3:cc00:20:ed76:c0a8:29b4]) (user=yosryahmed job=sendgmr) by 2002:a25:4c8:0:b0:d0e:d67d:6617 with SMTP id 191-20020a2504c8000000b00d0ed67d6617mr67400ybe.4.1695283863247; Thu, 21 Sep 2023 01:11:03 -0700 (PDT) Date: Thu, 21 Sep 2023 08:10:53 +0000 In-Reply-To: <20230921081057.3440885-1-yosryahmed@google.com> Mime-Version: 1.0 References: <20230921081057.3440885-1-yosryahmed@google.com> X-Mailer: git-send-email 2.42.0.459.ge4e396fd5e-goog Message-ID: <20230921081057.3440885-2-yosryahmed@google.com> Subject: [PATCH 1/5] mm: memcg: change flush_next_time to flush_last_time From: Yosry Ahmed To: Andrew Morton Cc: Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Ivan Babrou , Tejun Heo , "=?UTF-8?q?Michal=20Koutn=C3=BD?=" , Waiman Long , kernel-team@cloudflare.com, Wei Xu , Greg Thelen , linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, Yosry Ahmed Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" flush_next_time is an inaccurate name. It's not the next time that periodic flushing will happen, it's rather the next time that ratelimited flushing can happen if the periodic flusher is late. Simplify its semantics by just storing the timestamp of the last flush instead, flush_last_time. Move the 2*FLUSH_TIME addition to mem_cgroup_flush_stats_ratelimited(), and add a comment explaining it. This way, all the ratelimiting semantics live in one place. No functional change intended. Signed-off-by: Yosry Ahmed --- mm/memcontrol.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 927c64d3cbcb..49562dfdeab2 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -590,7 +590,7 @@ static DECLARE_DEFERRABLE_WORK(stats_flush_dwork, flush= _memcg_stats_dwork); static DEFINE_PER_CPU(unsigned int, stats_updates); static atomic_t stats_flush_ongoing =3D ATOMIC_INIT(0); static atomic_t stats_flush_threshold =3D ATOMIC_INIT(0); -static u64 flush_next_time; +static u64 flush_last_time; =20 #define FLUSH_TIME (2UL*HZ) =20 @@ -650,7 +650,7 @@ static void do_flush_stats(void) atomic_xchg(&stats_flush_ongoing, 1)) return; =20 - WRITE_ONCE(flush_next_time, jiffies_64 + 2*FLUSH_TIME); + WRITE_ONCE(flush_last_time, jiffies_64); =20 cgroup_rstat_flush(root_mem_cgroup->css.cgroup); =20 @@ -666,7 +666,8 @@ void mem_cgroup_flush_stats(void) =20 void mem_cgroup_flush_stats_ratelimited(void) { - if (time_after64(jiffies_64, READ_ONCE(flush_next_time))) + /* Only flush if the periodic flusher is one full cycle late */ + if (time_after64(jiffies_64, READ_ONCE(flush_last_time) + 2*FLUSH_TIME)) mem_cgroup_flush_stats(); } =20 --=20 2.42.0.459.ge4e396fd5e-goog