mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Vijayanand Jitta <vjitta@codeaurora.org>
To: Alexander Potapenko <glider@google.com>
Cc: Minchan Kim <minchan@kernel.org>,
	Vincenzo Frascino <vincenzo.frascino@arm.com>,
	dan.j.williams@intel.com, broonie@kernel.org,
	Masami Hiramatsu <mhiramat@kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Andrey Konovalov <andreyknvl@google.com>,
	qcai@redhat.com, ylal@codeaurora.org, vinmenon@codeaurora.org
Subject: Re: [PATCH v3] lib: stackdepot: Add support to configure STACK_HASH_SIZE
Date: Fri, 11 Dec 2020 18:15:02 +0530	[thread overview]
Message-ID: <77e98f0b-c9c3-9380-9a57-ff1cd4022502@codeaurora.org> (raw)
In-Reply-To: <CAG_fn=VKsrYx+YOGPnZw_Q5t6Fx7B59FSUuphj7Ou+DDFKQ+8Q@mail.gmail.com>



On 12/11/2020 2:06 PM, Alexander Potapenko wrote:
> On Thu, Dec 10, 2020 at 6:01 AM <vjitta@codeaurora.org> wrote:
>>
>> From: Yogesh Lal <ylal@codeaurora.org>
>>
>> Add a kernel parameter stack_hash_order to configure STACK_HASH_SIZE.
>>
>> Aim is to have configurable value for STACK_HASH_SIZE, so that one
>> can configure it depending on usecase there by reducing the static
>> memory overhead.
>>
>> One example is of Page Owner, default value of STACK_HASH_SIZE lead
>> stack depot to consume 8MB of static memory. Making it configurable
>> and use lower value helps to enable features like CONFIG_PAGE_OWNER
>> without any significant overhead.
> 
> Can we go with a static CONFIG_ parameter instead?
> Guess most users won't bother changing the default anyway, and for
> CONFIG_PAGE_OWNER users changing the size at boot time is not strictly
> needed.
> 
Thanks for review.

One advantage of having run time parameter is we can simply set it to a
lower value at runtime if page_owner=off thereby reducing the memory
usage or use default value if we want to use page owner so, we have some
some flexibility here. This is not possible with static parameter as we
have to have some predefined value.

>> -static struct stack_record *stack_table[STACK_HASH_SIZE] = {
>> -       [0 ...  STACK_HASH_SIZE - 1] = NULL
>> +static unsigned int stack_hash_order = 20;
> 
> Please initialize with MAX_STACK_HASH_ORDER instead.
> 

Sure, will update this.

>> +static struct stack_record *stack_table_def[MAX_STACK_HASH_SIZE] __initdata = {
>> +       [0 ...  MAX_STACK_HASH_SIZE - 1] = NULL
>>  };
>> +static struct stack_record **stack_table __refdata = stack_table_def;
>> +
>> +static int __init setup_stack_hash_order(char *str)
>> +{
>> +       kstrtouint(str, 0, &stack_hash_order);
>> +       if (stack_hash_order > MAX_STACK_HASH_ORDER)
>> +               stack_hash_order = MAX_STACK_HASH_ORDER;
>> +       return 0;
>> +}
>> +early_param("stack_hash_order", setup_stack_hash_order);
>> +
>> +static int __init init_stackdepot(void)
>> +{
>> +       size_t size = (STACK_HASH_SIZE * sizeof(struct stack_record *));
>> +
>> +       stack_table = vmalloc(size);
>> +       memcpy(stack_table, stack_table_def, size);
> 
> Looks like you are assuming stack_table_def already contains some data
> by this point.
> But if STACK_HASH_SIZE shrinks this memcpy() above will just copy some
> part of the table, whereas the rest will be lost.
> We'll need to:
> - either explicitly decide we can afford losing this data (no idea how
> bad this can potentially be),
> - or disallow storing anything prior to full stackdepot initialization
> (then we don't need stack_table_def),
> - or carefully move all entries to the first part of the table.
> 
> Alex
> 

The hash for stack_table_def is computed using the run time parameter
stack_hash_order, though stack_table_def is a bigger array it will only
use the entries that are with in the run time configured STACK_HASH_SIZE
range. so, there will be no data loss during copy.

Thanks,
Vijay

-- 
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a
member of Code Aurora Forum, hosted by The Linux Foundation

  reply	other threads:[~2020-12-11 12:47 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-10  5:00 vjitta
2020-12-11  8:36 ` Alexander Potapenko
2020-12-11 12:45   ` Vijayanand Jitta [this message]
2020-12-11 13:25     ` Alexander Potapenko
2020-12-14  4:02       ` Vijayanand Jitta
2020-12-14  9:34         ` Alexander Potapenko
2020-12-14 10:32           ` Vijayanand Jitta
2020-12-16  3:43             ` Vijayanand Jitta
2020-12-16  8:26               ` Alexander Potapenko
2020-12-16 13:06                 ` Vijayanand Jitta
2020-12-16 13:11                   ` Alexander Potapenko
2020-12-16 13:22                     ` Vijayanand Jitta
2020-12-16 13:34                       ` Alexander Potapenko
2020-12-17  5:38                         ` Vijayanand Jitta
2020-12-17 10:19                           ` Dmitry Vyukov
2020-12-17 10:54                           ` Alexander Potapenko
2020-12-18  8:40                             ` Vijayanand Jitta
2020-12-21 11:14                               ` Vijayanand Jitta
2020-12-21 15:04                                 ` Alexander Potapenko
2020-12-21 20:29                                   ` Minchan Kim
2020-12-22  5:55                                     ` Vijayanand Jitta
2020-12-23 14:40                                       ` Alexander Potapenko
2020-12-28  4:51                                         ` Vijayanand Jitta
2020-12-15  9:34 ` [lib] 1333d0ba67: WARNING:at_kernel/locking/lockdep.c:#lockdep_register_key kernel test robot
2020-12-17 10:25 ` [PATCH v3] lib: stackdepot: Add support to configure STACK_HASH_SIZE Dmitry Vyukov
2020-12-17 10:27   ` Dmitry Vyukov

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=77e98f0b-c9c3-9380-9a57-ff1cd4022502@codeaurora.org \
    --to=vjitta@codeaurora.org \
    --cc=akpm@linux-foundation.org \
    --cc=andreyknvl@google.com \
    --cc=broonie@kernel.org \
    --cc=dan.j.williams@intel.com \
    --cc=glider@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=minchan@kernel.org \
    --cc=qcai@redhat.com \
    --cc=vincenzo.frascino@arm.com \
    --cc=vinmenon@codeaurora.org \
    --cc=ylal@codeaurora.org \
    /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

Powered by JetHome