linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Potapenko <glider@google.com>
To: Oscar Salvador <osalvador@suse.de>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	linux-kernel@vger.kernel.org,  linux-mm@kvack.org,
	Michal Hocko <mhocko@suse.com>, Vlastimil Babka <vbabka@suse.cz>,
	 Waiman Long <longman@redhat.com>,
	Suren Baghdasaryan <surenb@google.com>,
	Marco Elver <elver@google.com>,
	 Andrey Konovalov <andreyknvl@gmail.com>,
	Eric Dumazet <edumazet@google.com>
Subject: Re: [PATCH v5 2/3] mm, page_owner: Add page_owner_stacks file to print out only stacks and their counte
Date: Mon, 22 May 2023 10:27:41 +0200	[thread overview]
Message-ID: <CAG_fn=VxR47e3jfKYteivtEZXWDtUqZb_i8=gxGxBj71FKw=sQ@mail.gmail.com> (raw)
In-Reply-To: <20230516182537.3139-3-osalvador@suse.de>

On Tue, May 16, 2023 at 8:25 PM Oscar Salvador <osalvador@suse.de> wrote:

I am still hesitant about adding this functionality to stackdepot,
because page_owner is the only user of the stack counters that look
orthogonal to the rest of stackdepot.
One indicator of that is the fact that you keep adding dependencies on
page_owner to stackdepot code.

> We might be only interested in knowing about stacks <-> count
> relationship, so instead of having to fiddle with page_owner
> output and screen through pfns, let us add a new file called
> 'page_owner_stacks' that does just that.
> By cating such file, we will get all the stacktraces followed by

"cating"?

> +#ifdef CONFIG_PAGE_OWNER
> +void *stack_start(struct seq_file *m, loff_t *ppos);
> +void *stack_next(struct seq_file *m, void *v, loff_t *ppos);
> +int stack_print(struct seq_file *m, void *v);
> +#endif

Code depending on CONFIG_PAGE_OWNER should not belong here.
It is fine to have generic iterators to traverse the stack depot in
stackdepot.h without #ifdefs.
Perhaps they don't need to implement the whole interface of seq_file.


> @@ -486,6 +487,77 @@ static struct stack_record *stack_depot_getstack(depot_stack_handle_t handle)
>         return stack;
>  }
>
> +#ifdef CONFIG_PAGE_OWNER

Ditto - no CONFIG_PAGE_OWNER, please


> +
> +int stack_print(struct seq_file *m, void *v)
> +{
> +       char *buf;
> +       int ret = 0;
> +       struct stack_record *stack = v;
> +
> +       if (!stack->size || stack->size < 0 ||
> +           stack->size > PAGE_SIZE || stack->handle.valid != 1 ||
> +           refcount_read(&stack->count) < 1)
> +               return 0;
> +
> +       buf = kzalloc(PAGE_SIZE, GFP_KERNEL);
> +       ret += stack_trace_snprint(buf, PAGE_SIZE, stack->entries, stack->size, 0);
> +       scnprintf(buf + ret, PAGE_SIZE - ret, "stack count: %d\n\n",
> +                 refcount_read(&stack->count));
> +       seq_printf(m, buf);
> +       seq_puts(m, "\n\n");
> +       kfree(buf);
> +
> +       return 0;
> +}

Maybe stack_print() should be in mm/page_owner.c instead?



-- 
Alexander Potapenko
Software Engineer

Google Germany GmbH
Erika-Mann-Straße, 33
80636 München

Geschäftsführer: Paul Manicle, Liana Sebastian
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg


  parent reply	other threads:[~2023-05-22  8:28 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20230516182537.3139-1-osalvador@suse.de>
2023-05-16 18:25 ` Oscar Salvador
2023-05-17  0:59   ` kernel test robot
2023-05-22  8:27   ` Alexander Potapenko [this message]
2023-05-16 18:25 ` [PATCH v5 3/3] mm,page_owner: Filter out stacks by a threshold counter Oscar Salvador
2023-05-22  8:40   ` Alexander Potapenko
2023-06-12 10:53     ` Vlastimil Babka
2023-05-16 21:12 ` [PATCH v5 0/3] page_owner: print stacks and their counter Andrew Morton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAG_fn=VxR47e3jfKYteivtEZXWDtUqZb_i8=gxGxBj71FKw=sQ@mail.gmail.com' \
    --to=glider@google.com \
    --cc=akpm@linux-foundation.org \
    --cc=andreyknvl@gmail.com \
    --cc=edumazet@google.com \
    --cc=elver@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=longman@redhat.com \
    --cc=mhocko@suse.com \
    --cc=osalvador@suse.de \
    --cc=surenb@google.com \
    --cc=vbabka@suse.cz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox