perfview
perfview copied to clipboard
Is there any plan to make PerfView usable on MacOs or Linux?
Is there any plan to make PerfView usable on MacOs?
.NET Core has a relative new feature called EventPipe that allows collection of interesting profiles on any .NET Core supported platform (including Mac OS). This will be surfaced though a new 'dotnet trace' command coming out in a V3.0 Perfview in a month or so. This allows you to collect traces on MacOS.
There is a web based tool called speedscope https://www.speedscope.app/ that lets you look at profile data, and this dotnet trace command should have the capability of converging trace (whose native format is a *.netperf file), into a *.speedscope file that speedscope can open.
This gives you SOME viewer on MacOS for .NET Core profile data. (You can also copy the *.netperf file back to windows and open it with PerfView).
There has also been an effort to make a HTML/JS version based GUI for PerfView (see the src/PerfVIewJS). This viewer will work in any browser (so it can work on MacOS) and we can also make an electron (https://electronjs.org/) app out of it.
This work does not have formal Microsoft funding, so while I can say there is a plan (strategy) for geting PerfView on MacOS, I can't really give you any timetable @mjsabby is the developer currently driving this (and his time is split many ways).
@adamsitnik @noahfalk @jorive @mjsabby
So in short, yes, there is a strategy for getting PerfView on MacOS (and indeed we have a prototype), but exactly when it would be considered a true offering, is harder to nail down.
If you are interested in working on pushing the PerfViewJS code forward, we can continue the conversation withh @mjsabby.
Hope it support Linux.
There has also been an effort to make a HTML/JS version based GUI for PerfView (see the src/PerfVIewJS). This viewer will work in any browser (so it can work on MacOS) and we can also make an electron (https://electronjs.org/) app out of it.
Does this lives on a public repository right now?
It lives here. https://github.com/microsoft/perfview/tree/master/src/PerfViewJS and is being actively developed & used internally at Microsoft, but I haven't had time to put it inside a chrome/shell.
Friendly bump on this, as Microsoft is enticing developers with dotnet core xplat capabilities, development experience is pretty decent but tracing is pretty much limited to speed scope and we lose so much info. Using a m1 Mac right now and I have to change to different machine to do traces
PerfViewJS has been removed in master but is available at the following commit: https://github.com/microsoft/perfview/tree/27b3edf1e62b4d21ab72d01ecf991d9838fe4afb/src/PerfViewJS
Development of PerfviewJS has been moved to https://github.com/microsoft/PerfviewJS.
With x-plat desktop now a viable option with .NET 6 & MAUI would a Mac Catalyst build be possible?
https://github.com/dotnet/dotnet-monitor Microsoft has another project, which provide HTML(a builtin web server) to show diagnostic. It no need a Native App interface, It can be also a web page. HTML is cross platform.
PerviewJS died, what's next? The functionality of speedscope is limited, and sometimes it just doesn’t work, when you load a 15 mb trace, you can see a white screen. The only way out is to go look for a laptop with Windows. c# is like 20 years old, but normal dump views for a couple of gigabytes are only in Windows, trace views, as well as other hardcore analysis dotnet tools are only under Windows. It looks very strange despite the fact that many developers are sitting on Mac and Linux today.
I wish we could have PerfView on the other platforms as well, https://github.com/microsoft/PerfviewJS is archived because of not getting enough attention but to be honest this is the first time I found that there is such a project it looks like it's not promoted enough.
Hi @vancem I work for one of Azure's larger cloud SAAS/PAAS companies. We're fairly early on in a migration process to move a large volume of clients from our prior .NET 4.X version of our product to the .NET 5/6.X version of the product. With that migration, we are now moving customers to executing on Linux web instances.
A large part of what we do for our customers is aiding them in their implementations given the volume of customers we have running on the SAAS/PAAS. Perfview has been become a mission critical aspect of ensuring our customer's and our own implementation's performance.
However, having recently reviewed the views available within the most recent version of Perfview and a profile trace collected from a .NET 5 trace file collected from a Azure linux web instance it is concerning seeing the substantial limitations in the available views. As I'm sure you may be aware, there are severe view limitations within a linux trace.
What is the ETA for delivering similar views available within windows .NET 4.X trace files over to .NET 5/6 Linux?
I'm concerned and likely to tell some of our customers who have significant performance concerns to not migrate because of the limitations.
Thanks again for such a great tool for uncovering the inner workings of .NET.
similar tools done before; free-to-use and hosted by individual devs
- https://www.speedscope.app/ (
dotnet-trace collect --format chromium ....
) - https://ui.perfetto.dev/ (
dotnet-trace collect --format chromium ....
and select "legacy ui") - https://msbuildlog.com/ (
dotnet build -bl
)
seeing this repo is all c# code, why not blazor/wasm to support web ui?
it can be a singlepage app without a backend (dotnet new blazorwasm
instead of blazorserver
) hosted directly on gh pages: https://blazor-demo.github.io/ (zero cost). later it can have create gist
feature for quick sharing (https://sharplab.io/ see top left) which is all frontend, does not require any database access.
@brianrob first version doesn't have to look perfect. we need access to all the data encoded in the .nettrace
on the web. flamegraphs and nextgen ui improvements can come in later revisions