tools/workqueue: Add rescuers printing to wq_dump.py

Retrieving rescuers information (e.g., affinity and name) is quite
useful when debugging workqueues configurations.

Add printing of such information to the existing wq_dump.py script.

Signed-off-by: Juri Lelli <juri.lelli@redhat.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
Juri Lelli 2024-01-16 17:19:26 +01:00 committed by Tejun Heo
parent 31c8900728
commit ab5e5b99a9

View File

@ -175,3 +175,32 @@ for wq in list_for_each_entry('struct workqueue_struct', workqueues.address_of_(
if wq.flags & WQ_UNBOUND:
print(f' {wq.dfl_pwq.pool.id.value_():{max_pool_id_len}}', end='')
print('')
print('')
print('Workqueue -> rescuer')
print('=====================')
print(f'wq_unbound_cpumask={cpumask_str(wq_unbound_cpumask)}')
print('')
print('[ workqueue \ type unbound_cpumask rescuer pid cpumask]')
for wq in list_for_each_entry('struct workqueue_struct', workqueues.address_of_(), 'list'):
print(f'{wq.name.string_().decode()[-24:]:24}', end='')
if wq.flags & WQ_UNBOUND:
if wq.flags & WQ_ORDERED:
print(' ordered ', end='')
else:
print(' unbound', end='')
if wq.unbound_attrs.affn_strict:
print(',S ', end='')
else:
print(' ', end='')
print(f' {cpumask_str(wq.unbound_attrs.cpumask):24}', end='')
else:
print(' percpu ', end='')
print(' ', end='')
if wq.flags & WQ_MEM_RECLAIM:
print(f' {wq.rescuer.task.comm.string_().decode()[-24:]:24}', end='')
print(f' {wq.rescuer.task.pid.value_():5}', end='')
print(f' {cpumask_str(wq.rescuer.task.cpus_ptr)}', end='')
print('')