Help with analysing JIT perf report

Jaka Bac jakabac@REDACTED
Wed Jun 23 11:23:19 CEST 2021


Hi

PAUSE instruction is probably part of the spinlock. This would imply that a
spinlock is busy-waiting a lot

Jaka

On Wed, 23 Jun 2021 at 11:00, Max Lapshin <max.lapshin@REDACTED> wrote:

> 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?
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20210623/fa94b7ca/attachment.htm>


More information about the erlang-questions mailing list