-
Notifications
You must be signed in to change notification settings - Fork 94
Supported platforms, programming languages, and runtimes
magic-trace only supports Linux. It relies on perf
, which is Linux specific. We do not think this is a fundamental limitation of magic-trace, and would welcome patches to support other operating systems.
Run grep intel_pt /proc/cpuinfo
to check if your machine and kernel have at least some support for Intel PT.
magic-trace attempts to detect the features supported by a given perf
version, and gracefully fallback where possible.
- You need a
perf
from Linux 3.10 or greater. - Snapshotting on application exit (e.g.
magic-trace run
without a-trigger
symbol) requires perf 5.4 or greater. - Kernel tracing support is better in perf 5.5, but acceptable in versions from before then.
If your Linux is too old, build the perf
userspace tools from the most recent stable release of Linux and prepend it to your $PATH
.
magic-trace relies on Intel Processor Trace, which only really starts to be functional on relatively recent Intel CPUs. That means it doesn't support ARM, and it doesn't support AMD. There are timer resolution limitations on Broadwell, which was the first generation to support Intel PT.
In general, that means "anything at least as recent as Skylake". We regularly test on:
x86_64 is supported. x32 might work, but we don't regularly test on it.
- OCaml
- C
- C++
- Rust
- Python, but magic-trace will only decode C frames
Exceptions are not currently supported, but support (at least for some runtimes) is planned. Currently, any exceptions within a trace will likely totally confuse the trace viewer.
We want to eventually support everything under the sun. Community contributions which expand this list will be welcomed with open arms.
If your workload is virtualized, the host must be running KVM with kernel version 5.0+.
We're not sure if any of this stuff works on VMs in any public cloud. If you find a public cloud that does work, please file an issue to let us know.
We've heard of people seeing success on AWS c6i.metal
instances, but those aren't VMs.