Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/xoofx/ultra
An advanced profiler for .NET Applications on Windows
https://github.com/xoofx/ultra
dotnet etw profiler
Last synced: 19 days ago
JSON representation
An advanced profiler for .NET Applications on Windows
- Host: GitHub
- URL: https://github.com/xoofx/ultra
- Owner: xoofx
- License: bsd-2-clause
- Created: 2024-11-18T09:56:16.000Z (24 days ago)
- Default Branch: main
- Last Pushed: 2024-11-18T13:55:00.000Z (24 days ago)
- Last Synced: 2024-11-18T14:17:04.447Z (24 days ago)
- Topics: dotnet, etw, profiler
- Language: C#
- Homepage:
- Size: 46.9 KB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
- Funding: .github/FUNDING.yml
- License: license.txt
Awesome Lists containing this project
- awesome-reference-tools - Ultra
README
# Ultra [![ci](https://github.com/xoofx/ultra/actions/workflows/ci.yml/badge.svg)](https://github.com/xoofx/ultra/actions/workflows/ci.yml) [![NuGet](https://img.shields.io/nuget/v/Ultra.svg)](https://www.nuget.org/packages/Ultra/)
Ultra is a an advanced profiler for .NET Applications available on Windows.
> 📽️ Check this [video](https://vimeo.com/1030852299) for a quick tour of ultra! 📽️
## ✨ Features
- ETW based **sampling profiler** - up to 8190 samples/second
- UI based on https://profiler.firefox.com/
- Traces shareable online: Check this example: ✨ https://share.firefox.dev/3Cya7YW ✨
- **Timeline** visualization
- **Flamegraph / Stack Chart** visualization
- **Call Tree** visualization
- **Marker Chart** and **Marker Table** visualization
- Precise **kernel**, **native** and **managed** **function call stacks**
- Categorization of functions:
- `.NET`, `.NET JIT`, `.NET GC`, `.NET CLR`, `Native`, `Kernel`
- .NET GC Memory track
- JIT Compile Time Event Markers
- See which function is getting compiled
- GC Events Markers
- `GC Allocation Ticks`: Details about allocations.
- `GCHeapStats`: Statistics about the GC
- `GCSuspendEE`, `GCRestartEE`, `GC Start`, `GC Stop` events
- Lightweight trace files - e.g. Generates only a few MB for 10s
- Requires `net8.0+` via dotnet global tool|Screenshot of a trace generated by ultra visualized with https://profiler.firefox.com. Check this trace online [here](https://share.firefox.dev/3Cya7YW)! |
|-----|
|![Profile Screenshot](./doc/profile_example.png)|## 🧑💻 Usage
You need to have installed a [.NET 8.0+ SDK](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
```console
$ dotnet tool install -g Ultra # The command ultra.exe will be available from your PATH
```> ____
> 🚨 The profiler **requires to run from an elevated prompt with administrative rights** 🚨
>
> _This is required to allow to collect full stack traces, including kernel and native functions._
> ____Example: open a **terminal with administrative rights**, to profile an executable called `my_commands.exe`:
```console
$ ultra.exe profile -- my_command.exe arg0 arg1 arg2...
```> ⚠️ Notice the `--` separator to separate the arguments to `ultra.exe` from the arguments to the profiled application.
Profiling a running application just requires the PID of the process to profile:
```console
$ ultra.exe profile 15243 # PID of the process to profile
# Wait for a bit and press only one CTRL+C to stop the profiling
```## 📖 User Guide
For more details on how to use Ultra, please visit the [user guide](https://github.com/xoofx/Ultra/blob/main/doc/readme.md).
## 🪪 License
This software is released under the [BSD-2-Clause license](https://opensource.org/licenses/BSD-2-Clause).
## 🤗 Author
Alexandre Mutel aka [xoofx](https://xoofx.github.io).