From nobody Mon May 25 08:10:54 2026 Received: from mail-yw1-f195.google.com (mail-yw1-f195.google.com [209.85.128.195]) (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 23DC237C103 for ; Sat, 16 May 2026 21:04:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778965446; cv=none; b=DieHHkeuDixrJGVQ/V7s+XTaDTDaRZ9/TeXW1yYrDbLin6XU1WyRfwFCDEv0v+SY4uQT1EVdkmL+bfgUydygKVc8/A1idtIWWUb5D7yTYgyS6bE+hZrEwWzUVx0ElRoqnGvpdZZ9vkP1eQ2ruteU2oJ/kB6pXA2l7aQnMkLxXK4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778965446; c=relaxed/simple; bh=9ehoVGHCch2YDXFpAgGWGiRbcBZMIbDp0HeIrubwg+g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IuwW2/De281P1ElNwk3yQuUdXL5NIvqdouN9CwD9MaRmkZt0px97HqnL5/WoFEHZ+O9JNjB3LMKZf6CqmgDztns81AYic8FHd7oTq409479M3zCKLqE0rlkFCAfBslDU15qRxXoAxlo87ex7CyclU+PP2OFLSqXPTKkhMhOVjJU= 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=GlCZE/16; arc=none smtp.client-ip=209.85.128.195 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="GlCZE/16" Received: by mail-yw1-f195.google.com with SMTP id 00721157ae682-7c307937816so4789317b3.0 for ; Sat, 16 May 2026 14:04:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778965444; x=1779570244; 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=BHb6DjRXqj9xDQrypI0jK8ctMTDK6O2uioTTtx6jNrM=; b=GlCZE/16pFOKeErCrhmEmpO7nMBG8qrsunEUO9E14hquTV0Ew2Ty5Hi9PZP2pNqsZa WCpBM1Sb74N9URMSESPHT6GW7aCwhE9cFri610Kw9O5rUe0QXGWC5M3cHg+8b4riX78j XGZcoXXC5idfI9Y5BDR/OJtCVWP7k47af78gc797xdhi/NCFg3gFAiRCHS08pmFywKkt VD8HLRVStvkBb9bVBIRLYcjQWHbQHkHfSiLjV/9FlJ+Aa88cMUmy5F4ZdpP8ZskKifJO MrNDQnQCw3nDd84teTws2kHsPYXluDBkGQ7XGgn/cIAihG3JUUGyIDMRZB8BoYa6VDFl y3ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778965444; x=1779570244; 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=BHb6DjRXqj9xDQrypI0jK8ctMTDK6O2uioTTtx6jNrM=; b=RebkklYT7/cTVtXti7wW0Q2ugqGaaXbmktO2yCxH89Jj1pKFCpM3QGah2BlTUYKQoD 45NyqIy0ryPPKYrdh9gSnG/oAce+EEQBHNT0swe3sJklUxH0KrqIfReVIU+y9v281wl+ FNPm5W/DX927MHG0+wM/5goiOlEe9VLBdIVe5MuyY7j2aAXjAP6igmm0j6/8mbW4Rdon WrFHuUOie1s7qkGsUW+c+qypQbE0FwkJaVzc8iemeSBeSpTa3VQRMAFimHnWdCcQvVA4 sN2sqXvgbA6zMZ4VXJQWiisUbA4lnVcCAkd9gZOLb6W2iFzhMLywsfUYS6R8FgAueM5S X0aw== X-Forwarded-Encrypted: i=1; AFNElJ8QgzG6/DcwmnPXyAeAgzTae3GBklVj6WJAwLJEMNMzn5ctpm/pGVmuQjgR5aJEqvD330E1XqjL4aKlcN4=@vger.kernel.org X-Gm-Message-State: AOJu0YxxwZXnvx9ciW3KwITEdW8aPh1XNi4FEqJb1MghK/EBvGOPaBeC 9rQ8WO2MhGV5377sx3aKpwSxInpMyiwif65hAxKdS3A6ZcKvsKN4eVw= X-Gm-Gg: Acq92OFtZeAYfxsaa0em2EsRGALsxJmlSIJ+rBZRWGIMB8Z/ehbDrA79kzMK75vn7mS BQVHfeYr1EluPji+TkBZ3K7M5uWFQ8vCZtCpDWcgbZ2XlFw/GY47yw/Y56LC67En+Eyy3YIBqIw 9fBMQPl3mN16B2xYQa0UpZa8GA9cIQy7d2vlWsK4bRcdpFxtCv8unDa9TCMEc//VidGy4niNWs+ zhAhEBwK3FK8pGAzIcJa8PLoT0ZEI8kvLgSABOBmtxqPLfS6h1AGUfabgSYYVnyuFYq5Ywx+kbX dsqGfQGfP2VnFwM4ZasEJeq3om9eCqL/WYtSO3UfGtmiCpykty9GjeY8JQo3wpq9Px/Usj7yiLu rzAdQye0mKS/JTFz9+NsSP1DfkHMxmQ4AhBslPTts5kcLVJV9mxXvmyfFTgTrqP8aL0hpWIrlkn KpiQOq16se2K2RRaF0m4CwAPGC104mNoQdl5upIKp26P+8nZaZ5VU/KpFFdVYaBdiMLSwRz8dam w== X-Received: by 2002:a05:690c:c4fa:b0:7b8:1b67:2571 with SMTP id 00721157ae682-7c95d1da54fmr102587527b3.42.1778965444167; Sat, 16 May 2026 14:04:04 -0700 (PDT) Received: from localhost (23-116-43-216.lightspeed.sntcca.sbcglobal.net. [23.116.43.216]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7c7f54c29ddsm48585327b3.34.2026.05.16.14.04.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 14:04:03 -0700 (PDT) From: Ravi Jonnalagadda To: sj@kernel.org, damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: akpm@linux-foundation.org, corbet@lwn.net, bijan311@gmail.com, ajayjoshi@micron.com, honggyu.kim@sk.com, yunjeong.mun@sk.com, ravis.opensrc@gmail.com Subject: [RFC PATCH 1/5] mm/damon/core: fix nr_accesses_bp underflow in damon_moving_sum Date: Sat, 16 May 2026 14:03:53 -0700 Message-ID: <20260516210357.2247-2-ravis.opensrc@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260516210357.2247-1-ravis.opensrc@gmail.com> References: <20260516210357.2247-1-ravis.opensrc@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: quoted-printable Content-Type: text/plain; charset="utf-8" Guard against unsigned integer underflow when nomvsum/len_window exceeds mvsum. When that subtraction wraps, the moving sum returns a near-ULONG_MAX value and corrupts nr_accesses_bp. If subtrahend > mvsum, return new_value: this clamps the moving-sum estimate to the current observation rather than wrapping. Signed-off-by: Ravi Jonnalagadda --- mm/damon/core.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mm/damon/core.c b/mm/damon/core.c index 3a8725e400c6b..9975f3d9ebfe9 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -3449,7 +3449,11 @@ int damon_set_region_system_rams_default(struct damo= n_target *t, static unsigned int damon_moving_sum(unsigned int mvsum, unsigned int nomv= sum, unsigned int len_window, unsigned int new_value) { - return mvsum - nomvsum / len_window + new_value; + unsigned int subtrahend =3D nomvsum / len_window; + + if (subtrahend > mvsum) + return new_value; + return mvsum - subtrahend + new_value; } =20 /** --=20 2.43.0 From nobody Mon May 25 08:10:54 2026 Received: from mail-yw1-f195.google.com (mail-yw1-f195.google.com [209.85.128.195]) (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 E6AC9379EF7 for ; Sat, 16 May 2026 21:04:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778965448; cv=none; b=s5gcYoiYfW6tKTiCZaT4Z7Hwfz84Iei2Pu1vF+0XSrEG7al/Z6OfaTGbTO9bYWCkqxUUIx1WceeCM4RIhwgn2iy8ILXBCq70w4S8xZ93uBl1LwMg/wxA/3wwXkXAT/ZlW0W3GaR8SKzMhiOf+Qibjy8e/Wt99u7Y098dfWoHosk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778965448; c=relaxed/simple; bh=KzYiajAK+nfFBai/4/fm3cADm7PKM27ScIiqlEri7s0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Erx1tDCWcpe+hzjHROapuDiW2EwGSKRzkSHkdL1KoJwHjr+BxJYW0QxVYXtP5q8dBgG3aPHjoOnEpC1iq5/xPY8ESjd9LKubVkZuTvxE1LLYKIjJnAs5e1aQZFKJBcxUkcMr5yp4a7Ox2DJvXuFuDwpH13vIJK5D3vxmR512Vtk= 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=cQ8okIvf; arc=none smtp.client-ip=209.85.128.195 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="cQ8okIvf" Received: by mail-yw1-f195.google.com with SMTP id 00721157ae682-7bd6f65c781so4949297b3.1 for ; Sat, 16 May 2026 14:04:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778965446; x=1779570246; 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=N+8d6F/ecIm4OU9cM2uGG4hmEo0TfbVFCv/yoQTzhTg=; b=cQ8okIvfH13f8sDCMwES9mmpGCysjeW46WPqlL8XwL1XYMnP2oosCjfzWMwcpQjLFn FlgTSyNZP1WrpMs68EtkODnkGFP2/IashtYQE+Sm8SoJwvhn5S2rINwFFdZTxbPeqxxP af6dvMOtZ+ALDs+a0xY+R129kwLr6dnsKPkLCKLkX3/JaCZ/ya0/Q28ovrZN+cCvBOL5 zqJEQk8lLQ+KCT40azUJNX0r3gbTLjXY6ZLUPF7k5mRq4RaeFaLI1o43TDaGAoUcNIiO TQimB8wNEDDNCRw4L1inWIhP4L9PuByxQyzbSg/3RdW237GGJfKBjykT2dNJgCLD2sHw N7OA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778965446; x=1779570246; 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=N+8d6F/ecIm4OU9cM2uGG4hmEo0TfbVFCv/yoQTzhTg=; b=GhsJc/Xc6WEM0pA1/O4JEhls3tgW+58HO+k07mzSpIuhGFuW2D51bng9uvkjGCuuTT rsadthBlnEhW5sSz8GjE8ASaB+9uKQHsbmJpfaj4E2jIq2jGFxPjdhcf0ggAAHd8ApcF leh5rVHOb3vh3rGuuSoK52HUd9DrivPFzhXv5gsGTb/6dfvUYF9B8WhXOcmy5rOX4nDr ZyZrSkkpUIh9pAhKjnkamGCp3Vl4JJYJwFdfPAdbvFySFJoyrKvu0MNlCpG9NMq6GNyh UMh2fdPZFoh5LCd01Zstq39/GD57oG043JlzUsskguuntC1jKQxZMNYhIkdCPee2kelu OW7Q== X-Forwarded-Encrypted: i=1; AFNElJ8YzOTRSc+1a/5GBqyBKnp4qQvaZw6vxvd9qpIbZIu2Uvm4PJ03S6Y7dNma5De7LqbxcPD/jU35/qp5fZA=@vger.kernel.org X-Gm-Message-State: AOJu0Yzk0ya/zamm0h3IQNelm9hqJOib1Dol0OSaxX+B/pghhI0dwwvY If8jSG0W7GWzy7wlMymdvM83aJc9Zy94fR1gn3ECtQLgPPe7xrXIJaM= X-Gm-Gg: Acq92OEWq77EhZ9yaFZL+0PdLw6V+4AihwOzTqIeXMzyYvYgl80b+og0jhPQWbZWUuh bohb8wENzY3HiulIta5BgehAL1Krrh30Ai8On8SS86mh2DysY1lNZfwlUDng5ORKkvJ0SJlafVw 2sDva8QncmZQcMl0YRHrVlChI0dgxdUSiDUhcEZ/Z/buV7cv7+l2CnJJs3/1LN5bL98er0EX7Ca 0ZUjb/Nz7Lb1lBO/3u2McFpZqVCnAdNqoZOsj0kgKQwioY4vDLYy0tQKjmHyc8iuLoTIRcxLff1 H3wVnyc5dkkfpxsllTNZiO2ZUWcwdSmYvZ6KGbbJJUMuas0Xp2fYacoW6kngy3bhpxV6owBz3Vf 6NJJRG/YmrpsDLYlttMMSgofmykp938FPK2/j4QZ56uZ0HncNCbxO5MSi442F806yqAxN0fvKx5 N3WQ4bWtU+8ETxO4r7Bx9rBms5doc6oDficDBhltgqVx7pdRXz1iIimAaXkWy4fGzELcfHFaxrL cJpyL6tiHDZ X-Received: by 2002:a05:690c:e28d:10b0:7bd:9a25:f39f with SMTP id 00721157ae682-7c7e5d8e253mr91991277b3.4.1778965446076; Sat, 16 May 2026 14:04:06 -0700 (PDT) Received: from localhost (23-116-43-216.lightspeed.sntcca.sbcglobal.net. [23.116.43.216]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7c7f4ee8726sm48887337b3.27.2026.05.16.14.04.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 14:04:05 -0700 (PDT) From: Ravi Jonnalagadda To: sj@kernel.org, damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: akpm@linux-foundation.org, corbet@lwn.net, bijan311@gmail.com, ajayjoshi@micron.com, honggyu.kim@sk.com, yunjeong.mun@sk.com, ravis.opensrc@gmail.com Subject: [RFC PATCH 2/5] mm/damon/core: cap effective quota size to total monitored memory Date: Sat, 16 May 2026 14:03:54 -0700 Message-ID: <20260516210357.2247-3-ravis.opensrc@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260516210357.2247-1-ravis.opensrc@gmail.com> References: <20260516210357.2247-1-ravis.opensrc@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: quoted-printable Content-Type: text/plain; charset="utf-8" The DAMOS quota goal tuner can compute an effective size (esz) larger than the total monitored memory because it integrates over cumulative deltas without bounding by the actual workload size. Once esz exceeds total monitored memory, the per-tick "remaining quota" arithmetic stops being meaningful: any scheme can apply to the entire monitored space and "remaining" stays positive indefinitely. Cap esz to the total size of all currently monitored regions as a final bound after all other quota calculations. Add damon_ctx_total_monitored_sz() helper that sums region sizes across all targets. The helper runs only inside damos_set_effective_quota(), which is called at most once per quota reset_interval (default 1s) per scheme, not per kdamond tick. Walk cost is O(nr_regions) at that frequency and is dominated by the enclosing tuner work. This bound is tuner-shape and goal-metric agnostic: it constrains the quota controller to physically realisable values regardless of which tuner or goal metric drives it. Signed-off-by: Ravi Jonnalagadda --- mm/damon/core.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/mm/damon/core.c b/mm/damon/core.c index 9975f3d9ebfe9..fd1db234ca304 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -2614,6 +2614,19 @@ static void damos_goal_tune_esz_bp_temporal(struct d= amon_ctx *c, quota->esz_bp =3D ULONG_MAX; } =20 +/* Sum of all monitored region sizes across all targets in @ctx. */ +static unsigned long damon_ctx_total_monitored_sz(struct damon_ctx *ctx) +{ + struct damon_target *t; + struct damon_region *r; + unsigned long total =3D 0; + + damon_for_each_target(t, ctx) + damon_for_each_region(r, t) + total +=3D damon_sz_region(r); + return total; +} + /* * Called only if quota->ms, or quota->sz are set, or quota->goals is not = empty */ @@ -2621,6 +2634,7 @@ static void damos_set_effective_quota(struct damon_ct= x *ctx, struct damos *s) { struct damos_quota *quota =3D &s->quota; unsigned long throughput; + unsigned long total_sz; unsigned long esz =3D ULONG_MAX; =20 if (!quota->ms && list_empty("a->goals)) { @@ -2649,6 +2663,11 @@ static void damos_set_effective_quota(struct damon_c= tx *ctx, struct damos *s) if (quota->sz && quota->sz < esz) esz =3D quota->sz; =20 + /* Safety cap: never migrate more than total monitored memory */ + total_sz =3D damon_ctx_total_monitored_sz(ctx); + if (total_sz && esz > total_sz) + esz =3D total_sz; + quota->esz =3D esz; } =20 --=20 2.43.0 From nobody Mon May 25 08:10:54 2026 Received: from mail-yx1-f65.google.com (mail-yx1-f65.google.com [74.125.224.65]) (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 C40F737C11B for ; Sat, 16 May 2026 21:04:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.224.65 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778965450; cv=none; b=bBifFuIZGYmhtcqjqtpYm0dGxeadcmComkAv/u+eQkpGKedU1EWc8Gc8KhAyvwVkdsgj7fVVqQjE7wEBwL8C2VL4krqt8huHUh45gFBXaxuNj4ujgoYntrxbX5yG/dC+mn6kwyK+CT+1Fsze/6xg2VO5m1gPJVywD4zZnne0WiA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778965450; c=relaxed/simple; bh=A8UrwxnJyTbkNKJFRY/W/SfMc11SJ1ohzLrCgP9cYxw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Qi01bDldzaefREIX8ubdV+cHzJZWkgVAonYaW79SJhJSTkkbFYKY3t/ecBsF1SV7d0kQTtNMtaT+WrfLWga1Ifisg1IA0a61urmtKxh/BRem6YPLBWXYE40A4yfW34Soa3o3AAw0qkYZaD4+SltxYUieOYmKwGh71gZJ0l3JD8w= 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=C74aZqS5; arc=none smtp.client-ip=74.125.224.65 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="C74aZqS5" Received: by mail-yx1-f65.google.com with SMTP id 956f58d0204a3-65c3ea2ebf7so1510241d50.0 for ; Sat, 16 May 2026 14:04:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778965448; x=1779570248; 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=3O47MXZLACGVXkwBLvK8wvdJrmJyHZnllVL8QQ770hw=; b=C74aZqS508mjmVpu85NNwEXBFwNaepui0+4oOYzU449i2cx0f0tK1N0vgoOK58Nlg+ 3nF4ZeVdYWa5pAKBFPNxAj3MeuHXTlPDzn20tRiKvlXBXl+LBYYkWjfyujPX5c1U9fmA PV1+lGnkpgyoIn+dhB0+Ll2rXTDZvuTVLnWRZWhFC4qWEi3B2jCnlAQA0mBE+DNyl5SS JeRtNU3mwP+U3xR+Pevk87WwDyKnz1YnV93KADrOHobTwxhtaHiq3GJqLXP7rEyCoqAy +0fGwIs+Kue6W0o+LHAUrmzLkL5l+wdNopPQQ+iMMGU0EoEeUb1PRYCKhCAs1EtCDZCZ 7ccw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778965448; x=1779570248; 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=3O47MXZLACGVXkwBLvK8wvdJrmJyHZnllVL8QQ770hw=; b=NlUAZUUyvCs8S3WbyHm+mqD220iUir4faexhHYOToQVGFyUX3YxdcNkZrvShHCI5Nw 9BwOxUzaG54l9fIZP7cOE9hxfUI8vt1nTEyfTNKwleH/HhF6sf91OUTbvQ9l08XO8Vhy rr7DILBsgRP5ydDc+ns/W0MUBDLWfJgrHnUuFgLlq0diPcsSc/k3Qz+a02Ut3FRcqUZJ TBXZw4rAIY+HvwdXRysDlCC6IJ+gJ6Y+peHQ7E+vzsL5dfZt+LBPQapYA/MRmgGPRpll 5YU2nrpgH0QFZZGBGuiJuueh2ZsgLBTLn4sowaO8rkHj35T0jYNVKECTmHVKOeEIoEjy yIbw== X-Forwarded-Encrypted: i=1; AFNElJ8piJYFetCHgaVFRksbfw34IfznsKXfTtX6CXW5Z7YWmxJsKvPHFEkEeQNiIrl5oaAwivaFdYl7lwYCsU0=@vger.kernel.org X-Gm-Message-State: AOJu0YyurvcVm68MW75USWQUW4sNwDR67rSMtnlvAvsohUT6lmgabzLg z1z8vqTc4HsM2hbrm1AdK/V0/voW0Y9GvfD6o4xUESJJMojq4Kgv4/E= X-Gm-Gg: Acq92OHQw62aJ5/9NBlvGubJSLkR/yodx+YVHHsNGCNxNlYUAvkFSY+nVzDc0IpAUQF 5sBVCEGKD2yaJ/ixhKsNFrmt/CIuXoGa44S77LkDBp8obO6xdxwx3deWzbryjU2SUqAJplNW5Rb cqWodfVcv+ODD9Cw7a+Kcq5g7bI3Lu0hVnbG/GGN2yX/itEwLxn9mTUfty2XlGuPgPas/up4d5M NrXWSMyevfPr65+OI6fc5tHZlsHeKUV5hG9Ch8AnZ7md0/AgGNM5db3BUaAPjkHvkfZnG1QRGsA yH2YXZA6vnTKtn7ngdB9bjt43Aml46wsqyfMrhB2UYjW6m50JeTRRw+hsnUAr95XjeEjbrVNBjk isNp5PvQL7gqtTkWz3eU52JYjGfN9rWzZ7w5b/beQkNfjWPqzCNvFSzUjT4M8RqXUBi3ivYYhqP 57Ab84qzv3wl0ZOG5pfAWm/1otu6wK8zshZ/jBJV5CfmSXeXUPP7poB/o5K+uXCx0pMMbIpnkET w== X-Received: by 2002:a05:690e:c43:b0:65c:1302:ee48 with SMTP id 956f58d0204a3-65e2286ae3cmr9596405d50.54.1778965447840; Sat, 16 May 2026 14:04:07 -0700 (PDT) Received: from localhost (23-116-43-216.lightspeed.sntcca.sbcglobal.net. [23.116.43.216]) by smtp.gmail.com with ESMTPSA id 956f58d0204a3-65e0d86bc02sm4342876d50.4.2026.05.16.14.04.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 14:04:07 -0700 (PDT) From: Ravi Jonnalagadda To: sj@kernel.org, damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: akpm@linux-foundation.org, corbet@lwn.net, bijan311@gmail.com, ajayjoshi@micron.com, honggyu.kim@sk.com, yunjeong.mun@sk.com, ravis.opensrc@gmail.com Subject: [RFC PATCH 3/5] mm/damon/core: floor effective quota size at minimum region size Date: Sat, 16 May 2026 14:03:55 -0700 Message-ID: <20260516210357.2247-4-ravis.opensrc@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260516210357.2247-1-ravis.opensrc@gmail.com> References: <20260516210357.2247-1-ravis.opensrc@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable The CONSIST quota goal tuner initializes esz_bp to 0, producing an effective quota size (esz) of 1 byte on the first tick. damos_quota_is_full() rejects all regions when esz < min_region_sz (default PAGE_SIZE =3D 4096), so no regions can be tried and no feedback reaches the tuner =E2=80=94 a bootstrapping deadlock. Floor esz at ctx->min_region_sz after the tuner computes it, guarded by an esz !=3D 0 check. The guard preserves the temporal tuner's intentional stop behavior: when score >=3D 10000 (goal met), temporal sets esz_bp =3D 0 to halt migration; the floor must not override that. Signed-off-by: Ravi Jonnalagadda --- mm/damon/core.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mm/damon/core.c b/mm/damon/core.c index fd1db234ca304..d33c4360cbd60 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -2650,6 +2650,10 @@ static void damos_set_effective_quota(struct damon_c= tx *ctx, struct damos *s) esz =3D quota->esz_bp / 10000; } =20 + /* avoid cold-start deadlock, but respect tuner stop signal (esz=3D0) */ + if (esz) + esz =3D max_t(unsigned long, esz, ctx->min_region_sz); + if (quota->ms) { if (quota->total_charged_ns) throughput =3D mult_frac(quota->total_charged_sz, --=20 2.43.0 From nobody Mon May 25 08:10:54 2026 Received: from mail-yx1-f67.google.com (mail-yx1-f67.google.com [74.125.224.67]) (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 6DD7837B3E4 for ; Sat, 16 May 2026 21:04:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.224.67 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778965453; cv=none; b=EwiM5VsguOaJHw4gf1fdQbZ7fddy+p/fdMJZF5iXScfHU7EhG25JtM1068/Ar7Wy/xsWjcNlU138cjiWwW5iXJozMVQmb9l52C2OpDWAxW4H+7ymSaQCLwlQK8TXIGhzg0dQFgNyj1pzpjyDlPIs9Ktgqt6KFcymzNhILEC+Vuw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778965453; c=relaxed/simple; bh=GEYyugiLC/39SzrjBwPLIt1vcjzzwMWmrLt7pnxaa/Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Nkh8e9NV2O456/rEunRR1SB8Sen7RbeKwB++wTY9nAEi2nWzXrCS/4XvXPz5Dd8qDaMnv8ObcBWYRlDZMnzMIeBO2pFknA4/ySo0LTZIYyRRVXGWanB3hyQSqn4MojgSA+GdrmdKKcw2HyzXC/z3eTGSJJKEi3Pk9GQ8skZncGM= 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=KK8IH9xy; arc=none smtp.client-ip=74.125.224.67 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="KK8IH9xy" Received: by mail-yx1-f67.google.com with SMTP id 956f58d0204a3-65dbe04fc1bso1219518d50.1 for ; Sat, 16 May 2026 14:04:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778965450; x=1779570250; 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=9zii2AWb8oMGGjdpxDAORttiwCSLXiloFVUhqxIkFOU=; b=KK8IH9xyO442jO+DfF0hPhh8hM7JhdJ7DmWo9B3bdtZ89XqZvEc6UW5TtJabqKw94q ZN2mYSI4unPySPz6R2XUdbOHoxqZzj4Lixghcl8DScOsxm7QMn9nm+6rs/L9oKSUTBZJ kokK7HygJTKadjDDRkXzc8VgGDCvAmH9Z6C41di1bEMluAcQhgvZ4BvPz/rIpFA5Rqqu idOY3AqCBXxLuD0EXR8zR7KqYXB8s2WvltHJ1CF4Jd+niYH7CBdY65Gn4zitBkxB3uy/ SZQPr5+h28qKnUzeIGtHTj48XG+5y3z5jRv+jZprXKjrkVQvVg5r1l9C5TfT1SqVNsnx 6lmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778965450; x=1779570250; 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=9zii2AWb8oMGGjdpxDAORttiwCSLXiloFVUhqxIkFOU=; b=cI7IFB9gT1ekpErUK4JYKATOM8PNJ27AO0BzihRxSVsKjw/7MCmiAtl+5IlkD0OhBB o6OK6XtWCoVImXz915657Ur1AucHrdrXGtKkHsmKxo2QEaPSP5JEuAAbZe3ciBC9B44L lNaGy98OLgtwJwuC+OcGLXe+ET5JSxMBOlXjKu9IC6GTqSBbaLqnKAZ517JMKbpws5Rs OnatZKdIyeUoZMywEMJ6ROETQFpLTynfLgUuDi0RzxZ4d1YUeFsR0qlum8tlBRJCajKJ Dgfu1jmj3j5tvbJoFKpaYoyZJ2x26q+lLOFixOVaFTgSO/X+K37VlujznPyQFBufSvYc br3A== X-Forwarded-Encrypted: i=1; AFNElJ9/5h0Si89QEsyB1ZSPebGMS7Ksa02LRiUrTfmNSOaXy3s1LQwWHeOzY+dPgSzSFDVYURIRzjRYNMRvpLw=@vger.kernel.org X-Gm-Message-State: AOJu0Yx/zMXwNsHAdEI4slSYQH2LKF6k+y6Fkb0Xh/ibTrUo0OT3Ocyg ZgWTdycSwE1efPerY1PuVFqqwL/EnlqY0RwDB2yV+57LTHlpJh0Blu4= X-Gm-Gg: Acq92OEG2+6q4fEkLbfZYZ9G2ElDWO+VmiJiKI2gKydPe93zMgQsY4Ip4f0wGaLlQ/C 7JktAHGl7hVc0iFuQ6tp2+5y0cmHuzlu+P9SnUbcICm68grbPz1+LCvI7eP5wUotF3UBl1MWV7H PdWle5kWKk7oJezC3SgUPEgxtdil4jygP9AbC5ToJacF2I5I1qdblUn1qkrNQWMOw1n3sjhNv+B 2VJk0seLb4UOtkmfAIaJtPqMApyeeanJCo7JO717hEer7IRkFf/jfn48ywxS4AUsS4Myd+uzUKX F8racdTuf3jjuME9YGfpEUgPlfWNzvQudsFPrOA4ItTIcyzUpl+DdrdxPeHy5gq6OmBlww3OjOY EJEYMBWMdDDFoDKKbjpKrFZwp5LULkgjniRpnlsQARZpJ1jBAdsMomxVp3HLp4YM5hfn5eCdLhA ZAEg39NFkQiBBZxVFHS+34fd8k1Ps8pbojIaoat7kMgxkrUpLlnrVAlcxlwB1fMlUVTDStJTPpg A== X-Received: by 2002:a05:690e:191b:b0:65e:c81:3a6c with SMTP id 956f58d0204a3-65e226dcb9dmr9397203d50.15.1778965450383; Sat, 16 May 2026 14:04:10 -0700 (PDT) Received: from localhost (23-116-43-216.lightspeed.sntcca.sbcglobal.net. [23.116.43.216]) by smtp.gmail.com with ESMTPSA id 956f58d0204a3-65e0d86c850sm4349204d50.1.2026.05.16.14.04.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 14:04:09 -0700 (PDT) From: Ravi Jonnalagadda To: sj@kernel.org, damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: akpm@linux-foundation.org, corbet@lwn.net, bijan311@gmail.com, ajayjoshi@micron.com, honggyu.kim@sk.com, yunjeong.mun@sk.com, ravis.opensrc@gmail.com Subject: [RFC PATCH 4/5] mm/damon/paddr: skip free pageblocks in migration walk Date: Sat, 16 May 2026 14:03:56 -0700 Message-ID: <20260516210357.2247-5-ravis.opensrc@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260516210357.2247-1-ravis.opensrc@gmail.com> References: <20260516210357.2247-1-ravis.opensrc@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: quoted-printable Content-Type: text/plain; charset="utf-8" damon_pa_migrate() walks every PFN in a region linearly, calling damon_get_folio() for each one. On sparse physical address spaces (e.g., CXL-attached memory), a single DAMON region can span hundreds of gigabytes where most memory is free and sitting in the buddy allocator. Most page lookups are fruitless and dominate kdamond tick time. Check at pageblock boundaries (2MB on x86_64) whether the block is entirely free. If the first page of a pageblock is a buddy page at pageblock_order or higher, the entire block is free and can be skipped. Similarly skip pageblocks where pfn_to_online_page() returns NULL. This reduces the iteration from O(region_sz / PAGE_SIZE) to O(region_sz / pageblock_sz) + O(populated_pages). buddy_order_unsafe() is used without zone->lock. A transient false positive (block becomes non-free between the PageBuddy and order checks) costs at most one tick of missed candidates on that block; the next tick re-scans. No correctness consequence as DAMON walks are best-effort. Signed-off-by: Ravi Jonnalagadda --- mm/damon/paddr.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/mm/damon/paddr.c b/mm/damon/paddr.c index c4738cd5e221e..e844c990987b9 100644 --- a/mm/damon/paddr.c +++ b/mm/damon/paddr.c @@ -258,13 +258,32 @@ static unsigned long damon_pa_migrate(struct damon_re= gion *r, unsigned long addr_unit, struct damos *s, unsigned long *sz_filter_passed) { - phys_addr_t addr, applied; + phys_addr_t addr, end, applied; LIST_HEAD(folio_list); struct folio *folio =3D NULL; + unsigned long pfn; =20 addr =3D damon_pa_phys_addr(r->ar.start, addr_unit); - while (addr < damon_pa_phys_addr(r->ar.end, addr_unit)) { - folio =3D damon_get_folio(PHYS_PFN(addr)); + end =3D damon_pa_phys_addr(r->ar.end, addr_unit); + while (addr < end) { + pfn =3D PHYS_PFN(addr); + + /* Skip pageblocks that are entirely free. */ + if (IS_ALIGNED(pfn, pageblock_nr_pages)) { + struct page *page =3D pfn_to_online_page(pfn); + + if (!page) { + addr +=3D pageblock_nr_pages * PAGE_SIZE; + continue; + } + if (PageBuddy(page) && + buddy_order_unsafe(page) >=3D pageblock_order) { + addr +=3D pageblock_nr_pages * PAGE_SIZE; + continue; + } + } + + folio =3D damon_get_folio(pfn); if (damon_pa_invalid_damos_folio(folio, s)) { addr +=3D PAGE_SIZE; continue; --=20 2.43.0 From nobody Mon May 25 08:10:54 2026 Received: from mail-yw1-f194.google.com (mail-yw1-f194.google.com [209.85.128.194]) (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 9522E37AA8F for ; Sat, 16 May 2026 21:04:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.194 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778965456; cv=none; b=h9BEPYnfsFwTQqZE7DlKdU3O/WKpz5mw2lgu8Ggr5rWFqJrrGzVH2ngXZeNBEPAWPmyJxeAi6BUnVI51h32O21w0xQrHtlsINIf2dOkxQlFIkD5i7Jdjp6rQQEa/mgzL8XhnE32uhGvah/QoGhlUtsTo4zUFOt55J0I/EGp/4eg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778965456; c=relaxed/simple; bh=suVlmThmLOSeu54xK5SymaNpAeUN5cZJpWPOhRRKbjk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=VmIFqYSA3I+wsKCi+rfzhPuusCu33y0OHpRav7qZGGDBlXd8q5L9zvKC6ZspAgPROGEdojZyo9hjLL1KTN+sJdGjlF7W03CeghwZBJzlkis3pjbCTUiVWIHvlCKkOnaOivp2ZPIUhMiYqvP7j+chKobMAlG/gal7uZ+WePOEkns= 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=sMlU6PXe; arc=none smtp.client-ip=209.85.128.194 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="sMlU6PXe" Received: by mail-yw1-f194.google.com with SMTP id 00721157ae682-7c0de780bf1so4361377b3.2 for ; Sat, 16 May 2026 14:04:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778965453; x=1779570253; 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=fGoieryUDtogh5w/DQ0mDHeFWPd+g3z7hodtgl9YwHU=; b=sMlU6PXewrPbwoTHIo7YnyFrz3N4Pe6k3cqaMdkLukovsB4jFWkLoT2jQnckqzlAic FEeb8InzNM8mLtiueFPo+wCOAyRD9T0AlNPEbRvALgARn+Q/RqAF9CsVJBvjD40MakwC SS6i8XSdVDuPiF10kP8l3CwRKYwXxI1PGqvKC4RLeGzi/rolhbvnZQxw7qbR8AsdYkbA UrgUa1YtaFSkLSC5w5Hs6H/icEdrvPnuQ7HO1wXRFy884vngkHrcSAvCCR/yfjJALYUj 0K4xbHUP6ckS3/TxVIlLZ3eqH2lXLwyLXlCNMpj0cVwnxhSTKteOCj67c8l79ws1+jTG 1Yaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778965453; x=1779570253; 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=fGoieryUDtogh5w/DQ0mDHeFWPd+g3z7hodtgl9YwHU=; b=VlFa/ANXiNHcRSaVVFehz7Ppj4jPY3RssIhXFMPSJv+UP+Hmo+s4jp+CqQMtAewt5A N+CtInkHG6CkOPVmyc58ShlOMG9NgUfFJpqEXwWXWWjDC7O7LadlEcSmZptytnpZcLhr tD8ICXaRnp00AWEQTGNztJXAo1p/CUmfjDf3EGbz0A1sEbRJYTEaUjER7mCJtAxrjtDO Wl5aR9W9jwZoP2XQRTM/y/gzA3nclXQtW6/QCWfmEpd07Z/zBvKYpqwwlt3NKAFSraNV nExS+7nhcu4LobzaDnXtaryX5LOg0ObFfs2lcgwGrzixxUDcVPyQKt8IujNsfkFKctAt rmvA== X-Forwarded-Encrypted: i=1; AFNElJ/GYxDqLN9KTzCsZ/mWkLpGM/ypUKmqECwrImYTBbyU6ER2EnzykRYIMq+CeD/Td28oDJ/hV9zF428GP50=@vger.kernel.org X-Gm-Message-State: AOJu0YyeIXDxIW/nKG61R938IRAKRG+AESM+hd46beCXQHFPouC3rlXL jFh08fHv2CVHup1SqsokgmjrenHgV68E8Y1K53/veFfRpMVEAaqoHp4= X-Gm-Gg: Acq92OHGubHeY5tp7+HUcLleD5srWAngyKTRbzlVGdwM7neo+o8eczBAh6/kEAm9tUN j8UINazO6njbDXV9uCDn7ZBUp2TkGNbN/SOUuQ6ZOIAg/Q1oq24bg8O7CBkTKiNKoRwj18ZR6pB 46lk83zBP0H4lgyrR8LPNxOOcyztK0tEPB33NkGpW23AROg1w1I21yzHoNPsS00FpUx86QkzPlE Cay+Ox6ZHm90Z91aNnoJb0CLbrDJvQrbMyBrxefcY4d4Aa+polq/qsQ4rfqPAWJPNVd7sR5OLHq V59yXZoi/p45p38bXvWMwLehSSb76DMKQxxVJmlAm24eFHGRGvu9+a+LXI3UBwd3m1TYPYyJken C5wbfUJCb+VQZRV5uV9K18bSef4gSnZ5o9oppPFScN3G/OHNjNkMhT5QbsQEJ+sop9iNwT8Se7M 0tYwoyJhTgoRe2Dur8/m2FH8PybPYOumd0wqpYDjNMinCM4TYAL7HYJ/GuK7PT+FkQvZtD47FGg Q== X-Received: by 2002:a05:690c:e4d7:b0:7a0:4146:6eda with SMTP id 00721157ae682-7c959b8ebabmr94328007b3.20.1778965452710; Sat, 16 May 2026 14:04:12 -0700 (PDT) Received: from localhost (23-116-43-216.lightspeed.sntcca.sbcglobal.net. [23.116.43.216]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7c7f55bca95sm47468617b3.39.2026.05.16.14.04.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 14:04:11 -0700 (PDT) From: Ravi Jonnalagadda To: sj@kernel.org, damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: akpm@linux-foundation.org, corbet@lwn.net, bijan311@gmail.com, ajayjoshi@micron.com, honggyu.kim@sk.com, yunjeong.mun@sk.com, ravis.opensrc@gmail.com Subject: [RFC PATCH 5/5] mm/damon/paddr: add time budget to migration page walk Date: Sat, 16 May 2026 14:03:57 -0700 Message-ID: <20260516210357.2247-6-ravis.opensrc@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260516210357.2247-1-ravis.opensrc@gmail.com> References: <20260516210357.2247-1-ravis.opensrc@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable On populated physical address ranges the pageblock skip optimization alone is insufficient =E2=80=94 most pageblocks contain at least one alloca= ted page, so the walk still iterates millions of PFNs. Add a 100ms wall-clock time budget to damon_pa_migrate(). Once the deadline is reached, the walk breaks out and migrates whatever folios have been collected so far. The time check is amortized by only calling ktime_get() every 4096 pages (~16MB of address space), adding negligible overhead to the fast path. Signed-off-by: Ravi Jonnalagadda --- mm/damon/paddr.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/mm/damon/paddr.c b/mm/damon/paddr.c index e844c990987b9..a2565287bc10f 100644 --- a/mm/damon/paddr.c +++ b/mm/damon/paddr.c @@ -14,6 +14,7 @@ #include #include #include +#include =20 #include "../internal.h" #include "ops-common.h" @@ -254,6 +255,14 @@ static unsigned long damon_pa_deactivate_pages(struct = damon_region *r, return damon_pa_de_activate(r, addr_unit, s, false, sz_filter_passed); } =20 +/* Maximum wall-clock time to spend in a single migration walk (ns) */ +#define DAMON_PA_MIGRATE_BUDGET_NS (100 * NSEC_PER_MSEC) + +/* Check the time budget every 4096 pages (~16MB) to amortize ktime_get().= */ +#define DAMON_PA_MIGRATE_TIME_CHECK_PAGES 4096 +#define DAMON_PA_MIGRATE_TIME_CHECK_MASK \ + (DAMON_PA_MIGRATE_TIME_CHECK_PAGES - 1) + static unsigned long damon_pa_migrate(struct damon_region *r, unsigned long addr_unit, struct damos *s, unsigned long *sz_filter_passed) @@ -262,6 +271,7 @@ static unsigned long damon_pa_migrate(struct damon_regi= on *r, LIST_HEAD(folio_list); struct folio *folio =3D NULL; unsigned long pfn; + ktime_t deadline =3D ktime_add_ns(ktime_get(), DAMON_PA_MIGRATE_BUDGET_NS= ); =20 addr =3D damon_pa_phys_addr(r->ar.start, addr_unit); end =3D damon_pa_phys_addr(r->ar.end, addr_unit); @@ -283,6 +293,11 @@ static unsigned long damon_pa_migrate(struct damon_reg= ion *r, } } =20 + /* Time budget: keep kdamond responsive on long migration walks. */ + if (!(pfn & DAMON_PA_MIGRATE_TIME_CHECK_MASK) && + ktime_after(ktime_get(), deadline)) + break; + folio =3D damon_get_folio(pfn); if (damon_pa_invalid_damos_folio(folio, s)) { addr +=3D PAGE_SIZE; --=20 2.43.0