[RFC PATCH 0/4] Fix handling of rescuers affinity

From: Juri Lelli
Date: Tue Jan 16 2024 - 11:20:07 EST


Hello,

Recently I've been pointed at the fact that workqueue rescuers seem not
to follow unbound workqueues cpumask changes. This small series is a
first stab at possibly fixing what I considered to be different from
what I expected (it might very well be the case that my expectations are
wrong :). Long story short, it seems to me that we currently have
several cases where a change of the general unbound cpumask or a change
of the per-workqueue cpumask (for WQ_SYSFS workqueues) is not reflected
into the corresponding rescuer affinity (if a rescuer is present).

In the following:

Patch 01/04 - Adds debug information to wq_dump.py script so that we
can more easily check workqueues and rescuers cpumasks
02/04 - Fixes cpumask discrepancies when rescuers are created
03/04 - Streamlines behavior of general unbound vs. WQ_SYSFS
cpumask changes
04/04 - Makes sure existing rescuers affinity follows their
workqueue cpumask changes

Please take a look, I'm all for feedback and better understanding of the
details I'm certainly missing.

For additional context, a related discussion can be found at

https://lore.kernel.org/lkml/um77hym4t6zyypfbhwbaeqxpfdzc657oa7vgowdfah7cuctjak@pexots3mfb24/

Branch for testing available at

git@xxxxxxxxxx:jlelli/linux.git workqueue/rescuers-cpumask

Best,
Juri

Juri Lelli (4):
workqueue: Add rescuers printing to wq_dump.py
kernel/workqueue: Bind rescuer to unbound cpumask for WQ_UNBOUND
kernel/workqueue: Distinguish between general unbound and WQ_SYSFS
cpumask changes
kernel/workqueue: Let rescuers follow unbound wq cpumask changes

kernel/workqueue.c | 28 +++++++++++++++++++++-------
tools/workqueue/wq_dump.py | 29 +++++++++++++++++++++++++++++
2 files changed, 50 insertions(+), 7 deletions(-)

--
2.43.0