PmcTools Feature Set

Feature

Status

Description

Callgraphs?

Ready

An oft-requested feature when generating profiles.

SMP support?

Ready

Supports profiling on multi-processor systems.

System-wide event counting?

Ready

Allows you to get a global view of the events happening on hardware as the system runs.

System-wide statistical sampling?

Ready

Allows you to profile userland and kernel (including interrupt handlers) at the same time.

Process-"virtual" PMCs?

Ready

Measure hardware events seen by the system when specific processes are scheduled on the CPU(s).

Profiling "kernel threads"

Ready

Allows you to profile specific kernel threads, including "interrupt" threads.

Profiling threaded code

Currently buggy

Allows you to profile threaded applications.

Profiling of loadable kernel modules and dlopen()ed libraries

Ready.

Allows dynamically loaded objects (in the kernel or in userland) to be profiled.

Allow perfmon instructions like RDPMC?

Ready

Allows processes that allocated and attached PMCs to themselves to use low-overhead machine instructions to read their PMCs.

Simultaneous process-virtual and system-wide profiling?

Ready

Allows tools to present a bird-eye view of system-wide hot-spots and drill down further into troublesome processes.

Profile or monitor an already running process?

Ready

Profile and monitor long-lived processes without disturbing them.

Multiple processes using PMCs at the same time?

Ready

The hwpmc(4) driver multiplexes available PMC resources, allowing multiple PMC-using processes to be executing concurrently.

Works on stock (i.e., optimized) binaries?

Ready

You can do basic profiling on stock binaries.

Integration with system profiling tools gprof(1), kgmon(8)?

In progress.

You can use gprof(1) for your analyses, for now. See pmcstat(8).

Cross-architecture PMC API?

Ready

See pmc(3).

Remote profiling?

Ready

Profile logs can be collected and analysed on a different system; allows for profiling embedded systems.

Cross-architecture profiling?

Being implemented

Data collection and analysis can be done on machines with different endianness and word-size.

Low-overhead?

On target

Our overheads are low, but have not yet been fully characterized.

Supports all PMCs on CPUs running FreeBSD's Tier-1&2 architectures?

Partially there

Currently the following PMCs are supported: AMD64 "K8", AMD Athlon XP "K7", Intel P-Pro/P-II/P-III/Celeron/Pentium-M, Intel P4(HTT). PowerPC G4 and UltraSparc US/ii support is planned shortly. Intel Core [NN] support is missing because I don't have access to working hardware.

GUI Analysis tools?

Planned

Help wanted!

PAPI interface?

Ready

In ports as devel/papi

Documentation (manual pages)

Ready

See pmc(3), hwpmc(4), pmcstat(8), and pmccontrol(8).

A tutorial on using all this stuff

Planned

For now, just ask on the -lists.

Test-suite?

Planned

A formal test suite for pmc(3) and hwpmc(4) is planned.

Scripting language API?

Stalled

A Python wrapper around pmc(3) is being written.

PmcTools/Features (last edited 2008-06-17 21:37:39 by localhost)