Closed Bug 561286 Opened 10 years ago Closed 10 years ago

Investigate imacro_asm regexpPool malloc/free thrashing

Categories

(Core :: JavaScript Engine, defect)

defect
Not set

Tracking

()

RESOLVED FIXED

People

(Reporter: cdleary, Assigned: cdleary)

References

Details

Attachments

(1 file)

A lot of one- or two-count arena frees occur in rapid succession while the current arena is only about ~40% utilization. This happens as part of our normal build procedure, and relates to bug 558971.
The fundamental difficulty here is that thrashing can occur at any stride -- if you account for a n-arena-allocation followed by n-arena-deallocation pattern, you are always foiled by the regexp that requires n+1 arenas each execution.

Because of this, you can use time locality to let the arenas sit and age until the next garbage collection. For imacro_asm, this seems particularly useful in regular expression evaluation.

For our arena implementation we can add a "soft release" mechanism that sets the |avail| pointers back to their base values. I'm also going to go nuts and say we can spring for a |prev| pointer in the arena structure to facilitate this, especially given that we're going for page-sized arena chunks nowadays.
Resolving with a dependency on bug 564060.
Status: ASSIGNED → RESOLVED
Closed: 10 years ago
Depends on: 564060
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.