Experiment with making JSObjects cache line aligned
Categories
(Core :: JavaScript: GC, task, P3)
Tracking
()
People
(Reporter: jonco, Unassigned)
References
(Blocks 1 open bug)
Details
(Whiteboard: [sp3])
Attachments
(2 files)
Now TI has been removed, our JSObject type has the strange size of 12 bytes and our size classes still increment by 32 bytes. This results in JSObjects often crossing cache lines. We can explore using different classes like 1/5/13 to determine if performance improvements and reduced memory stalls can be measured.
| Reporter | ||
Comment 1•2 years ago
|
||
| Reporter | ||
Comment 2•2 years ago
|
||
| Reporter | ||
Comment 3•2 years ago
|
||
So far I've tested aligning object allocations in the nursery, aligning both the cell start and the nursery cell header (see attached patches).
This was done without changing object allocation sizes by adding more fixed slots. It turns out there a bunch of places in the engine and the JITs where we depend on the existing object sizes (and simply removing the assertions did not produce a working result). Jan pointed out that padding JSObject back up to its original size could still yield interesting results so that could be a future experiment.
The benchmark results for these patches are:
- https://treeherder.mozilla.org/perfherder/compare?originalProject=try&originalRevision=4cf8c22ca3e3583b1970baab9e034f3ac2225ea5&newProject=try&newRevision=95f3c14520521d05b387d2dd860524fe736bfd12&framework=13&page=1
- https://treeherder.mozilla.org/perfherder/compare?originalProject=try&originalRevision=4cf8c22ca3e3583b1970baab9e034f3ac2225ea5&newProject=try&newRevision=671f6ed7e3d86d9dea3fb80b932ebfb185531a28&framework=13&page=1
The results came out very similar for both patches. Several Jetstream2 subtests were affected, but little outside that test.
Jetsream2
- 13 large regressions on Windows subtests at high confidence (worst: base64 25-30%)
- 4 improvements at high confidence (best: jshint 13-28%)
- Linux similar to Windows, MacOS doesn't show improvements
Speedometer3:
- AngularJS-TodoMVC/DeletingAllItems/Async 60% regression at high confidence
- a few other small wins/losses in 2-4% range
- Linux and MacOS: no change
Matrix react bench: no significant changes
ARES6: no significant changes
Speedometer: no significant changes
Updated•2 years ago
|
Updated•2 years ago
|
Description
•