Compute true values of arm64BaselineBytesPerBytecode and related definitions
Categories
(Core :: JavaScript: WebAssembly, defect, P2)
Tracking
()
People
(Reporter: lth, Assigned: lth)
References
Details
(Whiteboard: [arm64:m3])
Attachments
(2 files)
|
6.21 KB,
patch
|
Details | Diff | Splinter Review | |
|
4.65 KB,
patch
|
luke
:
review+
|
Details | Diff | Splinter Review |
| Assignee | ||
Updated•8 years ago
|
| Assignee | ||
Updated•8 years ago
|
| Assignee | ||
Updated•8 years ago
|
Comment 1•7 years ago
|
||
| Assignee | ||
Comment 2•7 years ago
|
||
| Assignee | ||
Updated•7 years ago
|
Updated•7 years ago
|
Comment 3•7 years ago
|
||
| Assignee | ||
Comment 4•7 years ago
|
||
Updated•7 years ago
|
Comment 5•7 years ago
|
||
| Assignee | ||
Comment 6•7 years ago
|
||
| Assignee | ||
Comment 7•7 years ago
|
||
| Assignee | ||
Comment 8•7 years ago
|
||
| Assignee | ||
Comment 9•7 years ago
•
|
||
SoftIron Overdrive 1000 (4xCortex-A57, pretty spiffy), representative runs, this is baseline only since we have no ion:
bytecode machinecode machine/byte ms bytecodes/ms
zlib 66551 209840 3.15 3 22183
raybench 44504 173952 3.91 4 11126
box2d 97060 323200 3.33 6 16176
lua_binarytrees 215718 705952 3.27 12 17976
bullet 382678 1114016 2.91 17 22510
angrybots 10413501 29747744 2.86 414 25153
tanks 11039867 31967296 2.90 445 24808
zengarden 23891164 72693744 3.04 1032 23150
zlib highlights some cache effects. The benchmark appears to compile the same wasm program twice (ie create two new modules from the same bytecode array). The second compilation is about twice as fast as the first, presumably because both bytecode and compiler are in-cache. (What's reported here is the second compilation.)
As programs get larger, we see machine code bytes per bytecode byte approach 3.0. Since this is baseline, compile times are really not that interesting, but if we have a plausible ion/baseline compilation time factor from another platform we can use that as a placeholder. On x64, for the larger programs, that factor is about 4 on my Xeon system, let's say 5 to use a round number.
In addition, the ARM64 system I'm using for this is pretty fast, so let's assume that current consumer hardware will take twice as long to compile. (Bug 1496325 is about monitoring these values continually across our user population.) High-end phones now have 4 fast cores so the fact that my dev system is quad-core should not be a factor.
Thusly, we get the following initial values for ARM64:
arm64BaselineBytesPerBytecode = 3.0
arm64IonBytesPerBytecode = 2.75 (this is a guess, we have no data)
arm64BytecodesPerMs = 24000/5/2 = 2400
Remarkably, 2400 bytecodes/ms is faster than the value we're using for x64 (2100) but the reference hardware for x64 is fairly old, it might be worth re-measuring. On my Xeon system I see stable rates of 15K bytecodes/ms with Ion, and 60K-100K/ms with baseline.
| Assignee | ||
Comment 10•7 years ago
|
||
Ah, but the perf data we want is per core, so now the world is right again: this gives an ARM64 bytecode per ms count (for Ion) around 600, which sounds just right. This is poorly documented, so I'll include better documentation in the patch.
| Assignee | ||
Comment 11•7 years ago
|
||
As above but with --no-threads then:
raybench 7316 bytecodes/ms
bullet 7972 bytecodes/ms
angrybots 7390 bytecodes/ms
tanks 7291 bytecodes/ms
zengarden 6928 bytecodes/ms
This gives us pretty much 730 bytecodes/ms/core which is a good number.
Incidentally, the "guess" values currently in the code are very close to the computed values.
| Assignee | ||
Comment 12•7 years ago
|
||
Very minor adjustments from our initial guesses, actually. Updated some comments and clarified some names.
The code for recording & computing these values will move to the telemetry bug; the present bug is only about the static values themselves.
Comment 13•7 years ago
|
||
Comment on attachment 9035113 [details] [diff] [review]
bug1442540-arm64-tier-parameters.patch
Review of attachment 9035113 [details] [diff] [review]:
Nice job with the thorough evaluation!
Comment 14•7 years ago
|
||
Comment 15•7 years ago
|
||
| bugherder | ||
Description
•