The following list contains some of the most common questions about the pfmon tool:
- Pfmon-2.0 does not capture any samples when using the --btb-all-mispredicted option on Itanium2?
There is a documentation bug which caused a pfmon bug.
With this option, pfmon does not set PMC12 correctly. As a workaround, you
can use: pfmon --btb-ptm-incorrect --btb-ppm-incorrect... This bug is not
present in pfmon-3.0.
- Pfmon-3.0 does not work with RHEL-3.0, Suse SLES8 or any 2.4-based kernel?
This version of pfmon is meant to be used ONLY with a perfmon-2.x kernel
interface which is available only in the 2.6 kernel series.
- Pfmon-2.0 does not work with my 2.6.x kernel?
This version of pfmon is meant to be used with the perfmon-1.x kernel interface ONLY.
The 2.6.x kernels all have the next generation perfmon-2.x interface which is not backward compatible with perfmon-1.x.
You need to use pfmon-3.0 with 2.6.x kernels.
- Pfmon-2.0 does not work with RHEL-3.0?
The official RHEL-3.0 includes a bogus kernel perfmon-1.x subsystem. It is strongly
recommended NOT to use it until a patch is provided in the subsequent updates to RHEL.
- Linux kernel perfmon-1.3 or higher can exclude idle tasks, does pfmon support this?
Yes, with pfmon-2.0 you can use the --exclude-idle option for system wide sessions.
This possiblity to exclude idle tasks is not yet available with the perfmon-2.x kernel interface, therefore
pfmon-3.0 does not offer the --exclude-idle option on the 2.6.0 kernel.
- Pfmon does not record any samples when using D-EAR cache?
You do not have any qualifying cache misses. There is common
misunderstanding on the D-EAR. They only capture load
cache misses, i.e., misses on stores are not recorded. Sometimes also the program
does not have the misses while running in the user level but in the kernel because of
the lazy physical memory page allocation scheme. You can take a look at this
post
on the perfmon mailing list for more details.
- Pfmon causes a Segmentation Violation(SIGSEGV)?
This can happen either at any invocation or only when
running a system wide session. This is known to happen on Debian systems
using a libc version of 2.3.1. There is apparently a bug in some version
of this package. The libc6.1* package with a version 2.3.1-8 is known to work.
- What is the licence of pfmon?
Pfmon is using the GNU public licence. See the COPYRIGHT file included in the package.
- Does pfmon correlate the samples with the source code?
Pfmon-2.0 does not correlate addresses to symbols. Samples contain only numerical values.
But pfmon-3.0 does correlation of addresses to symbols with the --resolve-addresses option. The following
restrictions do apply:
- only kernel addresses are correlated in system-wide mode
- correlation is performance in per-process until the measured task does an exec()
Correlation applies everywhere there is an address in the samples but is subject to characteristics of
the sampling module. For instance, the [compact-ia64] does not correlate no matter what option is used.
- Is it possible to have a different output format when sampling?
Yes, both pfmon-2.0 and pfmon-3.0 offer you a choice of sampling output formats.
In pfmon-3.0 this is implemented by sampling modules as opposed to sampling formats. You can list
the possible formats/modules using the -I option of pfmon.
In addition, it is possible for you to develop your own format/module. You can
use the example provided in the pfmon source tree.
- Can pfmon monitor Java programs?
Yes, it can. However be aware that pfmon-2.0 only monitors the initial thread
which most of the time is not the most interesting thread. With pfmon-3.0 you can monitor multiple
processes/threads at the same time using any of the --follow-* options. Those options are
not turned on by default.
- Can pfmon monitor multithreaded programs?
It depends on the version. Pfmon-2.0 can only monitor the first (master) thread.
But pfmon-3.0 can monitor multi-threaded programs when using the --follow-pthread option.
This option is not turned on by default
- Is there a workaround to monitor multithreaded programs?
With pfmon-2.0, one alternative is to use a system wide session. The other
choice is to go with pfmon-3.0 but then you need to use a 2.6-based Linux kernel.
- Can pfmon monitor more than 4 events at a time?
Pfmon is only limited by the number of physical counters of the host PMU.
Current implementations only have 4 counters.
- Is it possible to multiplex events using pfmon?
No, pfmon does not do any event multiplexing to mask the limitation on the number of counters.
- Where do I find detailed information about each event?
You need to refer to the Itanium and Itanium 2 micro-architecture documentation which
is available on the Internet at the Intel developer web site.