microsoft / perfview

PerfView is a CPU and memory performance-analysis tool
http://channel9.msdn.com/Series/PerfView-Tutorial
MIT License
4.15k stars 708 forks source link

Is there any plan to make PerfView usable on MacOs or Linux? #903

Open ghost opened 5 years ago

ghost commented 5 years ago

Is there any plan to make PerfView usable on MacOs?

vancem commented 5 years ago

.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.

ghost commented 5 years ago

Hope it support Linux.

tallesl commented 4 years ago

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?

mjsabby commented 4 years ago

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.

murugaratham commented 3 years ago

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

waylonflinn commented 2 years ago

PerfViewJS has been removed in master but is available at the following commit: https://github.com/microsoft/perfview/tree/27b3edf1e62b4d21ab72d01ecf991d9838fe4afb/src/PerfViewJS

brianrob commented 2 years ago

Development of PerfviewJS has been moved to https://github.com/microsoft/PerfviewJS.

rbanks54 commented 2 years ago

With x-plat desktop now a viable option with .NET 6 & MAUI would a Mac Catalyst build be possible?

ghost commented 2 years ago

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.

careless6666 commented 2 years ago

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.

xsoheilalizadeh commented 1 year ago

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.

windhandel commented 1 year ago

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.

kasperk81 commented 1 year ago

similar tools done before; free-to-use and hosted by individual devs

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