ultra 1.0.2
See the version list below for details.
dotnet tool install --global ultra --version 1.0.2
dotnet new tool-manifest # if you are setting up this repo dotnet tool install --local ultra --version 1.0.2
#tool dotnet:?package=ultra&version=1.0.2
nuke :add-package ultra --version 1.0.2
Ultra
<img align="right" width="160px" height="160px" src="https://raw.githubusercontent.com/xoofx/ultra/main/img/ultra.png">
Ultra is a an advanced profiler for .NET Applications available on Windows.
✨ 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 GCGCSuspendEE
,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! |
---|
🧑💻 Usage
You need to have installed a .NET 8.0+ SDK
$ 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
:
$ ultra.exe profile -- my_command.exe arg0 arg1 arg2...
⚠️ Notice the
--
separator to separate the arguments toultra.exe
from the arguments to the profiled application.
Profiling a running application just requires the PID of the process to profile:
$ 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.
🪪 License
This software is released under the BSD-2-Clause license.
🤗 Author
Alexandre Mutel aka xoofx.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
This package has no dependencies.