dotnet / dotnet/diagnostics

[Proposal] Introduce a new tool for converting traces

Open
#1,301 5 comments 3 reactions 0 assignees View on GitHub
diagnostic global tooling enhancement
Dominant language
C++
Stars
1.3k
Forks
404
Avg merge
2d 5h
Merged PRs (30d)
35

Description

From the user perspective, I would like to:

* be able to convert `.trace.zip` files captured with `perfcollect` to speedscope|chromium format to avoid the need of using a Windows machine while investigating .NET Core performance on Linux (cc @tmds @roji @AndyAyersMS)
* specify fold patterns. A good use case is folding `CPU_TIME` and `UNMANAGED_CODE_TIME` for `dotnet trace` captured traces (cc @swift-kim)
* specify time range to limit the size of the output file (very useful when working with chromium trace files which are VERY big, 15s of TechEmpower benchmark run on 28 core machine = 2 GB JSON file..)

The natural (and easy) choice to me would be to extend the `dotnet trace convert` command with new parameters. But in #905 @noahfalk mentioned that he would prefer to avoid adding new features to `dotnet trace` that depend on `TraceEvent` library (to be able to remove this heavy dependency in the future) so extending `dotnet trace convert` command is not an option.

So we need a new global tool for converting and filtering trace files. Since the tool will basically expose some of the PerfView features I wonder:

* where it should belong: https://github.com/dotnet/diagnostics or in https://github.com/Microsoft/perfview ?
* what would be a good name for it? (I am very open to any suggestions)

@noahfalk @brianrob what do you think?

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.