From: Minchan Kim <minchan@kernel.org>
To: Aaron Lu <aaron.lu@intel.com>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Dave Hansen <dave.hansen@intel.com>,
Tim Chen <tim.c.chen@intel.com>,
Andrew Morton <akpm@linux-foundation.org>,
Ying Huang <ying.huang@intel.com>
Subject: Re: [PATCH v2 3/5] mm: use a dedicated workqueue for the free workers
Date: Wed, 22 Mar 2017 17:55:12 +0900 [thread overview]
Message-ID: <20170322085512.GA32359@bbox> (raw)
In-Reply-To: <20170322084103.GC2360@aaronlu.sh.intel.com>
On Wed, Mar 22, 2017 at 04:41:04PM +0800, Aaron Lu wrote:
> On Wed, Mar 22, 2017 at 03:33:35PM +0900, Minchan Kim wrote:
> > Hi,
> >
> > On Wed, Mar 15, 2017 at 05:00:02PM +0800, Aaron Lu wrote:
> > > Introduce a workqueue for all the free workers so that user can fine
> > > tune how many workers can be active through sysfs interface: max_active.
> > > More workers will normally lead to better performance, but too many can
> > > cause severe lock contention.
> >
> > Let me ask a question.
> >
> > How well can workqueue distribute the jobs in multiple CPU?
>
> I would say it's good enough for my needs.
> After all, it doesn't need many kworkers to achieve the 50% time
> decrease: 2-4 kworkers for EP and 4-8 kworkers for EX are enough from
> previous attched data.
>
> > I don't ask about currency but parallelism.
> > I guess benefit you are seeing comes from the parallelism and
> > for your goal, unbound wq should spawn a thread per cpu and
> > doing the work in every each CPU. does it work?
>
> I don't think a unbound workqueue will spawn a thread per CPU, that
> seems too much a cost to have a unbound workqueue.
>
> My understanding of the unbound workqueue is that it will create a
> thread pool for each node, versus each CPU as in the bound workqueue
> case, and use threads from the thread pool(create threads if not enough)
> to do the work.
Yes, that was my understand so I read code and found that
insert_work:
..
if (__need_more_worker(pool))
wake_up_worker(pool);
so I thought if there is a running thread in that node, workqueue
will not wake any other threads so parallelism should be max 2.
AFAIK, if the work goes sleep, scheduler will spawn new worker
thread so the active worker could be a lot but I cannot see any
significant sleepable point in that work(ie, batch_free_work).
>
> I guess you want to ask if the unbound workqueue can spawn enough
> threads to do the job? From the output of 'vmstat 1' during the free()
> test, I can see some 70+ processes in runnable state when I didn't
> set an upper limit for max_active of the workqueue.
Hmm, it seems I was wrong. I am really curious how we can have
70+ active workers in that. Could you explain what I am missing?
Thanks.
>
> Thanks,
> Aaron
>
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to majordomo@kvack.org. For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2017-03-22 8:55 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-15 8:59 [PATCH v2 0/5] mm: support parallel free of memory Aaron Lu
2017-03-15 9:00 ` [PATCH v2 1/5] mm: add tlb_flush_mmu_free_batches Aaron Lu
2017-03-15 9:00 ` [PATCH v2 2/5] mm: parallel free pages Aaron Lu
2017-03-15 9:42 ` Hillf Danton
2017-03-15 11:54 ` Aaron Lu
2017-03-15 9:00 ` [PATCH v2 3/5] mm: use a dedicated workqueue for the free workers Aaron Lu
2017-03-22 6:33 ` Minchan Kim
2017-03-22 8:41 ` Aaron Lu
2017-03-22 8:55 ` Minchan Kim [this message]
2017-03-22 13:43 ` Aaron Lu
2017-03-23 5:53 ` Minchan Kim
2017-03-23 15:38 ` Dave Hansen
2017-03-24 12:37 ` Aaron Lu
2017-03-15 9:00 ` [PATCH v2 4/5] mm: add force_free_pages in zap_pte_range Aaron Lu
2017-03-15 9:00 ` [PATCH v2 5/5] mm: add debugfs interface for parallel free tuning Aaron Lu
2017-03-15 14:18 ` [PATCH v2 0/5] mm: support parallel free of memory Michal Hocko
2017-03-15 15:44 ` Aaron Lu
2017-03-15 16:28 ` Michal Hocko
2017-03-15 21:38 ` Tim Chen
2017-03-16 9:07 ` Michal Hocko
2017-03-16 18:36 ` Tim Chen
2017-03-17 7:47 ` Michal Hocko
2017-03-17 8:07 ` Minchan Kim
2017-03-17 12:33 ` Aaron Lu
2017-03-17 12:59 ` Michal Hocko
2017-03-17 13:16 ` Peter Zijlstra
2017-03-17 12:53 ` Peter Zijlstra
2017-03-17 13:05 ` Michal Hocko
2017-03-21 14:54 ` Dave Hansen
2017-03-22 8:02 ` Aaron Lu
2017-03-24 7:04 ` Aaron Lu
2017-03-21 15:18 ` Tim Chen
2017-03-16 6:54 ` Aaron Lu
2017-03-16 7:34 ` Aaron Lu
2017-03-16 13:51 ` Aaron Lu
2017-03-16 14:14 ` Aaron Lu
2017-03-15 14:56 ` Vlastimil Babka
2017-03-15 15:50 ` Aaron Lu
2017-03-17 3:10 ` Aaron Lu
2017-03-16 19:38 ` Alex Thorlton
2017-03-17 2:21 ` Aaron Lu
2017-03-20 19:15 ` Alex Thorlton
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=20170322085512.GA32359@bbox \
--to=minchan@kernel.org \
--cc=aaron.lu@intel.com \
--cc=akpm@linux-foundation.org \
--cc=dave.hansen@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=tim.c.chen@intel.com \
--cc=ying.huang@intel.com \
/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;
as well as URLs for NNTP newsgroup(s).