• KOSAKI Motohiro's avatar
    tracing: Don't use tracing_record_cmdline() in workqueue tracer · c3ffc7a4
    KOSAKI Motohiro authored
    Impact: improve workqueue tracer output
    
    Currently, /sys/kernel/debug/tracing/trace_stat/workqueues can display
    wrong and strange thread names.
    
    Why?
    
    Currently, ftrace has tracing_record_cmdline()/trace_find_cmdline()
    convenience function that implements a task->comm string cache.
    
    This can avoid unnecessary memcpy overhead and the workqueue tracer
    uses it.
    
    However, in general, any trace statistics feature shouldn't use
    tracing_record_cmdline() because trace statistics can display
    very old process. Then comm cache can return wrong string because
    recent process overrides the cache.
    
    Fortunately, workqueue trace guarantees that displayed processes
    are live. Thus we can search comm string from PID at display time.
    
    <before>
    
    % cat workqueues
     # CPU  INSERTED  EXECUTED   NAME
     # |      |         |          |
    
       7 431913     431913       kondemand/7
       7      0          0       tail
       7     21         21       git
       7      0          0       ls
       7      9          9       cat
       7 832632     832632       unix_chkpwd
       7 236292     236292       ls
    
    Note: tail, git, ls, cat unix_chkpwd are obiously not workqueue thread.
    
    <after>
    
    % cat workqueues
     # CPU  INSERTED  EXECUTED   NAME
     # |      |         |          |
    
       7    510        510       kondemand/7
       7      0          0       kmpathd/7
       7     15         15       ata/7
       7      0          0       aio/7
       7     11         11       kblockd/7
       7   1063       1063       work_on_cpu/7
       7    167        167       events/7
    Signed-off-by: default avatarKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
    Cc: Steven Rostedt <srostedt@redhat.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    c3ffc7a4
trace_workqueue.c 7.05 KB