Pmc Tools
The goal of the PmcTools project is to provide FreeBSD's developers and system administrators with non-intrusive, low-overhead and innovative ways of measuring and analysing system performance.
So far the basic tools have been written: the hwpmc(4) driver and libpmc(3) userland API work together to provide application programs the means of using the in-CPU performance monitoring counters in modern CPUs. The pmcstat(8) utility uses the driver and interface library to provide the ability to make simple performance measurements. These tools are available in FreeBSD 6.X and later.
Significant amounts of work remain, for example in researching innovative ways of presenting and analysing the low-level data collected from hardware. For example, we would like to track the death by a thousand cuts manner in which performance is lost on modern architectures---e.g., due to the interaction between structure layout and L1/L2/L3 cache organization, due to internal resource shortages, due to too many synchronizing instructions---and map these back to source code artifacts that a developer could change.
News
- 12-February-2010:
Top mode and Kcachegrind(kdesdk) committed to head http://svn.freebsd.org/changeset/base/203790.
- As requested snapshot of:
Full frame capture (map kernel cost to userland for syscall) pmctools-fullframe-20091207.diff.gz (need updated pmcstat above)
Soft PMC pmctools-soft-head-20091130.diff.gz, pmctools-soft-stable_8-20091130.diff.gz, pmctools-soft-stable_7-20091130.diff.gz
Recommended to avoid deadlock: http://svn.freebsd.org/changeset/base/199763
Apply patch with patch -p1 < <file>. Rename src/usr.sbin/pmcstat and extract archive in src/usr.sbin, make && make install.
This project now has a discussion group: pmctools-discuss.
- Updated patches from Fabien Thomas for RELENG_7 and RELENG_7_1 are available:
patch-pmctools-FreeBSD-7.1-2009-02-10.gz; Size 189 KB; MD5 b0d7fb13ddaa3d1301c833464c1b32d5.
patch-pmctools-FreeBSD-7-STABLE-2009-02-10.gz; Size 189 KB; MD5 5c760397809e1a31853d1f254c7e401a.
- Updated patches from Fabien Thomas for RELENG_7 and RELENG_7_1 are available:
patch-pmctools-FreeBSD-7.1-2009-02-05.gz; Size 184 KB; MD5 6bf9072ccca4a8978699a3ed6b78f8a8.
patch-pmctools-FreeBSD-7-STABLE-2009-02-05.gz; Size 184 KB; MD5 f6aab866af08964698cbc1c63c1e19d9.
An updated patch from Fabien Thomas backporting PmcTools to RELENG_7 is available: patch-pmctools-FreeBSD-7-STABLE-2009-01-22.gz; Size 184KB; MD5 c8602a49f1f557c2f09fc1c29f6d04a2.
- Intel Atom/Core/Core2 support added to -CURRENT.
An updated patch from Fabien Thomas backporting PmcTools' callchain functionality to RELENG_7 is available: patch-callchain-FreeBSD-7-STABLE-2008-09-02.gz; Size 54.4KB; MD5 0440068c22ccaaf36aeb6e30558eb448.
Fabien Thomas has ported PmcTools' callchain functionality to 7-STABLE and has contributed a patch against RELENG_7: patch-callchain-FreeBSD-7-STABLE-2008-07-12.gz; Size 54KB; MD5 bc5dd79ee7800af17486a8e0ce2fe500. Thank you, Fabien!
- Callchain functionality has been added to 8-CURRENT.
A patch implementing callchain capture (against -CURRENT) is available: http://people.freebsd.org/~jkoshy/download/pmctools-callgraph-patch.gz. See PmcTools/CallchainCaptureAndAnalysis for more information.
Table of Contents
PmcTools/Features-- short summary of what's available
PmcTools/KnownBugs -- known bugs in the PMC toolchain
PmcTools/PmcEnhancements -- requested features and enhancements
PmcTools/PmcHardware -- current and near-future hardware support
PmcTools/PmcRelatedWork -- other work around PMC hardware
PmcTools/PmcResearch -- research planned around hwpmc
PmcTools/PmcProjects -- projects that use PMCs
PmcTools/PmcKcachegrind -- Kcachegrind export
PmcTools/PmcTop -- top mode
PmcTools/PlanOfWork -- the immediate plan of action
Contact <jkoshy AT freebsd DOT org>.
The original project pages are available at http://people.freebsd.org/~jkoshy/projects/perf-measurement/.