All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ripduman Sohan <Ripduman.Sohan@cl.cam.ac.uk>
To: Tejun Heo <tj@kernel.org>
Cc: linux-kernel@vger.kernel.org, peterz@infradead.org
Subject: Re: [PATCH] workqueue: Restore cpus_allowed mask for sleeping workqueue rescue threads
Date: Thu, 15 Sep 2011 17:14:30 +0100	[thread overview]
Message-ID: <20110915161430.GE1548@tusker> (raw)
In-Reply-To: <20110902002917.GD2752@htj.dyndns.org>

Tejun Heo <tj@kernel.org> wrote:

> Hello,
> 
> On Thu, Sep 01, 2011 at 02:36:33PM +0100, Ripduman Sohan wrote:
> > Rescuer threads may be migrated (and are bound) to particular CPUs when
> > active.  However, the allowed_cpus mask is not restored when they return
> > to sleep rendering inconsistent the presented and actual set of CPUs the
> > process may potentially run on.  This patch fixes this oversight by
> > recording the allowed_cpus mask for rescuer threads when it enters the
> > rescuer_thread() main loop and restoring it every time the thread sleeps.
> 
> Hmmm... so, currently, rescuer is left bound to the last cpu it worked
> on.  Why is this a problem?
> 
> Thanks.
> 
> -- 
> tejun

Hi,

The rescuer being left bound to the last CPU it was active on is not a
problem.  As I pointed out in the commit log the issue is that the
allowed_cpus mask is not restored when rescuers return to sleep,
rendering inconsistent the presented and actual set of CPUs the
process may potentially run on.

Perhaps an explanation is in order.  I am working on a system where we
constantly sample process run-state (including the process
Cpus_Allowed field in /proc/<pid>/status) to build a forward plan of
where the process _may_ run in the future.  In situations of high
memory pressue (common on our setup) where the rescuers ran often the
plan begun to significantly deviate from the calculated schedule
because rescuer threads were marked as only runnable on a single CPU
when in reality they would bounce across CPUs.

I've currently put in a special-case exception in our code to account
for the fact that rescuer threads may run on _any_ CPU regardless of
the current cpus_allowed mask but I thought it would be useful to
correct it.  I'm happy to continue with my current approach if you
deem the patch irrelevant.

Kind regards,

--rip

  reply	other threads:[~2011-09-15 16:14 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-01 13:36 [PATCH] workqueue: Restore cpus_allowed mask for sleeping workqueue rescue threads Ripduman Sohan
2011-09-02  0:29 ` Tejun Heo
2011-09-15 16:14   ` Ripduman Sohan [this message]
2011-09-17  0:29     ` Tejun Heo
2011-09-18  6:36     ` Gilad Ben-Yossef
2011-09-24  3:07       ` Tejun Heo
2011-09-25  6:02         ` Gilad Ben-Yossef
2011-09-30  8:09           ` Tejun Heo
2011-09-30  8:54             ` Ripduman Sohan
2011-09-30  8:57               ` Tejun Heo
2011-09-30  8:59                 ` Ripduman Sohan
2011-10-01  1:10                   ` Tejun Heo
  -- strict thread matches above, loose matches on Subject: below --
2011-08-31 13:17 Ripduman Sohan
2011-08-31 15:20 ` Peter Zijlstra

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=20110915161430.GE1548@tusker \
    --to=ripduman.sohan@cl.cam.ac.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=tj@kernel.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.