Re: Perf Reports Jump Instructions as Memory Access Instructions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Arnaldo,

This one may be for you ;-)

-- Steve


On Sun, 17 May 2020 19:40:52 +0430
ahmadkhorrami <ahmadkhorrami@xxxxxxxx> wrote:

> Hi,
> I used the following perf command to sample user space read accesses to 
> DRAM by evince:
> perf record -d --call-graph dwarf -c 100 -e 
> mem_load_uops_retired.l3_miss:uppp /opt/evince-3.28.4/bin/evince
> 
> As can be seen, I used the PEBS feature to increase the accuracy of 
> sampling. But there are some non-memory accesses reported as memory 
> ones. Here is one of them reported by perf script -D:
> 11159097179866 0xfb80 [0x1778]: PERF_RECORD_SAMPLE(IP, 0x4002): 
> 7309/7309: 0x7ffff6d6c310 period: 10000 addr: 0x7ffff7034e50
> ... FP chain: nr:0
> ... user regs: mask 0xff0fff ABI 64-bit
> .... AX    0x555555b8b4c0
> .... BX    0x555555c48e10
> .... CX    0x1
> .... DX    0x7fffffffd988
> .... SI    0x7fffffffd980
> .... DI    0x555555b8b4c0
> .... BP    0x258
> .... SP    0x7fffffffd978
> .... IP    0x7ffff6d6c310
> .... FLAGS 0x20e
> .... CS    0x33
> .... SS    0x2b
> .... R8    0x27c
> .... R9    0x24
> .... R10   0x2a2
> .... R11   0x0
> .... R12   0x258
> .... R13   0x555555b8b4c0
> .... R14   0x3000
> .... R15   0x7ffff5747000
> ... ustack: size 5768, offset 0xd8
>   . data_src: 0x5080022
>   ... thread: evince:7309
>   ...... dso: /usr/lib/x86_64-linux-gnu/libgdk-3.so.0.2200.30
> evince  7309 11159.097179:      10000    
> mem_load_uops_retired.l3_miss:uppp:     7ffff7034e50         5080022 
> N/A|SNP N/A|TLB N/A|LCK N/A
>          7ffff6d6c310 cairo_surface_get_device_scale@plt+0x0 
> (/usr/lib/x86_64-linux-gnu/libgdk-3.so.0.2200.30)
>          7ffff6d91029 gdk_window_create_similar_surface+0xc9 
> (/usr/lib/x86_64-linux-gnu/libgdk-3.so.0.2200.30)
>          7ffff6d95410 gdk_window_begin_paint_internal+0x350 
> (/usr/lib/x86_64-linux-gnu/libgdk-3.so.0.2200.30)
>          7ffff6d956f1 gdk_window_begin_draw_frame+0xc1 
> (/usr/lib/x86_64-linux-gnu/libgdk-3.so.0.2200.30)
>          7ffff73c4942 gtk_widget_render+0xd2 
> (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0.2200.30)
>          7ffff7268858 gtk_main_do_event+0x708 
> (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0.2200.30)
>          7ffff6d79764 _gdk_event_emit+0x24 
> (/usr/lib/x86_64-linux-gnu/libgdk-3.so.0.2200.30)
>          7ffff6d897f4 _gdk_window_process_updates_recurse_helper+0x104 
> (/usr/lib/x86_64-linux-gnu/libgdk-3.so.0.2200.30)
>          7ffff6d8a9f5 gdk_window_process_updates_internal+0x165 
> (/usr/lib/x86_64-linux-gnu/libgdk-3.so.0.2200.30)
>          7ffff6d8abef gdk_window_process_updates_with_mode+0x11f 
> (/usr/lib/x86_64-linux-gnu/libgdk-3.so.0.2200.30)
>          7ffff574510c g_closure_invoke+0x19c 
> (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5600.4)
>          7ffff575805d signal_emit_unlocked_R+0xf4d 
> (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5600.4)
>          7ffff5760714 g_signal_emit_valist+0xa74 
> (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5600.4)
>          7ffff576112e g_signal_emit+0x8e 
> (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5600.4)
>          7ffff6d82ac8 gdk_frame_clock_paint_idle+0x3c8 
> (/usr/lib/x86_64-linux-gnu/libgdk-3.so.0.2200.30)
>          7ffff6d6e07f gdk_threads_dispatch+0x1f 
> (/usr/lib/x86_64-linux-gnu/libgdk-3.so.0.2200.30)
>          7ffff546ad02 g_timeout_dispatch+0x12 
> (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5600.4)
>          7ffff546a284 g_main_dispatch+0x154 (inlined)
>          7ffff546a284 g_main_context_dispatch+0x154 
> (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5600.4)
>          7ffff546a64f g_main_context_iterate+0x1ff (inlined)
>          7ffff546a6db g_main_context_iteration+0x2b 
> (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5600.4)
>          7ffff5a2be3c g_application_run+0x1fc 
> (/usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.5600.4)
>          555555573707 main+0x447 (/opt/evince-3.28.4/bin/evince)
>          7ffff4a91b96 __libc_start_main+0xe6 
> (/lib/x86_64-linux-gnu/libc-2.27.so)
>          555555573899 _start+0x29 (/opt/evince-3.28.4/bin/evince)
> 
> The access point is at offset 0 of the following disassembly:
> Dump of assembler code for function cairo_surface_get_device_scale@plt:
>     0x000000000002a310 <+0>:     jmpq   *0x2c8b3a(%rip)        # 0x2f2e50
>     0x000000000002a316 <+6>:     pushq  $0x1c7
>     0x000000000002a31b <+11>:    jmpq   0x28690
> 
> This is an unconditional jump which will not lead to macrofusion.
> 
> Any help is appreciated.
> 
> Regards.




[Index of Archives]     [Linux USB Development]     [Linux USB Development]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux