From patchwork Mon Feb 19 19:44:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13563022 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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A27B1C48BC3 for ; Mon, 19 Feb 2024 19:45:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 07F1A8D0008; Mon, 19 Feb 2024 14:44:56 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id EFA1D8D0001; Mon, 19 Feb 2024 14:44:55 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D9AAA8D0008; Mon, 19 Feb 2024 14:44:55 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id C52C48D0001 for ; Mon, 19 Feb 2024 14:44:55 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 81D6F1403BB for ; Mon, 19 Feb 2024 19:44:55 +0000 (UTC) X-FDA: 81809581350.14.CF0F59E Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf29.hostedemail.com (Postfix) with ESMTP id 8A43F120016 for ; Mon, 19 Feb 2024 19:44:53 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Ml2xbaVH; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf29.hostedemail.com: domain of sj@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1708371894; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=rwELeJCpNTigCYTVCX3u3te/203k+c65c/t/DHkAQWI=; b=yU01rQQSl80BgaD1w93rMBzUhZmQl1wp4cX1S+rT9NfDnnbbJJBqP69aoWV9pYrBKJkeXW K2Qw7pz8zwF3QN4X7EeDcyrnpFarXsRF0K6QuE/gC9wxTVpEZFb6L7KQeKVFvs8HZZQs7m qH54DVSsXpIudc0yv6dZ/foBf9By/yc= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Ml2xbaVH; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf29.hostedemail.com: domain of sj@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1708371894; a=rsa-sha256; cv=none; b=irvCVXv0ZPZd6WtY7XuOLVoPGK+vgtu5ijHKNOg+4IxfKds0AnkHNMFNb+8QaahCH3FvvK DWGnCSlw89j5CdwB0LwCen+erWIiTEG2q+QiBfjz30GEJ/pSd3uOGLN+6omV0IRwHxSnuc fwNMXi7I6oFHtKPGY2YAphD99YOA3Dw= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id DAFB2CE13D5; Mon, 19 Feb 2024 19:44:50 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C78DEC43390; Mon, 19 Feb 2024 19:44:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708371890; bh=tG3S12R9lWJQ+3nlob/l1OneJpRLcwIKt8aIF6Enn4k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ml2xbaVHRr850LD2Xo3UE5RqNzk6jup3abKGVZsJufjCxh4FJL1I8ZLvAZQoyItue HsySrTPrtzqdevNi77IFL3ZvmPJis7apE/tV6U6QtXX2SNDv5FT/sKqi2/hKWVjzoe gdoaRsNbvsNuyUEd4Lq3oJ5reSR7mh+S046aZHsPibxoaN4WpBJaxV5l/AHDuPka7n HQ2YIwBqI3s/axquI4sbDmMIpgQRcTMt9Ac6Ol1oXPTRv/6lWDDkUuFj/3whWZSJmf hHiEKQnRplZQhMflDZlQr8UmQs0rNWwf6LwEEx3x0UJg11hlIUZCbjrkPrqcf9wZES /bSAM8OTHrttw== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 19/20] mm/damon/reclaim: implement memory PSI-driven quota self-tuning Date: Mon, 19 Feb 2024 11:44:30 -0800 Message-Id: <20240219194431.159606-20-sj@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240219194431.159606-1-sj@kernel.org> References: <20240219194431.159606-1-sj@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Stat-Signature: cjjdgme1p6enr9ojq8h1sgwdr5t43phh X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 8A43F120016 X-HE-Tag: 1708371893-732975 X-HE-Meta: U2FsdGVkX18ORgs1bkWSiPpeMEL7cT+KcasNbSSrl5hrmLK7gyJ0/KoBWA7NjY8oAFKj3+f4ymD65unHl1/aPdHHQACuatCbHQhg1k9Clbd4mKWd3JebITwPmfVLYBXwV7levFwn7F/satBrgc9Psk/DlD/g/w1NsjMg8n9phatzCYNMpSiXKRxJQsg6qrPZMvyfF/eERBZPGDyL4ej+EKgJT8M6fmbQmfR6EY8q4WMlhmVzktPn4jsH7A+7LZPltM9rGRbOcIOHbIkXX74UZtHvViIDG3/VGe1d0hwfEiuUpPsZvpoyROKP+Bm2NN1QcimdfPDoDdBBvPA7fStY5532jWp/msZbsVFy0vGbX340i580jsXxXfT3NeBTtaYYj0B3Y+R+OMOLrooQZqonJb7aC3f6aRV92H2aR58Y4So7HsfNAwsSGZxakbix7T/6FAEU4f20a57ByQQNv0JqRq7FM396m8Uyj7Re+OEOSRJQj93p6RhkoL5LrmecmOOVD71e36afovUc7ah3FUhGSqYc345ZRjN3BlAaI1aczu/JkQIkAfNZQPpcipC5aEgbnhyRGwP8FTLDow9fQKkItxygHGoie6DHiezAn107OLsCFQJAI/2WEl6yjK/ikidyLJO118LrW2UU+sai0kza+mLE1M7gs+XJvq+1nDeFroYGrsIimUIXgC6NKHf4HN3e/ADzic9ZW8KU5KIXsFnvzTKjv28VhWZLbWP4C8EMKb0hxTjdaE374zVR2A+A94pUm7UwVOoDZZw00n/hDT1HQKhLq8z+3wqZzR7iRHBxheWQNoM/0tjAKO6sLfX9I/qhP13Q9KCCZuFewfVJemfiGJrkFQ+31gmYkOMvFSTuTCpdIn+h3S09JaM9VFSDUnx0WpNBY9/to/Tb8O7y/nE2t2NmlV7e68yU7TQYHi49Rmdy86QirE1RE8AlcbWwnseOpTI7eb9IaNmZDCPqrkv MR8oWdfc OUWHOZlVB7whfg8l8dqw/4+oJVZ5VI3EuyIXGT9LXaDPqtOoTAcNGb1yaRdsQ58WGFUeILofn5nk7cBUJRreP2mVv/u6R2CuueKqx8A4XxTsho2XDF2Wa88BtJ8ApkrA6aGQjlRa282wJooHrGHxcDs9HDmHj4d9YGSb2fUz6z9wTIwW1OyyMJMOPLZf2baOdlU/Vdp3/Yfh+nOHbsBR0VjQikX2dS8LuoM1q75VJf0bEqi8= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Support the PSI-driven quota self-tuning from DAMON_RECLAIM by introducing yet another parameter, 'quota_mem_pressure_us'. Users can set the desired amount of memory pressure stall time per each quota reset interval using the parameter. Then DAMON_RECLAIM monitor the memory pressure stall time, specifically system-wide memory 'some' PSI value that increased during the given time interval, and self-tune the quota using the DAMOS core logic. Signed-off-by: SeongJae Park --- mm/damon/reclaim.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/mm/damon/reclaim.c b/mm/damon/reclaim.c index 9df6b8819998..9bd341d62b4c 100644 --- a/mm/damon/reclaim.c +++ b/mm/damon/reclaim.c @@ -62,6 +62,21 @@ static struct damos_quota damon_reclaim_quota = { }; DEFINE_DAMON_MODULES_DAMOS_QUOTAS(damon_reclaim_quota); +/* + * Desired level of memory pressure-stall time in microseconds. + * + * While keeping the caps that set by other quotas, DAMON_RECLAIM automatically + * increases and decreases the effective level of the quota aiming this level of + * memory pressure is incurred. System-wide ``some`` memory PSI in microseconds + * per quota reset interval (``quota_reset_interval_ms``) is collected and + * compared to this value to see if the aim is satisfied. Value zero means + * disabling this auto-tuning feature. + * + * Disabled by default. + */ +static unsigned long quota_mem_pressure_us __read_mostly; +module_param(quota_mem_pressure_us, ulong, 0600); + /* * User-specifiable feedback for auto-tuning of the effective quota. * @@ -198,6 +213,16 @@ static int damon_reclaim_apply_parameters(void) &old_scheme->quota); } + if (quota_mem_pressure_us) { + goal = damos_new_quota_goal(DAMOS_QUOTA_SOME_MEM_PSI_US, + quota_mem_pressure_us); + if (!goal) { + damon_destroy_scheme(scheme); + return -ENOMEM; + } + damos_add_quota_goal(&scheme->quota, goal); + } + if (quota_autotune_feedback) { goal = damos_new_quota_goal(DAMOS_QUOTA_USER_INPUT, 10000); if (!goal) {