From: Muchun Song <muchun.song@linux.dev>
To: Gang Li <gang.li@linux.dev>
Cc: Gang Li <ligang.bdlg@bytedance.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
Randy Dunlap <rdunlap@infradead.org>,
kernel test robot <lkp@intel.com>
Subject: Re: [PATCH 1/1] hugetlb: fix CONFIG_PADATA dependency for non-SMP system
Date: Mon, 5 Feb 2024 15:37:41 +0800 [thread overview]
Message-ID: <7472563F-5C2D-4DCB-ACD6-F86D7A18BDF2@linux.dev> (raw)
In-Reply-To: <828f990c-11af-42ad-a030-a66dde97a7f2@linux.dev>
> On Feb 5, 2024, at 14:55, Gang Li <gang.li@linux.dev> wrote:
>
>
> On 2024/2/4 15:48, Gang Li wrote:
>> On 2024/2/4 15:44, Muchun Song wrote:
>>> I don't think it is a clear way to fix this. If someone want to
>>> use PADATA in a non-SMP system, he should be carefully to handle
>>> the non-SMP case himself. I think the better way is to make PADATA
>>> handle the non-SMP case, I think it should be easy for it, which
>>> could just call ->thread_fn() many times instead of creating many
>>> threads in the non-SMP case.
>>>
>>> Thanks.
>>>
>> Sounds good, I'll take a look at padata and send a new patch.
>
> 1. delete the dependency on SMP
>
> PADATA only depends on workqueue and completion. It works well with !SMP
> currently but has no performance benefits. What we can do is make PADATA
> handle the non-SMP case more elegantly.
>
> PADATA has two parts: "Running Multithreaded Jobs" and "Running
> Serialized Jobs".
>
> "Running Multithreaded Jobs", which hugetlb parallelization relies on
> can be easily deparallelize through this patch:
>
> ```
> @@ -495,7 +495,7 @@ void __init padata_do_multithreaded(struct padata_mt_job *job)
> nworks = max(job->size / max(job->min_chunk, job->align), 1ul);
> nworks = min(nworks, job->max_threads);
>
> - if (nworks == 1) {
> + if (nworks == 1 || !IS_ENABLED(CONFIG_SMP)) {
> /* Single thread, no coordination needed, cut to the chase. */
> job->thread_fn(job->start, job->start + job->size, job->fn_arg);
> return;
> ```
>
> However, "Running Serialized Jobs" is more challenging due to its
> various workers queuing each other, making it more complex than "Running
> Multithreaded Jobs." I am currently in the process of deciphering the
> code.
Actually, I did not get it. Why the above code cannot work? The above
code already make it serialized in one call, right? What do I miss here?
Thanks.
>
> To eliminate kconfig warnings, other methods could be considered:
>
> 2. Split hugetlb parallelization into a separate kconfig.
> 3. Wrap hugetlb parallelization with SMP or PADATA macros (already ruled out).
> 4. Split PADATA into PADATA_SERIALIZED and PADATA_MULTITHREADED (too heavy).
>
> Anyway, this is only FYI. I will continue exploring how to deparallelize
> "Running Serialized Jobs."
next prev parent reply other threads:[~2024-02-05 7:38 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-04 7:25 [PATCH 1/1] hugetlb: fix CONFIG_PADATA dependency for non-SMP system Gang Li
2024-02-04 7:44 ` Muchun Song
2024-02-04 7:48 ` Gang Li
2024-02-05 6:55 ` Gang Li
2024-02-05 7:37 ` Muchun Song [this message]
2024-02-05 8:08 ` Gang Li
-- strict thread matches above, loose matches on Subject: below --
2024-02-08 2:39 Muchun Song
2024-02-10 2:45 ` Muchun Song
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=7472563F-5C2D-4DCB-ACD6-F86D7A18BDF2@linux.dev \
--to=muchun.song@linux.dev \
--cc=akpm@linux-foundation.org \
--cc=gang.li@linux.dev \
--cc=ligang.bdlg@bytedance.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lkp@intel.com \
--cc=rdunlap@infradead.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.