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