Commit ab5e5b99 authored by Juri Lelli's avatar Juri Lelli Committed by Tejun Heo
Browse files

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: default avatarJuri Lelli <juri.lelli@redhat.com>
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
parent 31c89007
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -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('')