From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.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 E23F641DED1 for ; Thu, 16 Jul 2026 11:57:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.46 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784203072; cv=none; b=nM6BYRgrV09nOdqXdbsTSLuzBBtSldRyOiMw0k/5ZhtVa+eO9W26QRnCJhUbEp3Z7vD10ZU19Ty+ujSzhZyzqeN4vcmF0xK9+gKo99k+5sSUCnb2kN8OiQvmbD4iIEaSyrvCfeeAO1DgVhNnXPkYb7Hdq140WKoUUp1ZpYL1XIQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784203072; c=relaxed/simple; bh=q1W6tG7kYt/OwSaGrwjHeBrDoZTRp29tCf0JHkE+gSY=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Abn552/7OoT21kiJhP2jiuyLa8ncKLTaXcI1MaWd7CR08l4BAGwkqkgucpnigA+Dyn6vEIDPQRXFHcqdFw1D4Kz5fkR9JsmzF2ItruamSdN9oC2VXF+va9OaJ+T+/B7TBL3BUd1M+unFopjiq3V0czpQdRViBrHKBiO8niyReEM= 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=Og74CBEL; arc=none smtp.client-ip=209.85.216.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="Og74CBEL" Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-38e42560ebcso180606a91.1 for ; Thu, 16 Jul 2026 04:57:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784203065; x=1784807865; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:sender:from:to:cc:subject:date :message-id:reply-to:content-type; bh=T7BZuoI307tBezRmKGV6QjCvxEl1tGf+05F5S3uKZHA=; b=Og74CBELAPyyvCpDRsIVz3d5v4dXKcvyvKe40rHCWlpngNhbK0h4u9ybwn0yjE/wsO M6KRbgDK+lu3ViLHpAsrvU/nLtVaZiK+dwgcduwegeviRge/GhvYu4FSMC1it2+zbqSk +SNbz3WKsqfKxghbzj/lCKS2t56PO3QJR4ZehIUokfUG0RN8PDaTVyoctT2qVrqruwVj A+1wyLONsszIDh/e1R33L1t0wMLoM8eyMYL3GShIdf5y/N3io7crHza/0zLK+iPbpAhr I0ZLPqwgunMgfKhEGfzsw2TgixqAB+y8ImP6JOQMB1oICk4zzuG8EXK5SNrJdBvIZrcV 6OxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784203065; x=1784807865; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:sender:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to:content-type; bh=T7BZuoI307tBezRmKGV6QjCvxEl1tGf+05F5S3uKZHA=; b=BPvudnP31nvBzC/8uu6oEPOEnOxgPFFjbvNXo8QID7Wh//a8oHM4yqEho0HAApz8Tq PaG01S+1zn05ZOmNwEt/HR6Xxhzt9HM9yXfkW44sNOhuBiumhLmm+POASP1EHjH+YBH5 es1IX1U0qaBo52yDXXPxX55rZrFT83NxMXsU59E0f4/kgfyFX9gKflXMNEU/X0FJqrFj ypFSTg/4buBCn1aX12eLOWWGcTcVjGzQA1VMc75wS9OF+e162Wz7xHjzp0jIruylQGje vFhA1KA0883He7bjrNYqHIGmiL7HNg9V4zHLE6fKN4l7jvWJ0FqN0ehojwmSUA/0dXWN slQg== X-Forwarded-Encrypted: i=1; AHgh+RpAnnLQqf2HnECJvHjIuqFaowil9/pJ5jsAreVF262pdFComvis79Osw24lH81W6dDPSAmiU4oFMFxv8a8=@vger.kernel.org X-Gm-Message-State: AOJu0Yw2QXMbB81JJbQiXyUF/LfviYlb8TmpiEtAU5lTvXRupIJIQr1Y e43x0czD7KfrlQ1ri3EGcggbwgRlJcn7zHgfK2+gYYmJPtg5Xye5bSd9 X-Gm-Gg: AfdE7cmSfa2IxPADD2YDWdsXe2M8OaJ9B2qL9dRNYE+jQszSDrr7WVwK8v/xfppLH18 3FVqxdu1Y8+q6aVNQkG5HsS1lk2slzOTkMLF6R+qX3ikX7N5cqzJHkwrxx5pz63lAjXLIOW8Lzq nqXghrrbiDCUnnPJ4dhtLoM4riq+zVoJP3LM4c/B10VuNKzpeA7i7nHegswiW7fLUYHKilDFeU8 lBmYbbW77Iu1oaVxyCFX4AO/WJbpUZ/i+loFOGI2M53LxJR19604xl/UUNT36d0xJEIwVjIBQiv jypLHAwvTCd+BxHckmYkrM58BlN/xTRDa5Sv5AMgYgst9fWWW/mUZZ9ycuGyCKdnGZcvpi1Jy1A k/chyTQ6SGYEJBT5U5dmlXBlsVWAFw0rC2Puk2SvKAbgL/apLgjaqWWktL7ngpvmsGqtYO8TRpr 234ATkEywni9ylDJj8fmrMgoW8lqEmmgDanqnCcVDE X-Received: by 2002:a17:90b:2f8b:b0:382:3dcc:1487 with SMTP id 98e67ed59e1d1-38dc7b3f5demr19684631a91.25.1784203065127; Thu, 16 Jul 2026 04:57:45 -0700 (PDT) Received: from localhost.localdomain ([2406:7400:90:2db1:9c31:f107:8086:4204]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3140e6ebe98sm10920690eec.26.2026.07.16.04.57.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 04:57:44 -0700 (PDT) Sender: Deepak Rao Gaikwad From: deepakroag To: Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/3] feat: scale vmpressure window with machine size Date: Thu, 16 Jul 2026 17:27:30 +0530 Message-ID: <20260716115734.80909-2-gaikwad.dcg@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260716115734.80909-1-gaikwad.dcg@gmail.com> References: <20260716115734.80909-1-gaikwad.dcg@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 Replace the fixed 512-page vmpressure window with a boot-time value derived from total memory and CPU count, clamped between 128 and 2048 pages. Signed-off-by: deepakroag --- mm/vmpressure.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/mm/vmpressure.c b/mm/vmpressure.c index f053554e5..8925d4ad3 100644 --- a/mm/vmpressure.c +++ b/mm/vmpressure.c @@ -33,9 +33,29 @@ * SWAP_CLUSTER_MAX, it makes sense to use it for the window size as well. * * TODO: Make the window size depend on machine size, as we do for vmstat - * thresholds. Currently we set it to 512 pages (2MB for 4KB pages). + * thresholds. Scales with CPU count and total memory at boot. */ -static const unsigned long vmpressure_win = SWAP_CLUSTER_MAX * 16; +static unsigned long vmpressure_win; + +static unsigned long __init vmpressure_window_size(void) +{ + unsigned long win; + int mem; + + mem = totalram_pages() >> (27 - PAGE_SHIFT); + win = SWAP_CLUSTER_MAX * (unsigned long)fls(num_online_cpus()) * + (1 + fls(mem)); + win = max(win, SWAP_CLUSTER_MAX * 4UL); + win = min(win, SWAP_CLUSTER_MAX * 64UL); + return win; +} + +static int __init vmpressure_win_init(void) +{ + vmpressure_win = vmpressure_window_size(); + return 0; +} +core_initcall(vmpressure_win_init); /* * These thresholds are used when we account memory pressure through -- Deepak Rao Gaikwad