In
computer science
Computer science is the study of computation, information, and automation. Computer science spans Theoretical computer science, theoretical disciplines (such as algorithms, theory of computation, and information theory) to Applied science, ...
, Performance Application Programming Interface (PAPI) is a portable
interface (in the form of a
library
A library is a collection of Book, books, and possibly other Document, materials and Media (communication), media, that is accessible for use by its members and members of allied institutions. Libraries provide physical (hard copies) or electron ...
) to
hardware performance counters on modern
microprocessor
A microprocessor is a computer processor (computing), processor for which the data processing logic and control is included on a single integrated circuit (IC), or a small number of ICs. The microprocessor contains the arithmetic, logic, a ...
s. It is being widely used to collect low level performance metrics (e.g.
instruction counts,
clock cycle
In electronics and especially synchronous digital circuits, a clock signal (historically also known as ''logic beat'') is an electronic logic signal (voltage or current) which oscillates between a high and a low state at a constant frequency and ...
s,
cache misses) of computer systems running
UNIX
Unix (, ; trademarked as UNIX) is a family of multitasking, multi-user computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
/
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
s.
PAPI provides predefined high level hardware events summarized from popular processors and direct access to low level native events of one particular processor. Counter
multiplexing
In telecommunications and computer networking, multiplexing (sometimes contracted to muxing) is a method by which multiple analog or digital signals are combined into one signal over a shared medium. The aim is to share a scarce resource� ...
and
overflow handling are also supported.
Operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
support for accessing hardware counters is needed to use PAPI.
For example, prior to 2010, a
Linux/x86 kernel had to be patched with a performance monitoring counters driver (perfct
link to support PAPI.
Since Linux version 2.6.32, and PAPI 2010 releases, PAPI can leverage the existing perf subsystem in Linux, and thus does not need any out of tree driver to be functional anymore.
Supported Operating Systems and requirements are listed in the official repository's documentatio
INSTALL.txt
See also
*
Performance analysis
Further reading
A Portable Programming Interface for Performance Evaluation on Modern Processors/ International Journal of High Performance Computing Applications archive Volume 14 Issue 3, August 2000, pages 189–204
doi:10.1177/109434200001400303
* Dongarra, Jack, et al.
Using PAPI for hardware performance monitoring on Linux systems // Conference on Linux Clusters: The HPC Revolution. Vol. 5. Linux Clusters Institute, 2001.
External links
Official site* Philip Mucci
Performance Monitoring with PAPI/ Dr.Dobbs, June 1, 2005
Development of a PAPI Backend for the Sun Niagara 2 Processor 2009
{{compu-library-stub
Profilers
Software optimization