From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (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 941783019C1 for ; Fri, 14 Nov 2025 08:43:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763109825; cv=none; b=iwj1p7WbYBMoJcHdQkTrMz7UTLYlHI1oFZLGh35bmPCgCC1GXwyk+1Q1BhU9tQp3hb2ewlzBoGGD5x0QEiMStoCrZnQI+XwdC83luvDqAHjqEmzlXZxZCU5O98Np2ZqcjM8xWWP1eFophHMMrW689wkmlSSGKUEDdJYt80g7sKg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763109825; c=relaxed/simple; bh=lKKJd6N0c6vkdPKpztznWmAt5ZIxCKgUOSOUVHUPlUY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UZ6Z9b1i5szGNWa5bYpkIZrZcKxIBWszA6c6M8S7CH/9nQsBdFz5RECAJkjCIlPH7nLTzrECvdIjji0MKvAk66u6JF213eYwL30Gpl4wNWNcFWevlKBUox+0tmbgX2JvX/7M3pTNL6GtWowXa9qNXj5Xjuq9YU9IVtbdx0p5JQg= 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=JhlReM7v; arc=none smtp.client-ip=209.85.214.176 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="JhlReM7v" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-297f35be2ffso26118185ad.2 for ; Fri, 14 Nov 2025 00:43:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763109823; x=1763714623; 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; bh=CZqdt41d+LPz+pOMoPWH9r9sMNv7qqAmbnlAWDdsj9s=; b=JhlReM7vcFjPM2hMFIlKyqGoY2i+pDM3/bcl/pmGkCipBETUIBe7dBHDQX8F4i56pJ YOgWKZ6Ll15i/5OK7LrIJMvN7X/g7pTz9nBAFgjeRXo3Ax5btsg8LVC/ZIm6kli1Uwsn H3N/E326j5l5rH6zvziYdFCQtW/BCykLUvGBXJVmxCb/JTdNDNE3Bjs1YTnQLcr81R9J TJemABmm0TjMTEg8CsAGQ1+mEIFiFRzMasrlmh9fj6SaD88C/Wv+06kCRizQXyGxpXf8 iBjvGn2KhkjuKda7pY44NUyyrwq3al/WEIZ8gN5Z4BgqY8H3762sJxwjLQq8NjA/Sv8w ovyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763109823; x=1763714623; 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; bh=CZqdt41d+LPz+pOMoPWH9r9sMNv7qqAmbnlAWDdsj9s=; b=T9SxfoebkwSqLAy9vv2P2y+KMo25Uj0hQQGytiHZYxF5YEgtDA+Wji9THFIchwBO5M hHPixKzZs0zFjKKW2ofxEUtq1i+jz2XWAnZuzFw8CEXjsKGW6Iw6ceMDK/7XuF5CjqMO w36DpAK/lWnnRXMzG3tVGVNPkwkGppRAmw2Bo7gVPn3YNvu9ixuLH/R/z5EKwuT+Pb1S CgGL4CeQjVUEz5aklw6w4KjdsO51w8VO4VQDS+Ag2OyCtujiVNPxKzrBU/wsxEYdK7A4 vj2nnUjg44QrQq7pZni+XD13JyjpiygjD8JE4oqA6vUnFsBIVd5k70lxBuePZiy9mMNd USiA== X-Forwarded-Encrypted: i=1; AJvYcCVgoMQJBAZ0Y1OgbwPJ2iD24Krm07nc3RwG2BYvaZ6pgmZuCrAtvXdDu/wJ92hSOuSXtI8tS18LFZRzXaE=@vger.kernel.org X-Gm-Message-State: AOJu0Yy9OiOXwteMHYhsZ0P9MY/kAWdnxJh1TGsUP8mBLRNjW1bisVbj bGpAyvltO8P1ibpNOqNRy2ejVWebt9RNnOdIzqI7ksjdXscTrmVx1KBV X-Gm-Gg: ASbGncsnh8HrOKK2nJY8jEXkZsClf5UQqjEbA/9JJcV/1ruCpT1RHaw2NHR97ojgf+c tAtXGd1jv6W7InBuhVo7GyWrbMumGiDTaIUQ537Rezzz5Kj9gFnrH8e91gUD7ffKqwisfs+2iX0 GvDpamtsl3aHEuFuRxP6YU8c+bdHN/Fk+6COhy+dPWrYLI7mqno9xdISbjmPFW/aI0wWIKsy3qt x+51w92ipbwELkaWTK38RY4Yoh+296RS+b9/xYJKRtH/HtTOI9SBZBLGbBWhECZehJ6KNxDEAmK 8/J803FUL2Q+CLCPwgXe6UR5NIWvRkvn7vqCfhRm0xrUaShfh/93N4In5QioecSuR5liTVkqonG xpw+o24zy5VVikqIwLV1L58IuMXBD654t6hDdegSGtL1F1RhxHX7O5cFX8F9aVYGeig2oIz7/iC sqptL8BoqUUGWFRDs= X-Google-Smtp-Source: AGHT+IG9/SC6VdPA1FDIVemhgKL/bLY9YjlGaqmfBfHgryKUgf1+YXYjJdmBmW+U8go+rXobjJicqg== X-Received: by 2002:a17:903:2349:b0:298:5abe:4b1 with SMTP id d9443c01a7336-2986a76bc5fmr23755615ad.52.1763109822755; Fri, 14 Nov 2025 00:43:42 -0800 (PST) Received: from localhost.localdomain ([240f:34:212d:1:4f6a:b780:1077:5032]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2985c2b0d17sm48880405ad.72.2025.11.14.00.43.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Nov 2025 00:43:42 -0800 (PST) From: Akinobu Mita To: akinobu.mita@gmail.com Cc: linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, akpm@linux-foundation.org, axelrasmussen@google.com, yuanchu@google.com, weixugc@google.com, hannes@cmpxchg.org, david@kernel.org, mhocko@kernel.org, zhengqi.arch@bytedance.com, shakeel.butt@linux.dev, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com Subject: Re: oom-killer not invoked on systems with multiple memory-tiers Date: Fri, 14 Nov 2025 17:43:15 +0900 Message-ID: <20251114084315.155333-1-akinobu.mita@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Regarding the issue I reported where processes that run out of memory cannot be terminated by OOM when demotion_enabled is true, this can be avoided by not demoting if the target node does not have enough free memory. Specifically, the can_demote() function, which determines whether or not to demote, will be changed to also check whether the target node has enough free memory (for example, whether the minimum watermark is exceeded). Does this change make sense? --- mm/vmscan.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index 8890f4b58673..63d751e54b08 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -356,7 +356,20 @@ static bool can_demote(int nid, struct scan_control *sc, return false; /* If demotion node isn't in the cgroup's mems_allowed, fall back */ - return mem_cgroup_node_allowed(memcg, demotion_nid); + if (mem_cgroup_node_allowed(memcg, demotion_nid)) { + int z; + struct zone *zone; + struct pglist_data *pgdat = NODE_DATA(demotion_nid); + unsigned int highest_zoneidx = sc ? sc->reclaim_idx : MAX_NR_ZONES - 1; + int order = sc ? sc->order : 0; + + for_each_managed_zone_pgdat(zone, pgdat, z, highest_zoneidx) { + if (zone_watermark_ok(zone, order, min_wmark_pages(zone), + highest_zoneidx, 0)) + return true; + } + } + return false; } static inline bool can_reclaim_anon_pages(struct mem_cgroup *memcg, -- 2.43.0