Skip to content

Supported platforms, programming languages, and runtimes

Clark Gaebel edited this page Apr 27, 2022 · 26 revisions

Supported operating systems

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.

Supported perf versions

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.

Supported CPUs

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:

Supported architectures

x86_64 is supported. x32 might work, but we don't regularly test on it.

Supported runtimes and programming languages

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

Supported virtualization environments

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.

Expanding this list

How could magic-trace be made to work on...