Skip to content
This repository has been archived by the owner on Mar 17, 2021. It is now read-only.

perfollect support for Mac OS #93

Open
babakontheweb opened this issue Feb 28, 2019 · 3 comments
Open

perfollect support for Mac OS #93

babakontheweb opened this issue Feb 28, 2019 · 3 comments

Comments

@babakontheweb
Copy link

Are there any plans to support perfcollect on Mac OS? Attempting to install via ./perfcollect install responds with

ERROR: Auto install unsupported for this distribution. Install perf manually to continue.
but there are no instructions to be found on how to install manually.

Attempting to run ./perfcollect collect myAppCollect before performing the install results in

Perf not installed.
Install perf to proceed.

@babakontheweb babakontheweb changed the title perfollect support Mac perfollect support for Mac OS Feb 28, 2019
@sywhang
Copy link
Contributor

sywhang commented Mar 6, 2019

PerfCollect uses perf and LTTng as its tracing mechanism - As far as I am aware, neither perf or LTTng is available on macOS, so we can't enable perfcollect to support macOS unless macOS decides to switch over to the Linux kernel for some reason :-)

That's the bad part of the answer. The good part - we are actively working on a cross-platform performance monitoring tool via EventPipe which should enable users to do performance diagnostics on macOS as well. Just to set expectations, these are being actively being worked on, which means they are not quite ready for use yet. We're working to get this into the official .NET Core 3.0 release timeframe. In case you want to keep an eye out on what is coming:

This probably isn't the exact answer you wanted to hear, but hopefully that helps your understanding of where we stand.

@wfurt
Copy link
Member

wfurt commented Mar 6, 2019

eventpipelines work on OSX since 2.1. What exactly are you trying to achieve @babakontheweb?
You can do something like:

export COMPlus_EnableEventPipe=1
export COMPlus_EventPipeConfig=Microsoft-System-Net-Sockets:0xFFFFFFFFFFFFFFFF:5,Microsoft-System-Net-Security:0xFFFFFFFFFFFFFFFF:5,Microsoft-System-Net-Http:0xFFFFFFFFFFFFFFFF:5

and run your app. It will create .netperf file in app's current directory and you can load it in perfview.

@sywhang
Copy link
Contributor

sywhang commented Mar 6, 2019

To add to @wfurt's answer, you can also get some useful runtime events (ex. JIT, GC, Threads, etc.) as well. To do that you can add Microsoft-Windows-DotNETRuntime:0x4c14fccbd:4 to COMPlus_EventPipeConfig environment variable (they're comma-separated).

Alternatively you can use the dotnet-collect tool: https://github.com/dotnet/diagnostics/tree/master/src/Tools/dotnet-collect.

None of the above gives native stacks though, which may/may not be a limiting factor depending on your usage.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants