From mboxrd@z Thu Jan 1 00:00:00 1970 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 B3A0EC4829A for ; Tue, 13 Feb 2024 08:41:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 34E716B0092; Tue, 13 Feb 2024 03:41:41 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2D8076B0093; Tue, 13 Feb 2024 03:41:41 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1797F6B0095; Tue, 13 Feb 2024 03:41:41 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 040BB6B0092 for ; Tue, 13 Feb 2024 03:41:41 -0500 (EST) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id D194E160167 for ; Tue, 13 Feb 2024 08:41:40 +0000 (UTC) X-FDA: 81786137160.22.5AA6A91 Received: from mail-ua1-f43.google.com (mail-ua1-f43.google.com [209.85.222.43]) by imf05.hostedemail.com (Postfix) with ESMTP id 33348100003 for ; Tue, 13 Feb 2024 08:41:39 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="Xq/DxMZK"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf05.hostedemail.com: domain of elver@google.com designates 209.85.222.43 as permitted sender) smtp.mailfrom=elver@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707813699; a=rsa-sha256; cv=none; b=aGMu6FLbAz2TIBzXRm242/BpiYWhCF+Xw352kLJTkKP20hkChpx2uQnuueIT2Klrca/3YH fm/43fJXvPVMJ5rYi4ms0AxH9o0yM8yX57jssihT3LPhent6++LKZiGcz6c8fssDCkpeit VOaLvNNxhHmZCBRkdUEG7NDYuqgMr5k= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="Xq/DxMZK"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf05.hostedemail.com: domain of elver@google.com designates 209.85.222.43 as permitted sender) smtp.mailfrom=elver@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1707813699; 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-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=/mbXy4N3HeK13vhMMBdXFJntR7rVjjQU3Uf2gMWB6LA=; b=R29wdS335ZQoXrAS7H0pJ+tJd5GEvTLi2UYa8mO2rUr0kCUkQeg8De5LmrMqhKuIG/D+AX 60KZH8zSfHVC3jkjOplQ0qu7+V83sqmEH6fKW/ahpHrFM4qNU6QQ0/UbJgAfoJrL2YqrWM rdZx72SIGSpvnaL4F+3S+w8InzE3a9k= Received: by mail-ua1-f43.google.com with SMTP id a1e0cc1a2514c-7d2e007751eso1990378241.1 for ; Tue, 13 Feb 2024 00:41:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1707813698; x=1708418498; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=/mbXy4N3HeK13vhMMBdXFJntR7rVjjQU3Uf2gMWB6LA=; b=Xq/DxMZKfHTvEPjvEKQzreu5UHnZInYtmEFkgYt7uzfRysJIit0z0+FDHPRY+JxkDW uM1O/UDOkMUQm0XRKCxRtymMQL3cszE0olcN9I9WbtHzyGHrneiY9xAPm4tdkctDuudy 3AWeYf737KLQJHYxCUgNmqQ2ulQNCV63yJ0RS5lNUZqKVVRWM6JX79dLbvEDMVIp025I /A9XOKMwDJXsl9IZ9mZW/foI8qf8TzwamzP3OtZquJ/vLtZLqoVaAwJv0GESpvi/P7Rc q5Xk1Dif0mvdE+0Imy9kkSQFDgPujSsNgnRUOV7lHYBHt6R/yx/CWLWw41Q0XsBWv3xF DSHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707813698; x=1708418498; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=/mbXy4N3HeK13vhMMBdXFJntR7rVjjQU3Uf2gMWB6LA=; b=aduDCupqxqNOjLyqdE2Y8mamR+1pVZvnKU0hzNOP+8XVojsST8GKBbzoqUMBleINkm KDfKwqMEdiNK/YnHihNE2ryIR8uryjgf7jizzSjeCryrgA8i5T+RZKK+28anr/Kysg5V +lpdCEi/2JG3T1WgeinZyw+fwdwloMSqVTzAqIguFRd0NtGHh7Htmh7HF6+z45o1GzI+ JCYxoMy+vS7Zl7lnsWJ21mLTiUUBJa8SE/NLXknwC7+G+16LGFo1Z3w/CNsTTWTtiiJk 5egDLioJQU2/u+/ZezlPxKVx8kCL26suGgS2luM75KdiCBQXu/SO7bbUxn7D1V8lAqYt xyAA== X-Gm-Message-State: AOJu0YzUgBroQXXLrJTWLBcIWuYa0xHxou2J8U8AtCnlZb6waDBgSy6N SeIwW7lV3VHjFpWS3PSo7n8nRdqbfKcuy/Y8gPVxLGFTZVePBMCZupYUfSbt1msYSdKNkQF4+4I 8pKE1fFknzhGO7ZSgJFaeG9YoWDnlOCbBaduvwf8Qeg6IGIwK/H21 X-Google-Smtp-Source: AGHT+IGYN+GY+XVnj0Fu47fVRpb1MvtnGgbFxUjfMDXlJ9xY5lfjN8jQZq6RjYZnTS5e5xgmxP8X11U27CJ/ewdslBA= X-Received: by 2002:a67:f88f:0:b0:46d:606e:6323 with SMTP id h15-20020a67f88f000000b0046d606e6323mr6029730vso.2.1707813698162; Tue, 13 Feb 2024 00:41:38 -0800 (PST) MIME-Version: 1.0 References: <20240212223029.30769-1-osalvador@suse.de> <20240212223029.30769-5-osalvador@suse.de> In-Reply-To: <20240212223029.30769-5-osalvador@suse.de> From: Marco Elver Date: Tue, 13 Feb 2024 09:41:02 +0100 Message-ID: Subject: Re: [PATCH v8 4/5] mm,page_owner: Filter out stacks by a threshold To: Oscar Salvador Cc: Andrew Morton , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Michal Hocko , Vlastimil Babka , Andrey Konovalov , Alexander Potapenko Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 33348100003 X-Stat-Signature: 3m3bo3yt7decd41cipzy6oiikkzd6tza X-HE-Tag: 1707813699-960716 X-HE-Meta: U2FsdGVkX1/sWUe/mw5ZKPprVr0g/5llvT7MYzFuFijk1aTPKmSe9zhFp8H6EHhWWg2FtnK1s3J2SNHVw9sDVXGY31N1ZOC97PIx9KUIZOuRmt4/y1WnXHYx7SDqY5eDG64CM2lSWlVWqBiyetUzLtSIzYXdeXmTdWVPJDT6/ZzTGp6FX7EnBXAI4yqWL56I8SXHobBu3oAunicmqvfMe6s6XUZjo86bsPMbjuDoJw/1qpqmIxlyIWn384r5o9UXK4xjhTKjuagrh8kby03cu01nvIW+sjGd0QYKmg57pE1/Bf5EJCnSFgjZAkPdxEpTBYaDjxHbRYvsRjotVWOPwFG5Q0UHl7TIPqzYFDcRGwvO1GlPpUzzHmVIi56dQbzgalaFGX2vaqrDy6RnDDyCXaBV4pW+7H5TNes5RYIbAkyL/eR8gJQOeJJLF/y0Wu1LRMoTMZmoUNZvRF9mQmqstNu5HCR73IVxy2sKpUZGz4hdaH/IkVigF9N5ARig0tBGu2DL1nTQXFHGwnFcIO54tvXQbUxtiggDCDAeeAV7P10t9+rm2FJiDnVXVh5HkQbueieMLQ86lN7pqJ65UZ6fyGvcpXGvOl4jNCq3hevL8nEBbk7hX8bXTz6xp01Thjy+s8mXLtWkIjkm2FitnVAkDyamPVtCzvNP4wRttgByRB78mmH6wWe4b+pXLCh6nGPEmo1nmbFgDBeq3b4Xems34xDMU1LYyEehndccnzGvCisBV3Y99nfPVb9hjGRjAmC91JQ5aiY12Mgo8zKETKjSThjlX38H8Tt5Y0RHvMmZSNv689dO4k4p7mSjc+k2V1SBnwPkP31uC4bCz54438gh5H2kre9CKPJdVFjlIiukgwPgKtx1j41/Vm6M8iy4TAEesWm1rIYe/bnUxCIpxagm4arPGa6iCS6qGxKf35BA9wfW5mXV4UMuPEvnlxFsz2eeKygBvOVpeh4ORxW7zwg TqMlqOHq WQMkHevbplSWnSOpCZzFCnSc6y5AgHzcxmL45U4JkMR+PrDCxroSqWkzIIz7QKIDEApWHpEF0PW94geO5QClhaXOkCnKQtKPYdyKUtApgHhetRwRG6xwq9UUIoS/84o2QuJjVUxDKY9DCGDn6dBw5ls7shyF6kYOgR8ocsvR+XY5lVNKGBDswVs4PuZOabBz9C65EsFmG+L6ipnSiKCCic8YnynKH4Oz6J/sfYC+meov6Oi/5UX/C7EDA6kqKz/b++02uoLOui9eSc0U= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Mon, 12 Feb 2024 at 23:29, Oscar Salvador wrote: > > We want to be able to filter out the stacks based on a threshold we can > can tune. > By writing to 'set_threshold' file, we can adjust the threshold value. > > Signed-off-by: Oscar Salvador > --- > mm/page_owner.c | 24 ++++++++++++++++++++++-- > 1 file changed, 22 insertions(+), 2 deletions(-) > > diff --git a/mm/page_owner.c b/mm/page_owner.c > index 3e4b7cd7c8f8..c4f9e5506e93 100644 > --- a/mm/page_owner.c > +++ b/mm/page_owner.c > @@ -832,15 +832,18 @@ static void *stack_next(struct seq_file *m, void *v, loff_t *ppos) > return stack; > } > > +static unsigned long page_owner_stack_threshold; > + > static int stack_print(struct seq_file *m, void *v) > { > char *buf; > int ret = 0; > struct stack *stack = v; > struct stack_record *stack_record = stack->stack_record; > + int stack_count = refcount_read(&stack_record->count); > > if (!stack_record->size || stack_record->size < 0 || > - refcount_read(&stack_record->count) < 2) > + stack_count < 2 || stack_count < page_owner_stack_threshold) > return 0; > > buf = kzalloc(PAGE_SIZE, GFP_KERNEL); > @@ -851,7 +854,7 @@ static int stack_print(struct seq_file *m, void *v) > goto out; > > scnprintf(buf + ret, PAGE_SIZE - ret, "stack_count: %d\n\n", > - refcount_read(&stack_record->count)); > + stack_count); > > seq_printf(m, buf); > seq_puts(m, "\n\n"); > @@ -884,6 +887,21 @@ static const struct file_operations page_owner_stack_operations = { > .release = seq_release, > }; > > +static int page_owner_threshold_get(void *data, u64 *val) > +{ > + *val = page_owner_stack_threshold; > + return 0; > +} > + > +static int page_owner_threshold_set(void *data, u64 val) > +{ > + page_owner_stack_threshold = val; This could be written concurrently, so to avoid data races, you can use WRITE_ONCE(page_owner_stack_threshold, val) and use READ_ONCE(page_owner_stack_threshold) where it's read. > + return 0; > +} > + > +DEFINE_SIMPLE_ATTRIBUTE(proc_page_owner_threshold, &page_owner_threshold_get, > + &page_owner_threshold_set, "%llu"); > + > static int __init pageowner_init(void) > { > struct dentry *dir; > @@ -898,6 +916,8 @@ static int __init pageowner_init(void) > dir = debugfs_create_dir("page_owner_stacks", NULL); > debugfs_create_file("show_stacks", 0400, dir, NULL, > &page_owner_stack_operations); > + debugfs_create_file("set_threshold", 0600, dir, NULL, > + &proc_page_owner_threshold); > > return 0; > } > -- > 2.43.0 >