Code Monkey home page Code Monkey logo

dotnet-event-viewer's Introduction

.NET Events Viewer

This tool is a modern alternative to PerfView to analyze nettrace files collected from the .NET runtime's EventPipe or through the tool dotnet-trace. It has several benefits compared to PerfView:

  • User Friendly: even though I was using PerfView every week, I would always forget how to use it (e.g. how to filter GCAllocationTick events by large allocations again?). The interface of this project aims to be as intuitive as possible.
  • No Downloads: the tool is compiled to WebAssembly and is available directly from your browser so you don't have yet-another-tool to download and keep up-to-date. Note that the analysed trace files never exit your browser.
  • Cross-Platform: since it runs in the browser, this tool works on Windows, Mac, and Linux.

FAQ

I'm getting a File is too large to fit in memory error when loading a nettrace

Unfortunately, WebAssembly currently only allows 32-bit addressing, so it means the decompressed file is limited to 4 GiB. Also, there is currently another issue, only 1 of the 4 GiB can be used https://github.com/dotnet/runtime/issues/101926.

The feature X from PerfView is not available with this tool

This project aims to cover the most common use-cases according to my experience, i.e. find hot allocations path, find large object allocations, find sync-over-async or other thread starving patterns... So it's possible that some PerfView features are not available. Don't hesitate to open an issue if you feel like it should exist in this project.

Why was a new nettrace parser written for this project?

PerfView's nettrace parser is actually a nettrace to etlx converter + an etlx parser. Also, its performance is not great and it doesn't support async input which is mandatory to run in the browser.

dotnet-event-viewer's People

Contributors

verdie-g avatar

Watchers

 avatar  avatar

dotnet-event-viewer's Issues

Improve home page

Currently it only has an input to upload a file. It should give some context about the project and how to generate a nettrace using dotnet-trace.

OOM on large files

A 3 GB file threw a OOM exception which is unexpected since only 30% of my 32GB were used.

Improve aggregator experience

  • Disable aggregators according to the selected events
  • Automatically select stop events when their start event is selected
  • Event ids are mixed with event names. Choose one

Migrate to MudBlazor

I found too many bugs in Fluentui-blazor and I don't have the time to report them. Also MudBlazor has a lot more components.

Filter for events

Add a form on the list and the tree to filter events by name by also by field. I'm thinking about a mix of Grafana Tempo and Datadog:
image
image

Human-readable timestamp

Currently the timestamp is a QPC timestamp or something? Convert it to something that makes more sense to the user.

Add "thread pool stacks" only filter

A filter to only show stacks originating from a thread pool thread. That's useful for thread starvation scenarios. It could be detected by looking at the symbol names of the stacks or maybe an event already contain the info if a thread id is from the thread pool.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.