• F
    perf: Process comm events by tid · 13eb04fd
    Frederic Weisbecker 提交于
    When we synthetize the existing running tasks though procfs,
    we walk through every threads of a process, queuing one comm
    events per tid.
    
    But then on report time, event__process_comm() only creates and
    sets the comm on a per process granularity. This is the right
    thing for comm events that came from the kernel, as they are
    only created on exec. Sub-threads then inherit their comm
    from fork events. But that doesn't work with our synthetized
    comm events taken from procfs informations as the per thread
    granularity is done on comm events directly there.
    
    Hence we need event__process_comm() to work with the tid rather
    than the pid. It won't change anything for comm events coming
    from the kernel but this will fix the synthetized ones.
    
    Before:
    
    	$ ./perf report -D | grep COMM | grep firefox
    
    	0x2c7b8 [0x18]: PERF_RECORD_COMM: firefox:5297
    	0x2c7d0 [0x18]: PERF_RECORD_COMM: firefox:5297
    	0x2c7e8 [0x18]: PERF_RECORD_COMM: firefox:5297
    	0x2c800 [0x18]: PERF_RECORD_COMM: firefox:5297
    	0x2c818 [0x18]: PERF_RECORD_COMM: firefox:5297
    	0x2c830 [0x18]: PERF_RECORD_COMM: firefox:5297
    
    After:
    	$ ./perf report -D | grep COMM | grep firefox
    
    	0x2c7b8 [0x18]: PERF_RECORD_COMM: firefox:5297
    	0x2c7d0 [0x18]: PERF_RECORD_COMM: firefox:5299
    	0x2c7e8 [0x18]: PERF_RECORD_COMM: firefox:5300
    	0x2c800 [0x18]: PERF_RECORD_COMM: firefox:5308
    	0x2c818 [0x18]: PERF_RECORD_COMM: firefox:5309
    	0x2c830 [0x18]: PERF_RECORD_COMM: firefox:5312
    
    This fixes various unresolved pid on perf sched.
    Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Tom Zanussi <tzanussi@gmail.com>
    Cc: Stephane Eranian <eranian@google.com>
    13eb04fd
event.c 19.5 KB