Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Mono]: Make EventPipe MonoProfiler provider GC events async safe. #56714

Merged

Commits on Aug 4, 2021

  1. Make EventPipe MonoProfiler provider GC events async safe.

    EventPipe MonoProfiler provider includes most Mono profiler events,
    but events currently triggered during GC is not emitted since EventPipe
    is not async safe.
    
    This commit add support to emit the MonoProfiler events triggered during
    GC (gc resize, gc moves, gc roots and heap dump object references) into
    a async safe temporary memory buffer that will be emitted into EventPipe
    once GC completes (and world has been restarted). This opens up the
    ability to do heapshots using EventPipe running on Mono into nettrace
    files.
    
    Heapshots can be triggered in same way as on CoreCLR, creating an
    EventPipe session with GCHeapCollectKeyword keyword. Only one heapshot
    can be triggered at a time, so in order to trigger an additional
    heapshot, a new EventPipe session is setup (after the previous heapshot
    has completed). Heapshot events will be included in all session with
    configured keywords.
    
    It is also possible to include all vtable/class references
    (including class name), into heap dump. This is enabled by a specific
    keyword and makes the dump self contained (no need to track type load etc).
    That way runtime can start up without any profiler support, and then it
    is possible to use custom tool or dotnet-trace to request a heap dump
    (including all referenced vtable/class references) and once that
    session is done, it is possible to do a new session and get a new
    separate heap dump into a new session. Having separate sessions in
    different files opens up the ability to diff between any heap dump over
    time.
    lateralusX committed Aug 4, 2021
    Configuration menu
    Copy the full SHA
    bea9457 View commit details
    Browse the repository at this point in the history
  2. Fix build errors.

    lateralusX committed Aug 4, 2021
    Configuration menu
    Copy the full SHA
    c622660 View commit details
    Browse the repository at this point in the history
  3. Review feedback.

    lateralusX committed Aug 4, 2021
    Configuration menu
    Copy the full SHA
    9a9b93c View commit details
    Browse the repository at this point in the history
  4. Fix build errors.

    lateralusX committed Aug 4, 2021
    Configuration menu
    Copy the full SHA
    8934709 View commit details
    Browse the repository at this point in the history

Commits on Aug 5, 2021

  1. Configuration menu
    Copy the full SHA
    1290c55 View commit details
    Browse the repository at this point in the history
  2. Fix build error.

    lateralusX committed Aug 5, 2021
    Configuration menu
    Copy the full SHA
    d41faae View commit details
    Browse the repository at this point in the history
  3. Fix build error.

    lateralusX committed Aug 5, 2021
    Configuration menu
    Copy the full SHA
    14edfcb View commit details
    Browse the repository at this point in the history

Commits on Aug 6, 2021

  1. Configuration menu
    Copy the full SHA
    f8b3a5b View commit details
    Browse the repository at this point in the history
  2. Fix build error.

    lateralusX committed Aug 6, 2021
    Configuration menu
    Copy the full SHA
    11ec49a View commit details
    Browse the repository at this point in the history