Re: [RFC PATCH] rcu: move SRCU grace period work to power efficient workqueue

From: Kevin Hilman
Date: Fri Feb 14 2014 - 18:24:49 EST


Tejun Heo <tj@xxxxxxxxxx> writes:

> Hello,
>
> On Wed, Feb 12, 2014 at 11:02:41AM -0800, Paul E. McKenney wrote:
>> +2. Use the /sys/devices/virtual/workqueue/*/cpumask sysfs files
>> + to force the WQ_SYSFS workqueues to run on the specified set
>> + of CPUs. The set of WQ_SYSFS workqueues can be displayed using
>> + "ls sys/devices/virtual/workqueue".
>
> One thing to be careful about is that once published, it becomes part
> of userland visible interface. Maybe adding some words warning
> against sprinkling WQ_SYSFS willy-nilly is a good idea?

In the NO_HZ_FULL case, it seems to me we'd always want all unbound
workqueues to have their affinity set to the housekeeping CPUs.

Is there any reason not to enable WQ_SYSFS whenever WQ_UNBOUND is set so
the affinity can be controlled? I guess the main reason would be that
all of these workqueue names would become permanent ABI.

At least for NO_HZ_FULL, maybe this should be automatic. The cpumask of
unbound workqueues should default to !tick_nohz_full_mask? Any WQ_SYSFS
workqueues could still be overridden from userspace, but at least the
default would be sane, and help keep full dyntics CPUs isolated.

Example patch below, only boot tested on 4-CPU ARM system with
CONFIG_NO_HZ_FULL_ALL=y and verified that 'cat
/sys/devices/virtual/workqueue/writeback/cpumask' looked sane. If this
looks OK, I can maybe clean it up a bit and make it runtime check
instead of a compile time check.

Kevin