When running sudo perf top -p $(pidof -s julia) on a running Julia process, none of the function addresses are resolved to names:
Samples: 39K of event 'cycles', 4000 Hz, Event count (approx.): 22211461168 lost: 0/0 drop: 0/0
Overhead Shared Object Symbol
34.52% [JIT] tid 87617 [.] 0x00007f144fad4de9
25.65% [JIT] tid 87617 [.] 0x00007f144fad4db5
8.46% [JIT] tid 87617 [.] 0x00007f144fad4db2
6.52% [JIT] tid 87617 [.] 0x00007f144fad4deb
6.42% [JIT] tid 87617 [.] 0x00007f144fad4db4
5.87% [JIT] tid 87617 [.] 0x00007f144fad4ded
1.64% [JIT] tid 87617 [.] 0x00007f144fad4de0
1.58% [JIT] tid 87617 [.] 0x00007f144fad4dcf
1.51% [JIT] tid 87617 [.] 0x00007f144fad4dd6
1.42% [JIT] tid 87617 [.] 0x00007f144fad4db0
1.17% [JIT] tid 87617 [.] 0x00007f144fad4dbc
0.66% [JIT] tid 87617 [.] 0x00007f144fad4ddc
0.57% [JIT] tid 87617 [.] 0x00007f144fad4de4
0.42% [JIT] tid 87617 [.] 0x00007f144fad4dd3
0.40% [JIT] tid 87617 [.] 0x00007f144fad4de2
0.36% [JIT] tid 87617 [.] 0x00007f144fad4db8
0.33% libjulia-internal.so.1.7 [.] jl_module_names
0.29% libc-2.33.so [.] __strcmp_avx2
0.29% [JIT] tid 87617 [.] 0x00007f144fad4dd9
0.21% [JIT] tid 87617 [.] 0x00007f144fad4dcc
0.20% libjulia-internal.so.1.7 [.] jl_get_binding_
0.17% libjulia-internal.so.1.7 [.] jl_isa
0.15% libjulia-internal.so.1.7 [.] ptrhash_get
0.11% sys.so [.] julia_sortNOT._35705.clone_1.clone_2
This is understandable because it’s jitted code. But some Julia code from Julia’s base is resolved.
Does anybody know if there’s a project/patch that might help with showing correct symbols in perf top? It seems that there is support for this in NodeJS, but it required some internal changes to pass some data to perf, and I haven’t run NodeJS yet to find out how it works.
Any pointers would be welcome.