====== 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 **[[http://www.freebsd.org/cgi/man.cgi?query=hwpmc&apropos=0&sektion=0&manpath=FreeBSD+7-current&format=html|hwpmc(4)]]** driver and **[[http://www.freebsd.org/cgi/man.cgi?query=pmc&apropos=0&sektion=0&manpath=FreeBSD+7-current&format=html|libpmc(3)]]** userland API work together to provide application programs the means of using the in-CPU performance monitoring counters in modern CPUs. The **[[http://www.freebsd.org/cgi/man.cgi?query=pmcstat&apropos=0&sektion=0&manpath=FreeBSD+7-current&format=html|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. 07-December-2009: As requested snapshot of: * [[PmcTools/PmcKcachegrind|Kcachegrind(kdesdk)]] and [[PmcTools/PmcTop|Top mode]] {{pmctools/pmcstat-20091207.tar.gz?linkonly|pmcstat-20091207.tar.gz}} * Full frame capture (map kernel cost to userland for syscall) {{pmctools/pmctools-fullframe-20091207.diff.gz?linkonly|pmctools-fullframe-20091207.diff.gz}} (need updated pmcstat above) * Soft PMC {{pmctools/pmctools-soft-head-20091130.diff.gz?linkonly|pmctools-soft-head-20091130.diff.gz}}, {{pmctools/pmctools-soft-stable_8-20091130.diff.gz?linkonly|pmctools-soft-stable_8-20091130.diff.gz}}, {{pmctools/pmctools-soft-stable_7-20091130.diff.gz?linkonly|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. 01-June-2009: This project now has a discussion group: [[http://groups.google.com/group/pmctools-discuss|pmctools-discuss]]. 11-February-2009: Updated patches from Fabien Thomas for RELENG_7 and RELENG_7_1 are available: * {{pmctools/patch-pmctools-freebsd-7.1-2009-02-10.gz?linkonly|patch-pmctools-FreeBSD-7.1-2009-02-10.gz}}; Size 189 KB; MD5 b0d7fb13ddaa3d1301c833464c1b32d5. * {{pmctools/patch-pmctools-freebsd-7-stable-2009-02-10.gz?linkonly|patch-pmctools-FreeBSD-7-STABLE-2009-02-10.gz}}; Size 189 KB; MD5 5c760397809e1a31853d1f254c7e401a. 05-February-2009: Updated patches from Fabien Thomas for RELENG_7 and RELENG_7_1 are available: * {{pmctools/patch-pmctools-freebsd-7.1-2009-02-05.gz?linkonly|patch-pmctools-FreeBSD-7.1-2009-02-05.gz}}; Size 184 KB; MD5 6bf9072ccca4a8978699a3ed6b78f8a8. * {{pmctools/patch-pmctools-freebsd-7-stable-2009-02-05.gz?linkonly|patch-pmctools-FreeBSD-7-STABLE-2009-02-05.gz}}; Size 184 KB; MD5 f6aab866af08964698cbc1c63c1e19d9. 22-January-2009: An updated patch from Fabien Thomas backporting PmcTools to RELENG_7 is available: {{pmctools/patch-pmctools-freebsd-7-stable-2009-01-22.gz?linkonly|patch-pmctools-FreeBSD-7-STABLE-2009-01-22.gz}}; Size 184KB; MD5 c8602a49f1f557c2f09fc1c29f6d04a2. 11-November-2008: Intel Atom/Core/Core2 support added to -CURRENT. 02-September-2008: An updated patch from Fabien Thomas backporting PmcTools' callchain functionality to RELENG_7 is available: {{pmctools/patch-callchain-freebsd-7-stable-2008-09-02.gz?linkonly|patch-callchain-FreeBSD-7-STABLE-2008-09-02.gz}}; Size 54.4KB; MD5 0440068c22ccaaf36aeb6e30558eb448. 12-July-2008: Fabien Thomas has ported PmcTools' callchain functionality to 7-STABLE and has contributed a patch against RELENG_7: {{pmctools/patch-callchain-freebsd-7-stable-2008-07-12.gz?linkonly|patch-callchain-FreeBSD-7-STABLE-2008-07-12.gz}}; Size 54KB; MD5 bc5dd79ee7800af17486a8e0ce2fe500. Thank you, Fabien! 07-December-2007: Callchain functionality has been added to 8-CURRENT. 03-August-2007: A patch implementing callchain capture (against -CURRENT) is available: [[http://people.freebsd.org/~jkoshy/download/pmctools-callgraph-patch.gz|http://people.freebsd.org/~jkoshy/download/pmctools-callgraph-patch.gz]]. See [[PmcTools/CallchainCaptureAndAnalysis|PmcTools/CallchainCaptureAndAnalysis]] for more information. **Table of Contents** * [[PmcTools/Features|PmcTools/Features]]-- short summary of what's available * [[PmcTools/KnownBugs|PmcTools/KnownBugs]] -- known bugs in the PMC toolchain * [[PmcTools/PmcEnhancements|PmcTools/PmcEnhancements]] -- requested features and enhancements * [[PmcTools/PmcHardware|PmcTools/PmcHardware]] -- current and near-future hardware support * [[PmcTools/PmcRelatedWork|PmcTools/PmcRelatedWork]] -- other work around PMC hardware * [[PmcTools/PmcResearch|PmcTools/PmcResearch]] -- research planned around hwpmc * [[PmcTools/PmcProjects|PmcTools/PmcProjects]] -- projects that use PMCs * [[PmcTools/PmcKcachegrind|PmcTools/PmcKcachegrind]] -- Kcachegrind export * [[PmcTools/PmcTop|PmcTools/PmcTop]] -- top mode * [[PmcTools/PlanOfWork|PmcTools/PlanOfWork]] -- the immediate plan of action Contact . The original project pages are available at [[http://people.freebsd.org/~jkoshy/projects/perf-measurement/|http://people.freebsd.org/~jkoshy/projects/perf-measurement/]]. ---- {{tag>InactiveProject Stale}}