From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-oa1-f46.google.com (mail-oa1-f46.google.com [209.85.160.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 11F9F45349A for ; Fri, 7 Aug 2026 20:21:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.46 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786134081; cv=none; b=trZMthQVXzO88VKBUsEPaexlYt6wBb+/bwtY+LFwTciCRAdJTiPFaDJxt9FIFSIvGOX687tKXPhefmlbm+T1xRdHkc2BHQiFTSQra6rscNiBT5KJTVZceEIuoHqjAmNgkhQ3p2nnIAgxq/e9w/KCcqZQyecA9hYPA8bhAtIFtvk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786134081; c=relaxed/simple; bh=ZV2VwtllGfxcjLjy+Ic7pvWCqB5qypDbPzE1Afw8BhU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QeEimYvxRgoUdWfb6x+KbyFDTcuBA2xNVAIkEYKRFe6wjEH2SRyT6c00Y+0GGz47NVzasY+fF8ITwHemOE1Kwn8J+shvjXfkY8D947XoOncXnmjIGAGJgq3CQK7QlKtRCUcDzM6JXUTr6TA05tkXZko3HaDDwU/LUaXD4CyDCrw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=k4uwRzY3; arc=none smtp.client-ip=209.85.160.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="k4uwRzY3" Received: by mail-oa1-f46.google.com with SMTP id 586e51a60fabf-43b7e186a0cso1334282fac.0 for ; Fri, 07 Aug 2026 13:21:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786134079; x=1786738879; darn=vger.kernel.org; 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:content-type; bh=8XkMxJlHKp/V+Gx87DIQUe3nc4ANw9n5bBTpUGWIjt4=; b=k4uwRzY39CqdgQlzoByv3mAnaL/d0rpYEV4EHO/JzzWMkbwakeJqvOJi3PWdtqyVDA RY47niC6f07RohHD8DYWIW//ImootfUXQwEUoClV2sUurLWQDzi9yuDdR4BecBaXPR5l 2kg6Vgj1ufN9Y9aC9KZ33YPMys/WQVVzkcBod+IqPGQF6EK8/jI5jwj6UVXDL8YKZUny nduMSV7S64naM+iwfq9dKSL31+/2730FM1UnhFkxyMbbK/LzyI201ZJ+/chiflop/RqS WTTIICeD/BZTCXoq4rHLAbLNsR92DRVCFG4o107jjjIdQJdWvs2PJNnghcHXGrhCBWWr BpIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786134079; x=1786738879; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=8XkMxJlHKp/V+Gx87DIQUe3nc4ANw9n5bBTpUGWIjt4=; b=V5yQK0zyvvEgoMZHQnjGQV5iUwJFa/pYgPQch9pEHlSvI/MneGgHohWtIuLVYFpoUG O4OuSI2p8OhpeM70t5Ye/0Kd6hhc6uUNEeug7o5drZ5P+Usu1kS+42e4nfAyEmZVIuMV hrCC7oHDmvS46sCCzMfCEVbHmJNoxJFt3ulYoG5+AqZPLbqzMCKKEhRWFiyVvfi6IK/V O/rCLGMrjqamRlxIIgDh4QcM4eog7+liq/CrfrycFZb8So+VOb1YZyQlcrrSHpOf0gRZ do/wDtS/EOPbRt1U+aZY7iHOdk6yM7BvRtuV6zAXmR38cL4mCsQKCMpID9YX1fbGcccB O4nA== X-Forwarded-Encrypted: i=1; AHgh+Ro2ZQm/IPx0J8O716obcSUssJg8BaC4AeaW332MnyYTLm8gM9QG5WbJIOBARemO8AACjCp7oggcJvSeutY=@vger.kernel.org X-Gm-Message-State: AOJu0YzBuNvhSzK+1T82SQa/n0TM3NeAFHMFJKf+xcfJ8OAFN8xAEM2Y mBVtq6Hkygjdt6GPjjsTPsMbpS1XYq2s5tHYKcsDAkw+i6Fm4ZgkB+eI X-Gm-Gg: AR+sD10pakELvJzXvfzgjcFyMaVW3FZGiP9MRToFpDPHENYl+i2FyqOb+BlIZ320eDc TyrB7glMcymduZ/1jof/IHrnq6mqAaJI1o9XOTPQRL7ske4U/0nPgVQgQIkIsO/kdhLYLj0nKTc rcQc9JyTiU2iLDPfvP2hDiWJHZdoM6FngH1q+QQdeYBgwOX/Hag2bw/7nxDbvDWe8QH3pJjis6w A6lr56yQTeDavW2ywjcL6xgmsGMwYsA2Kp+mrcBxAcymKGyWfKaLIqGyy55l9q9lX9i31E8iAFT FhzBxF2gq6R8WFfdM35BvLPmzyHUl+ysFVGrmwuvcf2RtUTRpOF8UbXQPYDyoie/YqlNGG2jIlW f0kyEzGRW/zBDwX+bfJ68dvK59ABIhQ4xktCMaQ2I+yxgesDHT5+Uonlb00Sa2YUIkSUxwW5BZC HMfW+fyLgZlceVPvyE6yNQDEb+vla5ugSA9dOcNIJyKArgMfp7T3yT81LzvR9UwzPoqGhHvT+IR RduANSrxrKJXdecrA== X-Received: by 2002:a05:6871:b0f:b0:456:9b53:c6b5 with SMTP id 586e51a60fabf-4599ef8fbcfmr13854626fac.13.1786134078812; Fri, 07 Aug 2026 13:21:18 -0700 (PDT) Received: from localhost ([2a03:2880:10ff:4::]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-459f1ece1fbsm2770188fac.17.2026.08.07.13.21.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Aug 2026 13:21:17 -0700 (PDT) From: Joshua Hahn To: Johannes Weiner , Gregory Price Cc: Alistair Popple , Andrew Morton , Axel Rasmussen , Barry Song , Ben Segall , Brendan Jackman , Byungchul Park , David Hildenbrand , David Rientjes , Dietmar Eggemann , "Harry Yoo (Oracle)" , Ingo Molnar , Juri Lelli , K Prateek Nayak , Kairui Song , "Liam R. Howlett" , Lorenzo Stoakes , Matthew Brost , Mel Gorman , Michal Hocko , Michal Hocko , Mike Rapoport , Muchun Song , Peter Zijlstra , Qi Zheng , Rakie Kim , Roman Gushchin , Shakeel Butt , Steven Rostedt , Suren Baghdasaryan , "T.J. Mercier" , Valentin Schneider , Vincent Guittot , Vlastimil Babka , Wei Xu , Ying Huang , Yosry Ahmed , Yuanchu Xie , Zi Yan , cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, kernel-team@meta.com Subject: [RFC PATCH v3 12/14] mm/memcontrol: Kick async reclaim on migration and folio replacement Date: Fri, 7 Aug 2026 13:20:55 -0700 Message-ID: <20260807202059.2620949-13-joshua.hahnjy@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260807202059.2620949-1-joshua.hahnjy@gmail.com> References: <20260807202059.2620949-1-joshua.hahnjy@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Memcg tier charges are now transferred during folio migrations, but this still leaves forced charges and unenforced paths like folio replacement, hugetlb migration, and memory hotplug. Forced charges can and should not be enforced by synchronous reclaim, but if soft limits are set, we can kick async reclaimers to try and bring the usage below the high memcg tier limit. No-op unless the system has tiered memcg limits enabled. Signed-off-by: Joshua Hahn --- mm/memcontrol.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 1161934e81380..4dce7c6fefd98 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -5663,6 +5663,16 @@ void __mem_cgroup_uncharge_folios(struct folio_batch *folios) uncharge_batch(&ug); } +static void tier_kick_high(struct mem_cgroup *memcg, int slot) +{ + struct page_counter *tier_counter; + + tier_counter = mem_cgroup_tier_counter(memcg, slot); + if (tier_counter && page_counter_read(tier_counter) > + READ_ONCE(tier_counter->high)) + schedule_work(&memcg->high_work); +} + /** * mem_cgroup_replace_folio - Charge a folio's replacement. * @old: Currently circulating folio. @@ -5705,6 +5715,7 @@ void mem_cgroup_replace_folio(struct folio *old, struct folio *new) int slot = nid_tier_slot(folio_nid(new)); mem_cgroup_charge_tier(memcg, slot, nr_pages); + tier_kick_high(memcg, slot); } if (do_memsw_account()) page_counter_charge(&memcg->memsw, nr_pages); @@ -5798,6 +5809,7 @@ void mem_cgroup_migrate(struct folio *old, struct folio *new) if (old_slot != new_slot) { mem_cgroup_uncharge_tier(memcg, old_slot, nr_pages); mem_cgroup_charge_tier(memcg, new_slot, nr_pages); + tier_kick_high(memcg, new_slot); } rcu_read_unlock(); } -- 2.53.0-Meta