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