Skip to content

Investigate possibilities to prevent pause times due to synchronously blocking until concurrent marking is done #47492

Closed
@mkustermann

Description

@mkustermann

Under some conditions (e.g. promotions) a thread will synchronously wait for concurrent marking to finish. This could block a thread for prolonged periods of time.

We should investigate possibilities to split this time up into smaller chunks, possibly by making fast-allocating-threads "take a small break" if they know the concurrent marker will have hard time catching up. Possibly by making such threads even help with marking.

Furthermore we see sometimes back-to-back new-space collection with finalization of concurrent mark (as well as parallel mark). We should think about possible ways to avoid this, because doing two such already long synchronous operations back-to-back can create even longer synchronous pauses.

I'll attach an example timeline trace that was created using a slightly modified version of https://gist.github.com/mit-mit/ffa606e17569cecbd2c47c234ac1be21#file-isolate2-perf-md

/cc @rmacnak-google has some ideas here.

timeline.json

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-vmUse area-vm for VM related issues, including code coverage, and the AOT and JIT backends.vm-gcRelated to the VM's garbage collector

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions