> Hi Kan, > > On Tue, 4 Nov 2014 17:07:43 +0000, Kan Liang wrote: > > Hi Namhyung, > > > >> > tchain_edit [.] f1 > >> > 0.14% 3.913444 tchain_edit [.] f2 > >> > 99.82% 1.005478 tchain_edit [.] f3 > >> > >> Hmm.. I think it should be a default behavior for perf diff, > >> otherwise -s symbol is almost meaningless IMHO. > > > > I think we need both instruction level and function level diff. > > For debugging scaling issue, I think we need to do deeper analysis for > > some cache or lock issue. The function level is too high granularity. > > > > The new option can be used to debug scaling regression issue. > > If the binary/kernel is updated, it doesn't make sense to compare the > > symbol address, since it should be changed. So comparing the function > > should be more useful. > > > > > >> What about setting the > >> sort_sym.se_collapse in data_process() so that hists__match() can use > >> symbol names? > > > > Yes, we can set it if we only do function level diff. But I'd like to > > keep both. So I defined two sort keys. > > "symbol" means "symbol address executed at the time of sample " > > "symbol_name" means "name of function executed at the time of > sample" > > Hmm.. I don't think the symbol sort key provides the instruction level diff > that you want. If it finds a symbol it just use the start address of the > symbol, not the exact address of the sample. Am I missing something? >
No, the meaning of symbol in perf diff is different as in perf report. It uses the exact address of the sample. Here is current perf diff result and objdump fragment of the first binary. You can see the exact address of the sample in function f3 was used, not the start address. 33.55% [unknown] [.] 0x0000000000400554 48.13% [unknown] [.] 0x000000000040056b [perf-test]#./perf diff -s dso,symbol --compute ratio ../../../v1_1_6perf.data ../../../v2_1_7perf.data # Event 'cycles' # # Baseline Ratio Shared Object Symbol # ........ .............. ................. ......................... # [kernel.kallsyms] [k] __update_cpu_load [kernel.kallsyms] [k] mod_timer 0.01% [kernel.kallsyms] [k] native_write_msr_safe 0.01% [kernel.kallsyms] [k] notifier_call_chain 0.01% [kernel.kallsyms] [k] perf_event_task_tick [kernel.kallsyms] [k] rt_mutex_slowlock 0.01% [kernel.kallsyms] [k] run_posix_cpu_timers 0.01% [kernel.kallsyms] [k] run_timer_softirq 0.01% [kernel.kallsyms] [k] trigger_load_balance 0.01% [kernel.kallsyms] [k] update_vsyscall [kernel.kallsyms] [k] wait_for_common [kernel.kallsyms] [k] 0x000000000028482a 0.05% [unknown] [.] 0x0000000000400540 0.04% [unknown] [.] 0x0000000000400541 0.03% [unknown] [.] 0x000000000040054b 0.04% [unknown] [.] 0x0000000000400552 33.55% [unknown] [.] 0x0000000000400554 1.22% [unknown] [.] 0x000000000040055a 8.00% [unknown] [.] 0x000000000040055e 0.02% [unknown] [.] 0x0000000000400562 8.41% [unknown] [.] 0x0000000000400564 48.13% [unknown] [.] 0x000000000040056b 0.16% [unknown] [.] 0x0000000000400570 0.17% [unknown] [.] 0x0000000000400571 [unknown] [.] 0x0000000000400580 [unknown] [.] 0x0000000000400581 0.01% [unknown] [.] 0x0000000000400583 0.01% [unknown] [.] 0x0000000000400588 [unknown] [.] 0x000000000040058b 0.01% 1240.990221 [unknown] [.] 0x000000000040058d [unknown] [.] 0x0000000000400590 0.06% [unknown] [.] 0x0000000000400591 [unknown] [.] 0x0000000000400593 0.04% [unknown] [.] 0x0000000000400595 0.01% 1240.603148 [unknown] [.] 0x0000000000400597 [unknown] [.] 0x000000000040059b [unknown] [.] 0x000000000040059d [unknown] [.] 0x00000000004005a1 [unknown] [.] 0x00000000004005a5 [unknown] [.] 0x00000000004005a7 [unknown] [.] 0x00000000004005a8 [unknown] [.] 0x00000000004005aa [unknown] [.] 0x00000000004005ba [unknown] [.] 0x00000000004005bf [unknown] [.] 0x00000000004005c4 [unknown] [.] 0x00000000004005c9 [unknown] [.] 0x00000000004005ce [unknown] [.] 0x00000000004005d2 [unknown] [.] 0x00000000004005d6 [unknown] [.] 0x00000000004005d8 [unknown] [.] 0x00000000004005f5 [perf-test]#objdump -d tchain_edit_1 0000000000400540 <f3>: 400540: 55 push %rbp 400541: 48 89 e5 mov %rsp,%rbp 400544: c7 45 f8 e8 03 00 00 movl $0x3e8,-0x8(%rbp) 40054b: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%rbp) 400552: eb 14 jmp 400568 <f3+0x28> 400554: 8b 45 fc mov -0x4(%rbp),%eax 400557: 83 e0 01 and $0x1,%eax 40055a: 85 c0 test %eax,%eax 40055c: 74 06 je 400564 <f3+0x24> 40055e: 83 45 fc 01 addl $0x1,-0x4(%rbp) 400562: eb 04 jmp 400568 <f3+0x28> 400564: 83 45 fc 01 addl $0x1,-0x4(%rbp) 400568: 8b 45 fc mov -0x4(%rbp),%eax 40056b: 3b 45 f8 cmp -0x8(%rbp),%eax 40056e: 7c e4 jl 400554 <f3+0x14> 400570: 5d pop %rbp 400571: c3 retq Thanks, Kan > Thanks, > Namhyung -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/