linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: Michal Hocko <mhocko@kernel.org>
Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>,
	akpm@linux-foundation.org, linux-mm@kvack.org,
	Mel Gorman <mgorman@suse.de>, Vlastimil Babka <vbabka@suse.cz>
Subject: Re: [PATCH] mm: Use WQ_HIGHPRI for mm_percpu_wq.
Date: Mon, 28 Aug 2017 10:06:11 -0700	[thread overview]
Message-ID: <20170828170611.GV491396@devbig577.frc2.facebook.com> (raw)
In-Reply-To: <20170828121055.GI17097@dhcp22.suse.cz>

Hello, Michal.

On Mon, Aug 28, 2017 at 02:10:56PM +0200, Michal Hocko wrote:
> I am not sure I understand how WQ_HIGHPRI actually helps. The work item
> will get served by a thread with higher priority and from a different
> pool than regular WQs. But what prevents the same issue as described
> above when the highprio pool gets congested? In other words what make
> WQ_HIGHPRI less prone to long stalls when we are under low memory
> situation and new workers cannot be allocated?

So, the problem wasn't new worker not getting allocated due to memory
pressure.  Rescuer can handle that.  The problem is that the regular
worker pool is occupied with something which is constantly in runnable
state - most likely writeback / reclaim, so the workqueue doesn't
schedule the other work items.

Setting WQ_HIGHPRI works as highpri worker pool isn't likely to be
contended that way but might not be the best solution.  The right
thing to do would be setting WQ_CPU_INTENSIVE on the work items which
can burn a lot of CPU cycles so that it doesn't get in the way of
other work items (workqueue should probably trigger a warning on these
work items too).

Tetuso, can you please try to find which work items are occupying the
worker pool for an extended period time under memory pressure and set
WQ_CPU_INTENSIVE on them?

> > If we do want to make
> > sure that work items on mm_percpu_wq workqueue are executed without delays,
> > we need to consider using kthread_workers instead of workqueue. (Or, maybe
> > somehow we can share one kthread with constantly manipulating cpumask?)
> 
> Hmm, that doesn't sound like a bad idea to me. We already have a rescuer
> thread that basically sits idle all the time so having a dedicated
> kernel thread will not be more expensive wrt. resources. So I think this
> is a more reasonable approach than playing with WQ_HIGHPRI which smells
> like a quite obscure workaround than a real fix to me.

Well, there's one rescuer in the whole system and you'd need
nr_online_cpus kthreads if you wanna avoid constant cacheline
bouncing.

Thanks.

-- 
tejun

--
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>

  reply	other threads:[~2017-08-28 17:06 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1503921210-4603-1-git-send-email-penguin-kernel@I-love.SAKURA.ne.jp>
2017-08-28 12:10 ` Michal Hocko
2017-08-28 17:06   ` Tejun Heo [this message]
2017-08-28 22:15     ` Tetsuo Handa
2017-08-28 23:02       ` Tejun Heo
2017-08-28 23:09         ` Tejun Heo
2017-08-29 11:14           ` Tetsuo Handa
2017-08-29 14:38             ` Tejun Heo
2017-08-29 21:41               ` Tejun Heo
2017-08-30 13:51                 ` Tetsuo Handa
2017-08-31  1:46                   ` Tejun Heo
2017-08-31 14:52                     ` Tetsuo Handa
2017-08-31 15:25                       ` Michal Hocko
2017-08-31 22:07                         ` Tetsuo Handa
2017-09-01 13:47                           ` Tejun Heo
2017-09-01 14:29                             ` Tetsuo Handa
2017-08-29 13:33     ` Michal Hocko
2017-08-29 14:33       ` Tejun Heo
2017-08-29 20:29         ` Tetsuo Handa
2017-08-30  6:40           ` Michal Hocko

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=20170828170611.GV491396@devbig577.frc2.facebook.com \
    --to=tj@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@suse.de \
    --cc=mhocko@kernel.org \
    --cc=penguin-kernel@I-love.SAKURA.ne.jp \
    --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