From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) (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 0AEA136E48D for ; Wed, 15 Jul 2026 14:36:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.53 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784126217; cv=none; b=A394Wn7HeWY2zRzzCyFbcwhVVpgt40Wn8qXNf9707UElvVcjUOhAlCxiJL/eAOC3hqt6Iq1ixofpCQ+uNKCMdx4k9fsztbjxbeMv/2u8IaArGqh/E+ahcSOaDjc64kLHggjsJiC5xD/JTZ+y9mmo1mXQiLv+yzuXa1rQ91BDins= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784126217; c=relaxed/simple; bh=9CpAbW3xqpmuvRIVnmibxo9eZmJco35EHQLAosA4UFk=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=ZFqnxNBR59n+hPZEK4NwFRunOaT71703liflOC1VvgEspMiQG3z6y13vKCwHbIg7pR2KAAwKA7L6B6TaQ55v/vRdTGLwzgt0uMhzZnZZjgvHQ9qvXKegMpdnHdADDqKendYwxAISDbj3SgyumME2Pg+W5h1jFzE1LzSOT+XZFeA= 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=pSy2yO49; arc=none smtp.client-ip=209.85.216.53 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="pSy2yO49" Received: by mail-pj1-f53.google.com with SMTP id 98e67ed59e1d1-38e3617ba36so195374a91.3 for ; Wed, 15 Jul 2026 07:36:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784126215; x=1784731015; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:sender:from:to:cc:subject:date:message-id:reply-to :content-type; bh=RvQ8OdPR9vpBhm+L/rEfAflfgo+Qjs2tqwr6l/qMLKw=; b=pSy2yO49TKmMBrLFIAmwxNJi+8r6IgA7iy9XV9Wtj8qjAK6ZY2vh48R4EuOGU4PyUd HseirFJ3yALgDY0lf3rLSVlzcCHQF/I2tI79cnWTzMzv4y+0ahZQwvMzcP8wSEk+aIdp aKFONPdxolrVFRa8HodFm4O/prtcdDQXG875dI15ODptLuPOR5Hxe3SJAze+MwhCMqVQ 5RSSfKV9HPvlXjwe3kQIIeiktuw59SYK1KqCX9As5IF5/5GxcOTanEZwEFu6MPIKPAQV f7XJAfLFclrC9TUa4Wi8YFRI1+c0dysgB4JO0yEm9bRhvekkPEPdMtt3HqS9P7Pz1ZJQ LMpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784126215; x=1784731015; h=content-transfer-encoding:mime-version: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=RvQ8OdPR9vpBhm+L/rEfAflfgo+Qjs2tqwr6l/qMLKw=; b=ZkvlzNkX8mtajqQqlmIm/wqJjXDsAgO2p8OVZ3wlkcdGM4BsEp+00MrliDHUZmSNnD ecFjbxd1D1OAuy5174h01UfuM8FQLVNa164W0BWvcuetwxwmGp2pr8xWGDsYxmuIyO6Y 6XVivkZY8CFAykfI24XBPF3Zmppi9zQxoN+HeR209g6MzwEPBMK6W+TIUReNx7o98tHx PhPCr2Qq+ylVOVxaXJsnPtznnnXQLqZ2i/AILV0KVEbFxTClakiqTMKfxWn1V08NtH5d njuTE0xtZIcVxtc8VFFxhJtTCWbhrc6tHdIJ0M4WUoau75rAocCdtQQgeA3e5DrFWeEj 8mig== X-Forwarded-Encrypted: i=1; AHgh+RrHVGJ7jzkJCqvxerNgcNTeJ8SaKNs7ykz9h10Smrg9LkCxNFn/CuaJTyzPPcnzNT7gROoBSNg1ECWaHrA=@vger.kernel.org X-Gm-Message-State: AOJu0YzevGTpSNy8V41jFaneqd/AwtCZHEEGUzghbgyFIFJ+acpGgkaa IfC8WztPJweWx6ddbsYnPZZrR1K8ju9Sjgg1tYPfnmTn6rCkhmHYQFfy X-Gm-Gg: AfdE7cns1pnGRCnbsRlJfOaqgEG5NhWpbLOU+MMN156mICnz2gdH5b5JuL7rFK2ANck fP0mt/Spigg2IbkkD/knFxGJhnKGS2MQaysVOh++zAcLBd4SfrKqk8VHZH59uhxz0qRNGyidzp6 Y+08F9XTotjwLy9f/62eVDKGPJeDjHJpi9yb0iBiNwFswXlsq8xigHT+mK15aV9t3A8RS30wHYJ M4IASMKoInOTx8MHd3bHq7awMoHzinPX3fkL0xcPsO3ukokMIH02nq+FU90TuLARaOvRT3yio+g +smceKgnXucQ+92BxFsmCXZgoqocHcTc8DFrhXzpGGgWg7qsXBrtgdhpJQ0Sy65aZxCvCGrMmYG o2WR5uElV+TYBJKrUyfqjK5kXXrTRRi1TWKMm4JqHVamtUWDLQcQr0luGnYvv0ejAofHQfJp6mC U808nXZN8/4qlt4BnkN9l1vhuPgPurVy+xHlynWaQHxPo/XYkApew= X-Received: by 2002:a17:90b:2544:b0:38e:408:9d7d with SMTP id 98e67ed59e1d1-38e1af44e01mr6899197a91.36.1784126215214; Wed, 15 Jul 2026 07:36:55 -0700 (PDT) Received: from localhost.localdomain ([2406:7400:90:2db1:3066:c473:74d2:497d]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3140e4fd3e9sm2020161eec.1.2026.07.15.07.36.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jul 2026 07:36:53 -0700 (PDT) Sender: Deepak Rao Gaikwad From: deepakraog 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 1/4] mm: vmpressure: scale sampling window with machine size Date: Wed, 15 Jul 2026 20:06:41 +0530 Message-ID: <20260715143646.15828-1-gaikwad.dcg@gmail.com> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The vmpressure window size was fixed at 512 pages (SWAP_CLUSTER_MAX * 16). Scale it at boot from total memory and CPU count using the same fls-based formula as vmstat per-zone thresholds, clamped between 128 and 2048 pages. Signed-off-by: deepakraog --- 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