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.txt
  • Last modified: 2008/06/17 21:37
  • by 127.0.0.1