Skip to content
  • Tejun Heo's avatar
    workqueue: Show the latest workqueue name in /proc/PID/{comm,stat,status} · 6b59808b
    Tejun Heo authored
    
    
    There can be a lot of workqueue workers and they all show up with the
    cryptic kworker/* names making it difficult to understand which is
    doing what and how they came to be.
    
      # ps -ef | grep kworker
      root           4       2  0 Feb25 ?        00:00:00 [kworker/0:0H]
      root           6       2  0 Feb25 ?        00:00:00 [kworker/u112:0]
      root          19       2  0 Feb25 ?        00:00:00 [kworker/1:0H]
      root          25       2  0 Feb25 ?        00:00:00 [kworker/2:0H]
      root          31       2  0 Feb25 ?        00:00:00 [kworker/3:0H]
      ...
    
    This patch makes workqueue workers report the latest workqueue it was
    executing for through /proc/PID/{comm,stat,status}.  The extra
    information is appended to the kthread name with intervening '+' if
    currently executing, otherwise '-'.
    
      # cat /proc/25/comm
      kworker/2:0-events_power_efficient
      # cat /proc/25/stat
      25 (kworker/2:0-events_power_efficient) I 2 0 0 0 -1 69238880 0 0...
      # grep Name /proc/25/status
      Name:   kworker/2:0-events_power_efficient
    
    Unfortunately, ps(1) truncates comm to 15 characters,
    
      # ps 25
        PID TTY      STAT   TIME COMMAND
         25 ?        I      0:00 [kworker/2:0-eve]
    
    making it a lot less useful; however, this should be an easy fix from
    ps(1) side.
    
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Suggested-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    Cc: Craig Small <csmall@enc.com.au>
    6b59808b