AnsweredAssumed Answered

Incorrect information for PMCx0D4 [Div Op Count] (Core::X86::Pmc::Core::ExDivCount) in Family 17h PPR

Question asked by doug16k on Oct 19, 2019

Looking at `sudo perf top -F 15000 -a -n -z -e 'cpu/event=0xD4,cmask=0x00,edge=0,inv=0,umask=0x0/'` I get counts on anything but divides. I have not seen it actually count on or near a divide, ever. The PPR is wrong.

 

Measuring on a Ryzen 2700X Stepping 2

Samples: 41K of event 'cpu/event=0xD4,cmask=0x00,edge=0,inv=0,umask=0x0/', 15000 Hz, Event count (approx.
update_blocked_averages /proc/kcore [Percent: local period]
0.02  │ cmp %rdx,%rbx
0.02  │ ↓ je 781
       │100: mov 0x150(%rbx),%rax
1.43  │ cmp $0xffffffffb8d5c3c0,%rax
       │ ↓ je 156
0.06  │ mov 0x100(%rbx),%rcx
0.44  │ mov 0xa0(%rbx),%rdx
0.01  │ sub %rcx,%rdx
0.01  │ shr $0x6,%rcx
0.04  │ mov %rdx,%rdi
       │ sar $0x3f,%rdi
0.09  │ mov %rdi,%rsi
0.02  │ xor %rdx,%rsi
0.13  │ sub %rdi,%rsi
0.37  │ cmp %rcx,%rsi
0.03  │ ↓ jbe 156
       │ lock add %rdx,0x140(%rax)
0.88  │ mov 0xa0(%rbx),%rax
0.00  │ mov %rax,0x100(%rbx)
0.01  │14f: mov 0x150(%rbx),%rax
0.21  │156: mov 0xf0(%rax),%rax
7.58  │ mov -0x38(%rbp),%rcx
0.05  │ mov (%rax,%rcx,1),%r12
23.36 │ test %r12,%r12
0.02  │ ↓ je 46c
0.60  │ cmpq $0x0,0x1a0(%r12)
35.91 │ ┌──jne 19a
0.65  │ │ cmpq $0x0,0x1b0(%r12)
0.20  │ │↓ jne 19a
0.29  │ │ mov 0x160(%r12),%rax
4.24  │ │ cmpq $0x0,0x108(%rax)
1.47  │ │↓ je 46c
0.02  │19a:└─→mov 0x158(%r12),%r13
0.24  │ mov 0x18c(%r13),%r8d
0.77  │ mov 0x130(%r13),%r15
0.25  │ test %r8d,%r8d
0.02  │ ↓ jne 87b
       │ cmpl $0x1,0x998(%r15)
0.07  │ mov %r15,%rdx
       │ ↓ jbe 891
0.02  │1ca: mov 0x9a8(%r15),%r10
       │ sub 0x180(%r13),%r10
       │1d8: cmpq $0x0,0x180(%r12)
       │ ↓ je 1ff
       │ mov 0xa20(%rdx),%esi
       │ mov %r10,%rdi
       │ mov %r12,%rcx
0.01  │ mov %r13,%rdx
0.01  │ mov %r10,-0x48(%rbp)
0.01  │ → callq __update_load_avg_se
       │ mov -0x48(%rbp),%r10
0.01  │1ff: mov 0xc4(%r13),%r15d

Outcomes