| Overview | Summary | Examples | Descriptions |
| Publications | Presentations |
| Software | Download |
| License | Feedback |
PerfSuite is a collection of tools, utilities, and libraries for software performance analysis where the primary design goals are ease of use, comprehensibility, interoperability, and simplicity. This software can provide a good "entry point" for more detailed performance analysis and can help point the way towards selecting other tools and/or techniques using more specialized software if necessary (for example, tools/libraries from academic research groups or third-party commercial software).
However, you may find that PerfSuite by itself gives you the information you need to focus your performance optimization efforts in the right direction without extensive source code changes to your application or complicated builds of the performance tools or libraries themselves.
PerfSuite development is driven by people who do performance analysis on a daily basis with a wide variety of applications. Therefore the emphasis is on practicality, robustness, simplicity, and utility in real-world, everyday use on platforms ranging from single-processor workstations to terascale clusters and beyond.
Here's a brief background presentation about PerfSuite. You can also read an overview paper that describes its design and implementation.
PerfSuite is freely-available under a liberal open source license.
National Science Foundation (NSF) has sponsored this project in various forms, directly (through the POINT project) and indirectly. Its support is deeply appreciated.
Many different factors contribute to overall application performance in today's high-performance computing environments. The following summary table maps PerfSuite software to specific components in the system:
| Software | Category | Platform | Compiler | CPU Cache Memory |
MPI Network | I/O | ||
|---|---|---|---|---|---|---|---|---|
| Tool | Library/ API |
x86 x86-64 |
ia-64 | |||||
| libperfsuite | * |   | ||||||
| libpshwpc | * |   | ||||||
| psinv | * |   | ||||||
| psrun | * |   | ||||||
Here are some examples that highlight the use of PerfSuite on a key application that has been deployed on the NCSA Linux clusters. You can also access a flyer distributed at the Supercomputing 2003 conference that gives an overview of the software's capabilities (first and second pages).
In 2003, PerfSuite was selected for use in measuring the performance of all parallel applications that use the NCSA IA-32 and IA-64 Linux clusters after a review of available performance analysis software. Within a few months after deployment, well over 4 million records of performance data from production scientific applications were gathered using PerfSuite, all without changing a single line of application source code, recompiling, or relinking. A presentation describing the initial motivations, implementation, and results of this work is available here. Following the success of the pilot performance data collection project, the effort was expanded in 2005 to include measurement of all applications (serial and parallel, shared and distributed memory) that use the NCSA SGI Altix system.
PerfSuite teamed with developers of the widely-used tools PAPI, TAU, and KOJAK under the National Science Foundation's Software Development for Cyberinfrastructure (SDCI) program to provide an integrated toolset for application performance analysis and engineering for current and future generations of high-performance computing systems. The overall project is named POINT. The award abstract describes the overall goals of this project.
PerfSuite is currently in use at the following sites:
Information specific to using PerfSuite on NCSA systems is available here.
Current components include:
psinv:
a utility that provides access to
information about the characteristics of a machine (e.g.,
processor type, processor features, cache information,
available performance counters)
psprocess:
a utility that assists with a number of common tasks related
to pre- and post-processing of performance measurements
psrun: a utility for
hardware performance event counting and profiling of
single-threaded, POSIX threads-based, and MPI applications.
Performance counter multiplexing is supported.
Optionally, psrun can also report information
about the resource usage of your application such as memory usage,
page faults, etc.
psrun requires no source code changes to
or relinking of your application.
libperfsuite:
a basic standalone library that provides timing capabilities,
routines for gathering information about resource usage and
machine characteristics as well as miscellaneous utility routines
(callable from C/C++ and Fortran)
libpshwpc:
a library that provides easy access to hardware
performance event information (both counting and profiling)
from single-threaded and POSIX threads-based applications.
MPI applications can take advantage of a convenient PMPI-based
interface that requires only a relink (no source code changes).
(C/C++/Fortran)
The following PerfSuite-related articles are available online:
You can view the following presentations about PerfSuite:
PerfSuite is written in C, C++, Java, Tcl/Tk, XSL, and JavaScript. Several of the components in PerfSuite are built upon software from other sources:
If you're building your own Linux cluster, you might find the following links to a few performance analysis tools useful.
PerfSuite source distributions are available at the software download page. The initial release was made available in December 2003.
| PerfSuite is licensed under the University of Illinois/NCSA Open Source License. |
|
If you're a user of PerfSuite software, we're very interested in your feedback, comments, questions, suggestions, and bug reports. The primary resource for communication about PerfSuite are mailing lists that are maintained at SourceForge.
The following people have participated in PerfSuite design and development:
Rick Kufrin was the original author, and contributed the most. Rui Liu is the current maintainer.