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 95A12C48297 for ; Fri, 9 Feb 2024 07:45:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B70386B0074; Fri, 9 Feb 2024 02:45:39 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B1F186B0075; Fri, 9 Feb 2024 02:45:39 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9E7266B0078; Fri, 9 Feb 2024 02:45:39 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 8FBCB6B0074 for ; Fri, 9 Feb 2024 02:45:39 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 5A433A1C07 for ; Fri, 9 Feb 2024 07:45:39 +0000 (UTC) X-FDA: 81771480798.04.13F20D7 Received: from mail-vk1-f177.google.com (mail-vk1-f177.google.com [209.85.221.177]) by imf07.hostedemail.com (Postfix) with ESMTP id 653DE40011 for ; Fri, 9 Feb 2024 07:45:37 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=eHOHuzpU; spf=pass (imf07.hostedemail.com: domain of elver@google.com designates 209.85.221.177 as permitted sender) smtp.mailfrom=elver@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1707464737; 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=0ySHx2nX99jANk38wSw2X6YUAqeLte8C5K6rXWwBJss=; b=gWsFv69bH6Pf2dgHICB7oq73Yc+ifKEeikUT+fpADWc+HcdOLRZ7Ikbk2Qu2L31keN76DE XRLGKzifr6dwJsPJwvQIbY/EHy6Gw2jC6vjmploX1mqYUbDeJIB/R/A/JjIGsxtv1uCj4J fCvUvXIJW4D2MGWo434D2xiV8KkSTq0= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=eHOHuzpU; spf=pass (imf07.hostedemail.com: domain of elver@google.com designates 209.85.221.177 as permitted sender) smtp.mailfrom=elver@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707464737; a=rsa-sha256; cv=none; b=OrXeRH/fiRM0j6SNW4+MDF+wwFG8K3y4Cnfm9vokd1qnysam9vCpyJzBIAmToThLiIDrHN cpoky5EQ0ES6hFSFHZY4ljkpEBIOVGMLClqPXHvlInLj+LFtOxkpajeOdwh4tUTvkDFcZk mJgKksDnFJmAfii5IM/Nf2Lztrx6Xns= Received: by mail-vk1-f177.google.com with SMTP id 71dfb90a1353d-4b7fc7642fcso266496e0c.0 for ; Thu, 08 Feb 2024 23:45:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1707464736; x=1708069536; 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=0ySHx2nX99jANk38wSw2X6YUAqeLte8C5K6rXWwBJss=; b=eHOHuzpU7Oqx0v9yCH/gVgeXTrYAeuXoj9ibAA4tTqcswuM919RYdIeBwXvW4/jQPb UJxfRU6we0R5B9nSTvYoCu6Ljfw3K4lmBkTp7XEOY+l6ib04Jr0czVDfiIWUpShdXPn8 Vf7WnKozRREtlX4M2k3eJ4vnM+adl7ZWbHNFAhk6WlD4kyhHh774nbSV9djDBCliLKGd gmIMzUxjUWQGJ0adwuvZ/ExsjjPGcNhiqDVMfLO6tc1YLrktQTGyPHD+3+t16o76uuu5 hYv5jDEK2jCSjc3jAo6/R9yX328AdlaoNMMefe3M5NxeUCUqwrq4VeoaLVBF8aPmJbK1 oN1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707464736; x=1708069536; 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=0ySHx2nX99jANk38wSw2X6YUAqeLte8C5K6rXWwBJss=; b=GVXFS+8L8LXOvgcHOLaqob1u+5JYIxA18uSJ11aiedCZqdFnwTs0wzTVTRjh1naWRj PJ0nggvF2K7KY0SN1M5qFoFRIZ6H6FqJV3r480R4igQ4WWdHhLyC72Qra0ybUsVCshrQ 0kB90uhcAmQ1rbtMeXZZ3SVWnWRbJFOC8tWdWrDdAcx3iQIi8AmHi650gTw6J4SowHMJ 1nE169FSfyeJfjIa/3TuEkm5w84PjNnUgerg6a4/IuE7L6FSKhAENOfWaMs19+bouqqq aminvWe0x6+CTGY29bmVWObMuIBQP/VtwSChRAoU++4Lux4i6WZ6MCYU+/HZoXGEPo8p 39tg== X-Forwarded-Encrypted: i=1; AJvYcCWmakKK/xJoN0AuJ6s/jtAyAxsOfkfKYHVceW9ymNkHwhTFp0vN4sZIKfvy1QABLpCZCyTSoBJjblZ22Mosy727Fv8= X-Gm-Message-State: AOJu0Yxy3IiMtvjlNNI6PuCKPzinO4zF0EqWb2ZiEJHQz3G6VXlTnqBA R5M6jdhpL/pXcvWqPrUERG3Qep9totCm1Jffh03PAB9NEF4uJazfFBSjJo3c4h5zk5KdQStmI5P HNwKjYsxGyn9CPvXN8/zuHmcvbze5Wz8Of8Fk X-Google-Smtp-Source: AGHT+IE/bOWjTKOfxopm+i5SliWnQ844cTtmltS+m8uqJnBwiElhddYM8CtAG6EvXsaEYiZQi+AbzxJ6cwp1cdw7ehc= X-Received: by 2002:a05:6102:5590:b0:46d:2121:6939 with SMTP id dc16-20020a056102559000b0046d21216939mr780588vsb.23.1707464736329; Thu, 08 Feb 2024 23:45:36 -0800 (PST) MIME-Version: 1.0 References: <20240208234539.19113-1-osalvador@suse.de> <20240208234539.19113-3-osalvador@suse.de> In-Reply-To: <20240208234539.19113-3-osalvador@suse.de> From: Marco Elver Date: Fri, 9 Feb 2024 08:45:00 +0100 Message-ID: Subject: Re: [PATCH v7 2/4] mm,page_owner: Implement the tracking of the stacks count 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-Rspamd-Queue-Id: 653DE40011 X-Rspam-User: X-Stat-Signature: yps839famoqubpmu3kk46n6bfxeoru8q X-Rspamd-Server: rspam01 X-HE-Tag: 1707464737-24568 X-HE-Meta: U2FsdGVkX1/+Nf9EZ3Yqg0Jf4SKlvPUl156CvNVD0G0T8QM33cQ+ltTLxVF8RQ/PjSaUJDjs1yhhKaiYiBI9wsEVG7oM25fC18jrmRVdHZJtmjyGfqD3r2KjUYgKCtAbta7YCqf2XcyYHdQtMXrNjE7LEz5CYQejlxLkdQxu4kRxdq88ZgYr3JCjpNWvRlhYTf1Y0+CpZAOt9H4WR+Scu0aEYxM4zCdze2SXVNpG4qt4TVBFPAYJ8mqCRE9+6N/bIIQG913ZJ96kvuzS1mq3nWSopqeB/Y2ScZrG7CY8L9xwK2dTajkwo9GgSyOJu4Qr0LcTeUGmSGlyir70VilgnaLz3YDkZ/m82i3QNbuagP72s7HlfPEB3e0zd4J/llcdjYuI8Z7w61GSizKqtp8ZdFp9guUePvIy12NgJMldjijMzMNawZBRARvLScpB8Dh5i+Us/W8lGu9+SE4CPGIGNWCON9ypCfiklILqA/TKuQNsEefGzx6m3qPg2ZiNhhggCOC0qRqiyn2dggAf2IvxQA0VW4N0eMHm5C7B1KArboJJlEcHdUjCV5VmeoMgEze8ZKmYu1V9wEFkJH9uar4GntiWQ8VO1R9AbIahX7CW30ANhI9bxGQVDyLbn5i0qsZdk2RVUZBA3VOZX/0Jw/jrFZmprZVh0RFj8SFdtaj7zF6mIX4YXHEgzynaIV3YrMQpXvMpudff0/JUSMdk+x52Ytt6AhXzpqJAcPAMzRx1M66gpNES2kgUENWY/h8/s6CDzaMn+ivLOvHxXZRGGjzSBpgiK0EfUrEZvdnrvinJA+LPRpfkam5l2NR3djOA/Q0d9ZXcsAgimPKxCf8gJ1ScDPyme6y9X7U0NPiZPaP1mbVFEZwbH/UGucWnJJceqg/i+wBQCKfa7tkN+btJO9l90/0M63jQ4QqLDGeAqX9Pg2ZShRZlja73u62GB2J2PrdhJ6XTz8NzP1WilowoKiu UJtScvkj 7glSIQ6WI/3qt79ZMQ4vda+SSD8GxBDCRBJUjVJu24QV+OZ9nKzN5gRxUhv1RbiCEtVFpd5DDs//JxYCdRuWhGehjQRmPsqPqZFpw3c/HYxR85e0OAf58wtdA426+VLnd+IDYRsaW4a0na2XGcIHHUBYaG0uDA3lCLJ9uytCO13tG6Hnw/TdC/Fi7mxL7MNi2aLxCG43YZmhSDwdQPKesPBoATdZZ8KOs+V1W7yhto+dFCZEFuJQTiexG1XWL2XYseNjw1GoZxQ0nXC17EfexZcWFCw== 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 Fri, 9 Feb 2024 at 00:45, Oscar Salvador wrote: > > page_owner needs to increment a stack_record refcount when a new allocation > occurs, and decrement it on a free operation. > In order to do that, we need to have a way to get a stack_record from a > handle. > Implement stack_depot_get_stack() which just does that, and make it public > so page_owner can use it. > > Also implement {inc,dec}_stack_record_count() which increments > or decrements on respective allocation and free operations, via > __reset_page_owner() (free operation) and __set_page_owner() (alloc > operation). > > Signed-off-by: Oscar Salvador > --- > include/linux/stackdepot.h | 8 ++++++++ > lib/stackdepot.c | 8 ++++++++ > mm/page_owner.c | 30 ++++++++++++++++++++++++++++++ > 3 files changed, 46 insertions(+) > > diff --git a/include/linux/stackdepot.h b/include/linux/stackdepot.h > index d0dcf4aebfb4..ac62de4d4999 100644 > --- a/include/linux/stackdepot.h > +++ b/include/linux/stackdepot.h > @@ -175,6 +175,14 @@ depot_stack_handle_t stack_depot_save_flags(unsigned long *entries, > depot_stack_handle_t stack_depot_save(unsigned long *entries, > unsigned int nr_entries, gfp_t gfp_flags); > > +/** > + * stack_depo_get_stack - Get a pointer to a stack struct Typo: "depo" -> depot I would also write "stack_record struct", because "stack struct" does not exist. > + * @handle: Stack depot handle > + * > + * Return: Returns a pointer to a stack struct > + */ > +struct stack_record *stack_depot_get_stack(depot_stack_handle_t handle); I don't know what other usecases there are for this, but I'd want to make make sure we give users a big hint to avoid unnecessary uses of this function. Perhaps we also want to mark it as somewhat internal, e.g. by prefixing it with __. So I'd call it __stack_depot_get_stack_record(). > /** > * stack_depot_fetch - Fetch a stack trace from stack depot > * > diff --git a/lib/stackdepot.c b/lib/stackdepot.c > index 16c8a1bf0008..197c355601f9 100644 > --- a/lib/stackdepot.c > +++ b/lib/stackdepot.c > @@ -681,6 +681,14 @@ depot_stack_handle_t stack_depot_save(unsigned long *entries, > } > EXPORT_SYMBOL_GPL(stack_depot_save); > > +struct stack_record *stack_depot_get_stack(depot_stack_handle_t handle) > +{ > + if (!handle) > + return NULL; > + > + return depot_fetch_stack(handle); > +} > + > unsigned int stack_depot_fetch(depot_stack_handle_t handle, > unsigned long **entries) > { > diff --git a/mm/page_owner.c b/mm/page_owner.c > index 5634e5d890f8..0adf41702b9d 100644 > --- a/mm/page_owner.c > +++ b/mm/page_owner.c > @@ -61,6 +61,22 @@ static __init bool need_page_owner(void) > return page_owner_enabled; > } > > +static void inc_stack_record_count(depot_stack_handle_t handle) > +{ > + struct stack_record *stack = stack_depot_get_stack(handle); > + > + if (stack) > + refcount_inc(&stack->count); > +} In the latest stackdepot version in -next, the count is initialized to REFCOUNT_SATURATED to warn if a non-refcounted entry is suddenly used as a refcounted one. In your case this is intentional and there is no risk that the entry will be evicted, so that's ok. But you need to set the refcount to 1 somewhere here on the initial stack_depot_save().