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

Message ID 20240116161929.232885-1-juri.lelli@redhat.com
Headers
Series Fix handling of rescuers affinity |

Message

Juri Lelli Jan. 16, 2024, 4:19 p.m. UTC
  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@github.com: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(-)