Help with analysing JIT perf report
Max Lapshin
max.lapshin@REDACTED
Wed Jun 23 11:00:30 CEST 2021
I've clicked 'a' on this erts_schedule and see following:
Percent│ mov erts_msacc_enabled,%eax
│ movq $0x0,0x20(%rsp)
│ test %eax,%eax
│ ↓ je 7e3
│ mov erts_msacc_key,%edi
│ → callq ethr_tsd_get
│ mov %rax,0x20(%rsp)
│ 7e3: test %ebx,%ebx
│ movl $0x1,0x18(%rsp)
│ ↓ jne 1702
│ 7f3: mov 0xb0(%r14),%eax
│ test %eax,%eax
│ ↓ je 1660
│ movabs $0x7fffffffffffffff,%r13
│ xor %ebx,%ebx
│ 80e: mov $0x64,%edx
│ ↓ jmp 826
4.73 │ 815: subl $0x1,0x2c(%rsp)
1.64 │ mov 0x2c(%rsp),%eax
1.31 │ ┌──test %eax,%eax
│ ├──jle 15a0
0.03 │ 826:│ mov 0x18(%rbp),%r12d
0.01 │ │ mov %r12d,%eax
│ │ and $0x9,%eax
0.67 │ │ cmp $0x9,%eax
│ │↓ jne 15a0
86.62 │ │ pause
0.06 │ │ sub $0x1,%edx
3.92 │ │↑ jne 815
0.16 │ │→ callq sched_yield@REDACTED
0.00 │ │ test %eax,%eax
│ │ mov $0x64,%edx
82% on some instruction pause
I will try to run this again on non-lcnt beam, but seems that this is
somewhere around spinlock?
On Wed, Jun 23, 2021 at 11:39 AM Max Lapshin <max.lapshin@REDACTED> wrote:
>
> Perf report shows me things that I cannot analyse:
>
>
> + 63.85% 51.25% streamer beam.lcnt.smp [.] erts_schedule
> + 59.99% 0.02% streamer beam.lcnt.smp [.]
> erts_dirty_process_main
> + 29.50% 0.04% streamer jitted-881027-8664.so [.]
> gen_server:handle_msg/6
> + 25.66% 0.04% streamer jitted-881027-34178.so [.]
> mpts_reader:handle_info/2
>
>
> mpts_reader is my code and thanks for pointing out to me that it seems
> to be the CPU eater.
>
> I cannot understand what means that erts_schedule takes 63 / 51% of time.
> Is erts_schedule a container to all functions below?
More information about the erlang-questions
mailing list