Open performanceautofiler[bot] opened 2 years ago
Maybe from https://github.com/dotnet/runtime/pull/70992? I can no longer see the diffs.
@jakobbotsch maybe take a look?
On my Raspberry Pi 400 I get:
Method | Job | Toolchain | Mean | Error | StdDev | Median | Min | Max | Ratio | RatioSD | Allocated | Alloc Ratio |
---|---|---|---|---|---|---|---|---|---|---|---|---|
EnterExit | Job-DXHTWZ | /base/corerun | 47.79 ns | 0.008 ns | 0.007 ns | 47.79 ns | 47.78 ns | 47.81 ns | 1.00 | 0.00 | - | NA |
EnterExit | Job-CINUBA | /diff-no-71512/corerun | 49.37 ns | 0.201 ns | 0.178 ns | 49.43 ns | 48.94 ns | 49.52 ns | 1.03 | 0.00 | - | NA |
EnterExit | Job-PAERIH | /diff/corerun | 58.67 ns | 0.823 ns | 0.770 ns | 58.96 ns | 56.76 ns | 58.97 ns | 1.23 | 0.02 | - | NA |
So this seems to be caused by https://github.com/dotnet/runtime/pull/71512 (the benchmark just calls Monitor.Enter
followed by Monitor.Exit
). cc @kunalspathak
base = 21a69aa7f70cad997959cce2c33e60d821daca61 diff = 4a63cb28b69e1c48bccf592150be7ba297b67950 diff-no-71512 = 4a63cb28b69e1c48bccf592150be7ba297b67950 with PR linked above reverted
On my Raspberry Pi 400
Does it have atomics?
Does it have atomics?
This is what I get out of lscpu
, so I don't think so:
Architecture: aarch64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
Vendor ID: ARM
Model: 3
Model name: Cortex-A72
Stepping: r0p3
CPU max MHz: 1800.0000
CPU min MHz: 600.0000
BogoMIPS: 108.00
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Vulnerable
Vulnerability Srbds: Not affected
Vulnerability Tsx async abort: Not affected
Flags: fp asimd evtstrm crc32 cpuid
Do the benchmark machines have atomics? I assume so since there were improvements, which means maybe the uncontended case regressed in either case?
Model name: Cortex-A72 Flags: fp asimd evtstrm crc32 cpuid
https://developer.arm.com/Processors/Cortex-A72 is based on Armv8-A
and doesn't have atomics so yes, https://github.com/dotnet/runtime/pull/71512 regresses such scenarios, because in addition to the logic we had, we would be doing an extra check to see if atomics
is present. However, the machine where the regression is reported has atomics
, so unlikely that it is because of https://github.com/dotnet/runtime/pull/71512.
Narrowing down the commit range for the improvement and regression, this is the commit range:
Run Information
Regressions in System.Threading.Tests.Perf_Monitor
Test Report
Repro