OSX support
travisdowns opened this issue · 5 comments
Hi!
Although I'm not currently a macOS user, I've noticed that Processor Counter Monitor (PCM; an open source fork of the discontinued Intel Performance Counter Monitor) provides support: https://github.com/opcm/pcm
In particular, its setup docs make a mention of the bundled MacMSRDriver:
https://github.com/opcm/pcm/tree/master/MacMSRDriver
https://github.com/opcm/pcm/blob/master/MAC_HOWTO.txt
Thanks @MattPD - I noticed the same thing: see for example the PCM link in the original comment which points to an Intel SWF thread describing how a user modified the mac driver. I probably wont' get to this for a while, first I'll add Linux support for libpfc, then Windows, then ...
Just linking in some additional comments on OSX support in an otherwise unrelated merge request.
Not sure this is relevant, but macOS supports so called diagnostic calls [1], and one of them, namely dgEnaPMC [2], enables RDPMC from user mode [3]. It can be called via inline assembly as demonstrated in [1], but requires a kernel flag. I haven't tried it yet, but it looks promising. Also, performance counters can be configured via the private kperf.framework. XNU's source contains a useful example [4].
[1] http://newosxbook.com/MOXiI.pdf, page 292
[2] https://github.com/apple/darwin-xnu/blob/main/osfmk/i386/Diagnostics.c#L304
[3] https://github.com/apple/darwin-xnu/blob/main/osfmk/i386/Diagnostics.c#L413
[4] https://github.com/apple/darwin-xnu/blob/main/tests/kpc.c#L120
No, dgEnaPMC call won't help. On my machine cpu_pmc_control is a no-op, probably due to #if !MONOTONIC
condition. And I couldn't find any other place in XNU's source, where CR4_PCE is set. Sorry for bothering.