perfview icon indicating copy to clipboard operation
perfview copied to clipboard

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

Open ghost opened this issue 5 years ago • 13 comments

Is there any plan to make PerfView usable on MacOs?

ghost avatar Mar 23 '19 07:03 ghost

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

vancem avatar Mar 29 '19 17:03 vancem

Hope it support Linux.

ghost avatar Apr 14 '19 00:04 ghost

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?

tallesl avatar Jul 01 '20 01:07 tallesl

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.

mjsabby avatar Jul 01 '20 02:07 mjsabby

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

murugaratham avatar Apr 23 '21 15:04 murugaratham

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

waylonflinn avatar Oct 19 '21 15:10 waylonflinn

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

brianrob avatar Oct 20 '21 22:10 brianrob

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

rbanks54 avatar Dec 13 '21 05:12 rbanks54

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.

ghost avatar Dec 13 '21 06:12 ghost

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.

careless6666 avatar Aug 31 '22 16:08 careless6666

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.

xsoheilalizadeh avatar Nov 14 '22 09:11 xsoheilalizadeh

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.

windhandel avatar Nov 19 '22 01:11 windhandel

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

kasperk81 avatar Dec 05 '22 07:12 kasperk81