Open Bug 1978149 Opened 20 days ago Updated 8 days ago

JetStream3: dotnet performance

Categories

(Core :: JavaScript: WebAssembly, task, P3)

task

Tracking

()

People

(Reporter: rhunt, Unassigned)

References

(Blocks 1 open bug)

Details

DotNet/Blazor are contributing a benchmark to JetStream3. PR here [1]. Deploy preview here [2]. It has stabilized a bit and I think merging is imminent.

Of the two subtests

  • dotnet-interp: SM=5.6, V8=6.7
  • dotnet-aot: SM=15, V8=18.

We are 20% slower on both.

[1] https://github.com/WebKit/JetStream/pull/73
[2] https://deploy-preview-73--webkit-jetstream-preview.netlify.app/?test=dotnet

Type: enhancement → task

Baseline numbers (against V8 version 14.0.144), Intel Tiger Lake

V8 dotnet-interp
   126,107,840,075      instructions:u      #    3.03  insn per cycle
    41,570,773,094      cycles:u            #    4.138 GHz
    23,435,904,985      branches:u          #    2.333 G/sec
        55,996,055      branch-misses:u     #    0.24% of all branches
                        TopdownL1           #     14.6 %  tma_backend_bound
                                            #     31.7 %  tma_bad_speculation
                                            #      9.2 %  tma_frontend_bound
                                            #     44.5 %  tma_retiring
SM dotnet-interp
   131,623,363,082      instructions:u      #    2.42  insn per cycle
    54,499,461,255      cycles:u            #    4.123 GHz
    22,719,947,609      branches:u          #    1.719 G/sec
        57,613,541      branch-misses:u     #    0.25% of all branches
                        TopdownL1           #     17.7 %  tma_backend_bound
                                            #     35.7 %  tma_bad_speculation
                                            #     13.4 %  tma_frontend_bound
                                            #     33.2 %  tma_retiring

V8 dotnet-aot
    72,089,589,472      instructions:u      #    2.88  insn per cycle
    25,050,315,206      cycles:u            #    4.100 GHz
    11,990,239,156      branches:u          #    1.963 G/sec
        91,281,486      branch-misses:u     #    0.76% of all branches
                        TopdownL1           #     18.4 %  tma_backend_bound
                                            #     26.0 %  tma_bad_speculation
                                            #     11.7 %  tma_frontend_bound
                                            #     43.9 %  tma_retiring
SM dotnet-aot
    87,981,160,744      instructions:u      #    2.95  insn per cycle
    29,785,976,972      cycles:u            #    4.118 GHz
    17,456,267,649      branches:u          #    2.414 G/sec
       114,106,629      branch-misses:u     #    0.65% of all branches
                        TopdownL1           #      8.7 %  tma_backend_bound
                                            #     22.1 %  tma_bad_speculation
                                            #     20.2 %  tma_frontend_bound
                                            #     48.9 %  tma_retiring

dotnet-interp notes:

  • interpreter dispatch loop head clearly visible
  • bad Ion register allocation
  • we spend quite some time in baseline (stuck-in-baseline problem?)
  • 67.7 million calls to memCopy_m32, avg cost 38 insns
  • circa 240 million jumps through FarJumpIslands
You need to log in before you can comment on or make changes to this bug.