Open
Bug 765980
Opened 12 years ago
Updated 2 years ago
IonMonkey: Fix earley-boyer performance
Categories
(Core :: JavaScript Engine, defect)
Core
JavaScript Engine
Tracking
()
NEW
People
(Reporter: dvander, Unassigned)
References
(Depends on 3 open bugs, Blocks 1 open bug)
Details
(Whiteboard: [ion:p1])
Attachments
(1 file)
1.36 KB,
text/plain
|
Details |
We're spending a huge amount of time in the interpreter on this benchmark, and it appears the same is true in JM+TI as well. In JM+TI we recompile 112 times. In IM (--no-jm) we have 80 invalidations that are unique for an invalidation session. In most cases it looks like we land in the interpreter because of a failing type barrier and in at least one instance, we invalidate 80 copies of a function on the stack.
Fixing this will most likely make JM+TI much faster too, but I'm not 100% sure on that.
Comment 1•12 years ago
|
||
(In reply to David Anderson [:dvander] from comment #0)
> In IM (--no-jm) we have 80 invalidations that are unique for an
> invalidation session.
Last time I had to check for that I clean-up the invalidation messages but I don't recall seeing any list of 80 invalidations, maybe a stack with 80 Ion frames/activations in which lots of frame had been invalidated but not 80 invalidations. It would be interesting to check if this is always the same property which is causing these invalidation.
One other issue is that Earley boyer is changing constantly between Ion monkey frames and something else. If this something else is the interpreter we may expect a lot of performance issue from this point. Calling js_DumpBacktrace from the ThunkToInterpreter should help at detecting what is between Ion activations.
Comment 2•12 years ago
|
||
Do you know how much time is spent in the interp? 112 recompilations is a lot but since the test runs for a full second the interp time shouldn't be a huge % of execution time if we're able to compile everything. How many of the recompilations are due to GCs throwing code away? Also, what does behavior / performance look like when the test runs for longer?
Reporter | ||
Comment 3•12 years ago
|
||
Okay, I got a better performance view of this now. We definitely have a large number of recompilations but indeed that doesn't seem to be a big factor. I also don't see any evidence of interpreter/JIT transitions.
With bug 766428, --no-jm gets 8% faster than with JM+Ion, so some tuning is needed. bug 766218 and bug 766468 should help considerably too. After that, we need inlining of functions which use |arguments|. Beyond that, it looks like we spend a lot of time in GC finalization so maybe we need generational GC there.
I'll profile again once some of this stuff has landed.
Reporter | ||
Updated•12 years ago
|
Reporter | ||
Updated•12 years ago
|
Reporter | ||
Updated•12 years ago
|
Whiteboard: [ion:t]
Reporter | ||
Comment 4•12 years ago
|
||
This still needs investigation. IonMonkey's score is about 15,600 to Crankshaft's 32,000. Increasing our score by 105% would raise our V8 score by about 9%.
Comment 5•12 years ago
|
||
Comment 6•12 years ago
|
||
For now removing myself as assignee. The performance is mostly blocked on GGC. After GGC lands I'll probably look again into these issues.
Assignee: hv1989 → general
Depends on: 864468, GenerationalGC
Assignee | ||
Updated•10 years ago
|
Assignee: general → nobody
Updated•2 years ago
|
Severity: normal → S3
Comment 7•2 years ago
|
||
The severity field for this bug is relatively low, S3. However, the bug has 12 votes.
:sdetar, could you consider increasing the bug severity?
For more information, please visit auto_nag documentation.
Flags: needinfo?(sdetar)
Updated•2 years ago
|
Flags: needinfo?(sdetar)
You need to log in
before you can comment on or make changes to this bug.
Description
•