PerfSuite Changelog

What's new in PerfSuite 1.1.2

Jan 23, 2013
  • BUG FIXES
  • If a threaded application does not call pthread_exit to stop the threads, but calls exit to terminate the process, the thread cleanup handlers, which PerfSuite uses to write XML files automatically for the threads, will not be called, thus only one XML file is generated for the main thread, and no XML files are generated for the worker threads. This seemed to be the case for the GNU OpenMP implementation. Made changes to register the threads at initialization and cancel them in the exit handler to handle this scenario.
  • NEW COMPONENTS:
  • ENHANCEMENTS/FEATURE ADDITIONS
  • API/HEADER FILE CHANGES
  • NEW/CHANGED OPTIONS/ENVIRONMENT VARIABLES
  • XML-RELATED CHANGES
  • CONFIGURE/INSTALLATION UPDATES
  • Added the output of CPUID info in the configure stdout and "config.log", to help debugging.
  • Made changes in "configure.ac" to support PAPI 5.x.
  • TEST SUITE/EXAMPLE PROGRAM UPDATES:
  • Split the previous PAPI multiplexed thread test to 2 tests:
  • one with 1-4 threads -- which is expected to pass on most machines, and another with 8-256 threads (PAPI-mpx.at) --which may fail on some machines.
  • In the second test, added a line to make sure it will fail and an AT_XFAIL_IF condition to change the result to an "expected failure". This approach allows the test to be considered passed, while keeping the "testsuite.log" file for
  • debugging.
  • In some cases, PAPI_add_events succeeds partially, adding some but not all of the given events. This occurred on NCSA's Iforge machine (Intel Sandy Bridge CPUs, Linux kernel version 2.6.32). Given the 33 non-derived available events, this function returned after adding 32 of them.
  • The libpshwpc test program "mpx-pthread.c" used to exit if PAPI_add_events does not return with full success, thus in such case the test would fail. Relaxed this to exit only when the return value is negative.
  • DOCUMENTATION UPDATES:
  • MISCELLANEOUS
  • Removed the use of the PAPI_perror function in psjprof.c, due to the API change in PAPI from 4.x to 5.x, where PAPI_perror has been changed from taking 3 arguments to taking 1 argument, similar to the perror function.
  • Removed the use of a PAPI pre-defined macro: PAPI_MPX_DEF_DEG in hwpc-papi.c and two libpshwpc test programs (mpx-pthread.cand papitest.c). PAPI 5 removed the definition, thus PerfSuite could not be built with it. Changed to use PAPI_get_opt(PAPI_MAX_MPX_CTRS, NULL) to retrieve the value.
  • Related to the bug fix to write XML files for the worker threads when the application calls exit instead of pthread_exit to terminate, changed libpshwpc to always register the threads instead of only when the signaling option
  • is specified, and split the exit handler to have a function to cancel the threads. Changed libpsrun to cancel the threads in the psrun_fini function, thus give the threads a chance to call the cleanup handler to write XML files.

New in PerfSuite 1.1.0 (Oct 19, 2011)

  • GENERAL
  • BUG FIXES
  • Java test cases for metric calculation API: corrected an erroneous
  • dependency on a file that will be built later, which can cause
  • a failure if "make check" is done before doing a "make".
  • libperfsuite: fixed an error in PPC32 support for itimer profiling,
  • which had segmentation faults due to the use of a wrong structure
  • in signal handling for PPC32 platforms.
  • Fixed errors and made improvement in many variables or macros such
  • as CFLAGS, CXXFLAGS, AM_CPPFLAGS, _LDFLAGS, _LIBADD, and _LDADD
  • in various Makefile.am files.
  • Java XML parsing API: made more robust by adding a sanity check
  • "caches.size() >= cacheLevels", which could occur for a brand new
  • CPU that is not yet supported by PerfSuite's libperfsuite.
  • Java XML parsing API: fixed a long-standing bug that occurs
  • infrequently where "string1.concat(string2);" should have been
  • "string1 = string1.concat(string2);". Observed only when parsing
  • the "" tag in a multihwpcprofilereport.
  • psprocess (Java): added the missing "Run Time" line in text output
  • of processing an hwpcprofilereport.
  • libpsx and psprocess (Tcl): changed HAVE_CPLUS_DEMANGLE to
  • CPLUS_DEMANGLE_PIC in src/libpsx/demangle.c and
  • src/tcllib/psutils/cxxfilt/cxxfilt_init.c, so that in an environ-
  • ment where cplus_demangle() is available but is not shared, there
  • won't be link failures.
  • Removed the extra logic of removing empty directories in
  • "make uninstall" targets in the "metrics-java-api" and "psxml"
  • examples, so that consecutive "make uninstall"s will not fail.
  • NEW COMPONENTS
  • New JVMTI agent named "psjprof", that can be used to profile Java
  • programs using hardware performance counters. The agent allows
  • profiling of unmodified Java applications in a manner similar to
  • the "psjrun" agent.
  • The results are stored in XML files, one file per thread. They
  • contain the locations (the source files and line numbers) where
  • the profiling samples were collected, and can be processed by
  • PerfSuite's "psprocess" tool.
  • ENHANCEMENTS/FEATURE ADDITIONS
  • Java XML parsing API: enhanced the support for an hwpcprofilereport
  • for the inclusion of multiple profiles, one profile for an event.
  • psprocess (Java): enhanced the support for an hwpcprofilereport for
  • the inclusion of multiple profiles in both text and Cube format
  • output.
  • Java XML parsing API and metric calculation API: made the metric
  • calculation case-insensitive to the PAPI event names in the hwpc
  • counting report (which in turn came from the HWPC event
  • configuration file) and in the metric definition file, so event
  • names such as "PAPI_tot_cyc" are now supported for the purposes of
  • metric calculation.
  • psprocess (Java): in the text output when processing an
  • hwpcprofilereport, added the summary sections, and the support for
  • the "-s" and "-t" options in the existing nested detail section.
  • API/HEADER FILE CHANGES
  • Java XML parsing API: added a method
  • PS_Report::newInstance(InputStream is, boolean validateDTD).
  • Needed to support remote projects in Eclipse PTP ETFw Feedback view
  • PerfSuite plug-in.
  • Java XML parsing API: added a method for
  • PS_HwpcProfileReport::getWallSecs(). Present in
  • PS_HwpcCountingReport but missing in PS_HwpcProfileReport. Needed
  • by the psprocess Java version to print "Run Time".
  • NEW/CHANGED OPTIONS/ENVIRONMENT VARIABLES
  • XML-RELATED CHANGES
  • CONFIGURE/INSTALLATION UPDATES
  • The cplus_demangle function check now detects whether the function
  • was compiled as position independent code, i.e., whether it can be
  • used to build a shared library, and records the result in the macro
  • CPLUS_DEMANGLE_PIC, to be used by the C source files.
  • TEST SUITE/EXAMPLE PROGRAM UPDATES
  • Changed a test Java file due to the above Java XML parsing API
  • change that added a newInstance() method, which made the expression
  • "newInstance(null, null)" ambiguous for javac.
  • New test added for parsing a multihwpcprofilereport.
  • New test added for parsing an hwpcprofilereport with multiple
  • profiles in it.
  • Passing criterion for the psprocess Java "progress" test loosened,
  • to allow for the occasional case where no samples were collected.
  • Updated the cplus demangle JNI test, so that the test is skipped
  • if the cplus_demangle function is unavailable or was not compiled
  • as a position independent code.
  • DOCUMENTATION UPDATES
  • Added a man page for the new Java profiling JVMTI agent: psjprof.
  • Added a man page for the existing JVMTI agent: psjrun.
  • Added a docbook file for the design of the psjprof JVMTI agent in
  • the source tree, but not installed.

New in PerfSuite 1.0.0 (Oct 19, 2011)

  • GENERAL
  • No changes in this release over 1.0.0b2, except for update of the version/release.

New in PerfSuite 1.0.0 Beta 2 (Oct 19, 2011)

  • GENERAL
  • BUG FIXES
  • The psprocess driver script has been modified to more sensibly handle
  • the situation where the Java version of psprocess was not compiled,
  • and therefore not installed. In this case, psprocess will fall back
  • to the Tcl implementation if available. If neither the Java nor Tcl
  • versions were built, then psprocess itself will not be available.
  • psprocess (Java): removed a stack trace dump in the event that the
  • user provides an invalid URI as a filename for processing.
  • NEW COMPONENTS
  • ENHANCEMENTS/FEATURE ADDITIONS
  • libperfsuite: processor detection updated to reflect information as
  • described in the Intel Application Note 485, dated January 2011.
  • These changes allow for support of the Westmere processor.
  • API/HEADER FILE CHANGES
  • NEW/CHANGED OPTIONS/ENVIRONMENT VARIABLES
  • XML-RELATED CHANGES
  • CONFIGURE/INSTALLATION UPDATES
  • TEST SUITE/EXAMPLE PROGRAM UPDATES
  • DOCUMENTATION UPDATES
  • The psprocess man page has been modified to reflect the fact that the
  • default mode of operation is to use the Java-based version.
  • MISCELLANEOUS

New in PerfSuite 1.0.0 Beta 1 (Oct 19, 2011)

  • GENERAL
  • PerfSuite now supports PowerPC/Linux systems (POWER4 and later).
  • BUG FIXES
  • psprocess (Java): resource report handling made more robust when
  • processing load average data.
  • libpshwpc: output generation code made more defensive by checking to
  • ensure that LOGNAME has been set in the environment before accessing.
  • If not defined, the value of USER is checked. If that is also not
  • defined, default to identifying the username as "UNKNOWN".
  • NEW COMPONENTS
  • ENHANCEMENTS/FEATURE ADDITIONS
  • New support for PPC32 and PPC64 systems.
  • New XML configuration files: "papi_power5.xml", "papi_power6.xml",
  • and "papi_power7.xml".
  • psprocess (Java) improved to more gracefully handle errors such as
  • invalid input files. Error reporting also made more consistent.
  • API/HEADER FILE CHANGES
  • NEW/CHANGED OPTIONS/ENVIRONMENT VARIABLES
  • XML-RELATED CHANGES
  • CONFIGURE/INSTALLATION UPDATES
  • configure updated to more cleanly handle the case where TDOM is not
  • configured, but Java is.
  • configure was erroneously clearing out the variable CXXFLAGS during
  • Cube configuration. Fixed.
  • TEST SUITE/EXAMPLE PROGRAM UPDATES
  • Java test case for BFD/addr2line interface made more robust in the
  • situation where addr2line does not return line numbers.
  • Criteria for Java test cases covering metric calculation and
  • exception handling loosened, to allow for spurious output from the
  • JVM.
  • Added two missing Autotest .at files that had previously mistakenly
  • omitted from distribution (psprocess/tcl/tests/profilexml.at and
  • src/javalib/perfsuite/util/bfd/tests/cpp-dem-JNI.at).
  • DOCUMENTATION UPDATES
  • MISCELLANEOUS
  • Java PS_DEBUG output modified to be more consistent with the output
  • format from the C libraries.
  • Added additional mods/improvements contributed by SGI that were
  • mistakenly omitted from the 1.0.0a5 release.

New in PerfSuite 1.0.0 Alpha 5 (Oct 19, 2011)

  • GENERAL
  • The Java version of the psprocess command, introduced in PerfSuite
  • version 1.0.0a3, is now the default version invoked when "psprocess"
  • is executed. The older Tcl version may be chosen by the user through
  • the psprocess option "--tcl" (must be the first argument supplied on
  • the command line), or through the environment variable PSPROCESS_MODE.
  • BUG FIXES
  • libperfsuite: corrected cache level for Intel descriptor 0xca.
  • libperfsuite: added check for duplicate load map entries (same module
  • name), which was reported by SGI to occur under SLES11. The second
  • entry encountered is now discarded.
  • psrun: wrapper for fork() modified to dlopen() and invoke fork() from
  • glibc, rather than using the internal function __libc_fork(). Mod
  • contributed by SGI.
  • psrun: SGI reported that MPT MPI, version 1.2.1 or later, changed
  • methods of launching tasks such that fork() was used, with the result
  • that psrun's wrapper was used instead. This could occur prior to
  • psrun itself being initialized, with the effect of program failure.
  • Modified to guard against this case. Mod contributed by SGI.
  • NEW COMPONENTS
  • ENHANCEMENTS/FEATURE ADDITIONS
  • "psinv -p" now displays the value of PAPI_VERSION_INCREMENT, labeled
  • as "Patch level".
  • API/HEADER FILE CHANGES
  • Values of calculated metrics in Java metric calculator API are now
  • allowed to be negative. Previously a metric whose calculated value
  • is negative is discarded. A metric whose calculated value is
  • infinity, such as resulted in divide-by-0, is still discarded.
  • NEW/CHANGED OPTIONS/ENVIRONMENT VARIABLES
  • XML-RELATED CHANGES
  • PerfSuite-generated XML documents that involve PAPI-collected data
  • now identify the PAPI version with a string that consists of four
  • components: major version, minor version, revision, and increment.
  • New default configuration file added for Intel Core/Nehalem CPUs:
  • papi3_nhm.xml.
  • CONFIGURE/INSTALLATION UPDATES
  • Configure bug fix: CUBE_LIBS variable handling modified to honor
  • user-supplied value properly.
  • configure now checks for the value of PAPI_VERSION_INCREMENT.
  • configure now detects x86/x86_64 processor model, including extended
  • model for newer Intel processors.
  • Removed check for __libc_fork().
  • configure now distinguishes Core/Nehalem processors.
  • TEST SUITE/EXAMPLE PROGRAM UPDATES
  • libpshwpc Fortran test case(s) computation loop renamed so as to not
  • be identical to the C equivalent, which can cause conflicts with
  • Fortran compilers that do not mangle Fortran names uniquely.
  • Discovered when using the IBM xlf compiler.
  • DOCUMENTATION UPDATES
  • MISCELLANEOUS
  • psrun: separator character used to build the LD_PRELOAD environment
  • string changed from single space to a colon. This is acceptable to
  • ld.so and is more compatible with SGI's dplace/MPI. Thanks to SGI
  • for reporting this issue.

New in PerfSuite 1.0.0 Alpha 4 (Oct 19, 2011)

  • GENERAL
  • Updated for compatibility with PAPI 4.
  • BUG FIXES
  • psprocess (Tcl version): addressed problem in generating gprof/gmon
  • style output that resulted in samples collected from highest PC
  • values being dropped from output file.
  • psprocess/Java: a performance fix in source code mapping. An external
  • program ("file") was mistakenly started inside a tight loop that
  • iterates through each IP, causing significant delay.
  • psprocess/Java: a fix in source code mapping. When a large amount of
  • errors occurred in using "addr2line" to perform source code mapping,
  • psprocess appeared to hang.
  • psprocess/Java: a fix to make XML-file-generating options such as
  • "-x" and "--combine" work for C++ programs, where special
  • characters used in C++ ("&", "") need to be escaped in
  • generated XML files.
  • psprocess/Java: now calculates and compares MD5 sums when processing
  • profiles only if the given XML file contains an MD5 sum, instead of
  • always doing it.
  • libperfsuite: now excludes load map entries like [stack], [heap], and
  • [vdso] when constructing maps for profiling.
  • configure: handling of --with-mpi option was incorrect.
  • NEW COMPONENTS
  • ENHANCEMENTS/FEATURE ADDITIONS
  • Added additional error checking to the psprocess driver script to
  • ensure that the target version/executable has been configured and
  • installed before trying to execute it. If not found, error message
  • output to the user.
  • API/HEADER FILE CHANGES
  • Java metric calculator API change.
  • For the PS_MetricCalculator class, changed the API from creating
  • individual objects to using static methods for performing metric
  • calculations and returning results without creating these objects.
  • Removed the previous functionalities of representation (toString),
  • and choosing a system metric definition according to the event
  • class ("PAPI", "Perfmon"). These are now handled in psprocess/Java.
  • NEW/CHANGED OPTIONS/ENVIRONMENT VARIABLES
  • psprocess/Java now supports "--glob" option.
  • psprocess/Java now supports environment variable LANG for localized
  • strings (metric descriptions, metric value numbers, event counts,
  • date and time, and most text headers such as date and username).
  • psprocess/Java: now supports "-r" option when processing
  • hwpcreport documents in profiling mode.
  • psinv: no longer prints error output when the user requests all info
  • with the "-v" option, but hardware event support has not been
  • configured.
  • New environment variable "PSPROCESS_NUMBER_NO_GROUPING".
  • When defined (to any value), the printed integers will not contain
  • the grouping separator ("," for thousands in English, and "." for
  • Spanish). (psprocess/Java only)
  • New environment variable "PSPROCESS_XML_INDENT".
  • Its value determines the number of indentation spaces in psprocess
  • generated XML files. The default value is 4. (psprocess/Java only)
  • New environment variables "PSPROCESS_DESC_WIDTH",
  • "PSPROCESS_VALUE_WIDTH", and "PSPROCESS_PRECISION".
  • Their values determine the number of characters in the description,
  • value, and the number of digits after the decimal point in the
  • standard output generated by psprocess, respectively. The default
  • values are 64, 15, and 3, tuned for an 80-column terminal.
  • (psprocess/Java only)
  • XML-RELATED CHANGES
  • Changed the DOCTYPE line in all psprocess/Java generated XML files
  • so that it consistently takes 1 line, instead of some types taking
  • line, some types taking 2 lines.
  • CONFIGURE/INSTALLATION UPDATES
  • Cube-related configuration now tested through new Autoconf macro
  • ACX_LIB_CUBE.
  • with-mpi option updated to handle proper location of the MPI
  • header file in the absence of MPI_CPPFLAGS setting.
  • Added checking of the header file "stdio.h" and used the result
  • in two javalib tests.
  • TEST SUITE/EXAMPLE PROGRAM UPDATES
  • New tests added for "-r" option of psprocess/Java with profiling
  • reports.
  • New test added for the Java JNI API to Cube C++ library.
  • New tests added for the "--glob" option of psprocess/Java.
  • New tests added to test counting reports and multihwpcreports count
  • mode with hardcoded input files, which test all options for the
  • report type. Removed the 2 hardcoded tests that tested only the
  • "-o" option. The purpose is so that when PAPI is unavailable, one
  • can still test the functionality of psprocess/Java.
  • Changed psprocess/Java tests for md5, pipeline and progress, so that
  • more tests can run (not skipped) when PAPI is unavailable.
  • Time needed to conduct test cases was shortened for many
  • psprocess/Java tests (those which use the "cpi" executable).
  • Updated the metrics example to correspond to the metrics API changes
  • listed above.
  • Hardware performance library (libpshwpc) test cases updated for
  • compatibility with PAPI 4 (papitest.c, mpx-pthread.c).
  • DOCUMENTATION UPDATES
  • Updated Javadoc for metric calculator API to correspond to the
  • API changes listed above.
  • MISCELLANEOUS
  • Added a debug message at warning level if two metric definitions
  • with the same name appear in the same file when parsing a metric
  • definition file. Whether this message appears depends on the
  • PS_DEBUG level.
  • In Java XML parsing API, when parsing a PerfSuite XML file,
  • now assert that the values of cache level, size, linesize, and
  • associativity are positive integers, otherwise a RuntimeException
  • is thrown.
  • Now in psprocess/Java, for the command line option "--threshold" or
  • "-t", assert that the parsed value is valid: in [0.0, 100.0),
  • otherwise abort immediately.

New in PerfSuite 1.0.0 Alpha 3 (Oct 19, 2011)

  • BUG FIXES
  • psrun: removed dlclose() of libpshwpc.so in destructor function to
  • avoid run-time complaints from ld.so.
  • libperfsuite: bad entry for one cache descriptor addressed, updated
  • descriptor information to August 2009 release of Intel AP-485.
  • libpshwpc: user-supplied threshold values ignored when profiling
  • using PAPI and native events. Fixed.
  • psprocess: processing of profiling information for modules that are
  • not associated with a specific file (e.g., [stack]) previously
  • caused psprocess to exit, now handles by ignoring such entries.
  • NEW COMPONENTS
  • New JVMTI-based agent named "psjrun", built on top of the PerfSuite
  • Java performance measurement package, that allows monitoring of
  • unmodified Java applications in the same manner as the "psrun"
  • command.
  • New Java-based version of "psprocess", supporting identical options
  • as the existing Tcl version, except "--glob", "-H", "-P", "--vmon",
  • "-e". The "--glob" option, which is new to the Tcl version of
  • psprocess, will be implemented in the Java version in a later
  • release.
  • New C library "libpsx" added, meant for PerfSuite-internal use.
  • ENHANCEMENTS/FEATURE ADDITIONS
  • Added Java XML parsing support for multihwpcprofilereport.
  • New configuration file for Intel Atom processors: "papi3_atom.xml".
  • API/HEADER FILE CHANGES
  • Changed the type of sampleMap in PS_Module from Map
  • to Map, to better reflect the type of the intended
  • values. Also now validate the values of PC and count to be added
  • in the sampleMap in parsing.
  • Changed the parent class of PS_HwpcProfileReport from PS_HwpcReport
  • to PS_Report, as there is no parent-child relationship between
  • PS_HwpcReport and PS_HwpcProfileReport.
  • Behavior of the newInstance method in PS_Report class modified in the
  • case when "null" is supplied as the "filename" argument. This now
  • indicates that the XML document is to be read from standard input,
  • rather than being treated as an illegal argument.
  • NEW/CHANGED OPTIONS/ENVIRONMENT VARIABLES
  • psprocess: new option accepted "--glob PATTERN". This option allows
  • specification of multiple files based on a Tcl-style pattern given
  • as PATTERN (this style of pattern-matching is similar to that found
  • in standard shells). The benefit of this option is that it is not
  • subject to shell limits for filename expansion when a very large
  • number of files match the shell wildcard characters. psprocess
  • continues to accept trailing multiple filenames as input.
  • psprocess: filename keyword "stdin" is no longer recognized. Instead,
  • the command assumes that if no filenames are found on the command
  • line after option processing, that it should accept input from
  • standard input. This behavior is more like standard UNIX utilities
  • and continues to allow psprocess to be used in a pipeline.
  • psprocess: supports selection of the Tcl or Java version of the tool
  • in one of two ways: either by specifying "--tcl" or "--java" as the
  • first option, or by setting the environment variable PSPROCESS_MODE
  • to the value "tcl" or "java". If neither is given, the current
  • release uses the Tcl version by default.
  • XML-RELATED CHANGES
  • DTD for documents (version 0.2) modified to
  • include element within the element. This
  • change is intended to enforce uniformity of contents of
  • element between and
  • documents.
  • CONFIGURE/INSTALLATION UPDATES
  • TEST SUITE/EXAMPLE PROGRAM UPDATES
  • DOCUMENTATION UPDATES
  • psprocess man page updated to reflect current state of the tool and
  • to document both the Tcl and Java versions.

New in PerfSuite 1.0.0 Alpha 2 (Oct 19, 2011)

  • GENERAL
  • BUG FIXES
  • libperfsuite/timers.c: syntax error when compiled for debugging mode
  • and mmtimer is selected as RTC fixed.
  • configure script rejects with failure any Perfmon version that is not
  • supported by PerfSuite.
  • Intel x86 cache-detection code modified to be more defensive in the
  • event that an unrecognized cache is encountered. Previously, would
  • result in a segfault.
  • NEW COMPONENTS
  • New Java package "org.perfsuite.hwpc" that exposes the PerfSuite
  • hardware performance counting API (libpshwpc) to Java programs.
  • Although this package can operate in either counting or profiling
  • mode, it is probably most useful in counting mode only, as the
  • standard PerfSuite processing of statistical profiles will operate in
  • the context of the JVM, not the user's code.
  • New Java package "org.perfsuite.metrics" that provides the ability
  • to calculate derived metrics from a PerfSuite report XML document
  • and a metric definition file, and generate a localized string
  • representation of the descriptions and calculated values of
  • the derived metrics.
  • Example programs showing the use of the API can be found in the
  • directory $PREFIX/share/perfsuite/examples/metrics-java-api.
  • ENHANCEMENTS/FEATURE ADDITIONS
  • libperfsuite inline assembly code for use of CPUID instruction
  • modified to allow PIC-compilation on systems where previously this
  • was not possible, due to compiler/register restrictions. This change
  • allows the creation of libperfsuite as a shared library on additional
  • x86 platforms.
  • x86/Intel CPU cache descriptors updated per Intel AP-485, dated 3/09.
  • Modifications to new profile processing code in psprocess to reduce
  • memory consumption when creating and
  • XML documents.
  • Java API: Added the code to support parsing of the optional elements
  • "pid" and "thread" in PerfSuite HWPC reports. The two elements
  • were recently introduced in the hwpcreport and hwpcprofilereport
  • DTDs in release 1.0.0a1.
  • Java API: Added PS_Environment and PS_Debug classes under
  • src/javalib/perfsuite/util to read/parse environment variables,
  • and print debug messages. Simplified existing code in
  • PS_ReportParser by using the new PS_Debug class.
  • psprocess now supports generation of Cube files from parallel runs
  • that are contained in a document in profiling mode.
  • API/HEADER FILE CHANGES
  • Java API: In CPUInfo class, getCaches() now returns List
  • instead of List. The first item in the returned value
  • corresonds to level 1 cache, the second level 2, and so on.
  • Instead of a flat list of caches of all levels, the returned value
  • is now more structured. Similar change was done for getTLBs() too.
  • examples/psxml/API_Demo.java was updated accordingly.
  • NEW/CHANGED OPTIONS/ENVIRONMENT VARIABLES
  • Java API: The environment variable PS_DEBUG, used in PerfSuite C API,
  • now also has effects on Java API. Users can set it as a non-negative
  • integer to have optional debug messages printed out. The levels are:
  • and below = OFF, 1 = FATAL, 2 = WARNING, 3 = INFO,
  • and above = VERBOSE. If PS_DEBUG is set to a value that is not an
  • integer, Java library will throw a NumberFormatException.
  • Java API: Two new environment variables are added.
  • PS_DEBUG_PREFIX is a string that appears at the beginning of each
  • Java API debug message. Its default value is "PS_DEBUG";
  • PS_DEBUG_SEPARATOR is a string that separates the prefix, debug level
  • string, and the debug message. Its default value is ":", the colon
  • character. So by default, an INFO level debug message will appear as:
  • PS_DEBUG:INFO:.
  • XML-RELATED CHANGES
  • Java API: Added a method getTotalCacheSizeOfLevel(int level) in
  • CPUInfo class. This is useful in generating meta data in TAU
  • PerfSuite report parsing, and useful by itself.
  • Java API: Added the code to support parsing of the optional elements
  • "pid" and "thread" in PerfSuite HWPC reports. The two elements were
  • recently introduced in the hwpcreport and hwpcprofilereport DTDs in
  • release 1.0.0a1.
  • Java API: Added code to honor the configure option
  • "--enable-tests=no", so when the option is given, the "tests"
  • directory will not be built.
  • CONFIGURE/INSTALLATION UPDATES
  • Java API: Made changes to create a single perfsuite.jar from all
  • classes under src/javalib/perfsuite, instead of multiple jar files,
  • to simplify installation and use.
  • Java API: Used JAVA primary to significantly simplify multiple
  • Makefile.am files under src/javalib/perfsuite, in the following
  • directories: xml, xml/tests, util.
  • Java JNI: The header files used for JNI that were created by the
  • program javah are no longer distributed. They are not dynamically
  • generated either. Instead, their contents are incorporated in the
  • corresponding.c files. Correspondingly, the checking of javah
  • program is removed from configure.
  • configure script modified to cause --with-pfm options to accept only
  • supported versions of libpfm (2.x, IA/64 only).
  • Disabled building of static versions of libraries for all current
  • Tcl and Java C-coded extensions. Disabled building of static version
  • of psrun support libraries.
  • Support for detection of BFD library redone, encapsulated in new m4
  • macro ACX_LIB_BFD. New variable BFD_LIB_SONAME is used to allow the
  • builder to specify a non-standard name to use for the BFD shared
  • library. This was done to address a common user difficulty when
  • configuring and building, particularly on platforms where mixing of
  • PIC and non-PIC code is not accepted. Additional variables accepted
  • by new implementation: BFD_CPPFLAGS, BFD_LDFLAGS, and BFD_LIBS. The
  • variable BFD_LIBS is meant to allow specification of additional
  • libraries needed by libbfd (e.g. -liberty).
  • Support for detection of cplus_demangle() and needed library
  • (libiberty) redone and encapsulated in new macro ACX_FUNC_DEMANGLE.
  • TEST SUITE/EXAMPLE PROGRAM UPDATES
  • New example CalcPi.java added to directory "cpi" that is an example
  • of using the org.perfsuite.hwpc package API.
  • "PAPI with POSIX threads (multiplexed)" test case in libpshwpc test
  • suite modified to exit gracefully if thread creation limit is
  • exceeded.
  • DOCUMENTATION UPDATES
  • Javadoc documentation for PerfSuite Java packages is now installed in
  • (PREFIX)/share/perfsuite/doc/javadoc
  • INSTALL file updated to add new information regarding "configure"
  • options related to binutils/BFD.
  • MISCELLANEOUS
  • SA_RESTART flag added to libpshwpc interval timer interrupt handler
  • used for the itimer measurement class.
  • In an attempt to comply to a common coding standard, changed Java API
  • and testsuite code, so that when possible, the width does not exceed
  • characters per line.
  • Supplied configuration file "papi_profile_cycles.xml" changed so that
  • the profiling sample rate increased to 10,000,000. Prior value was
  • far too low for the clock rate of today's processors.

New in PerfSuite 1.0.0 Alpha 1 (Oct 19, 2011)

  • GENERAL
  • Introduction of Java-based software into PerfSuite, with the first
  • component being a Java package for programmatic access to data
  • contained in PerfSuite-generated XML documents. See "New Components"
  • section for details. Also see "Configure/Installation" updates.
  • BUG FIXES
  • Performance monitoring via libpshwpc/psrun has been modified slightly
  • to reverse the order in which wall clock time stamps and performance
  • information are updated. In all prior versions of PerfSuite,
  • when measurements over any interval were obtained, the time stamp was
  • updated first, and then the measurement of interest. This order has
  • been reversed, so that cost of updating measurement (e.g. counters)
  • is now inclusive in the wall clock time reported.
  • Buffer size in libperfsuite internal "_ps_getargs" and "ps_addrmap"
  • functions increased from 128 to the value of PATH_MAX (or 4096).
  • Buffer size was found to be insufficient on NSF NMI Build and Test
  • system. Related: format string used to break out fields of
  • load map entries now represented in a string rather than hardcoded
  • in the function source.
  • NEW COMPONENTS
  • New Java package "org.perfsuite.xml" that provides the ability to
  • easily parse PerfSuite-generated XML documents and programmatic
  • access to the data contained in them. The initial release can parse
  • data contained in the following types of PerfSuite documents:
  • hwpcreport (both counting and profiling)
  • multihwpcreport
  • resourcereport
  • Example programs showing the use of the API can be found in the
  • directory $PREFIX/share/perfsuite/examples/psxml.
  • NOTE: this package requires Java 1.5 or newer.
  • New Tcl extension "pscube" that provides an interface to the Cube
  • writer library. See ENHANCEMENTS.
  • ENHANCEMENTS/FEATURE ADDITIONS
  • PerfSuite can now generate output files suitable for use with the
  • Cube visualization tool. Cube is part of Scalasca, a set of open
  • source software tools for scalable performance analysis. For more
  • information on Cube and Scalasca and links to download the software
  • (note: Cube can be obtained as part of Scalasca or as a standalone
  • package), see http://www.scalasca.org/
  • API/HEADER FILE CHANGES
  • libperfsuite: ps_cputimes() and its Fortran equivalent removed from
  • API. Deprecated in PerfSuite release 0.6.2.
  • NEW/CHANGED OPTIONS/ENVIRONMENT VARIABLES
  • New psprocess option "--cube", which can be supplied with profiling
  • reports, allows the creation of output files suitable for use with
  • the Cube visualizer.
  • XML-RELATED CHANGES
  • New elements added to and XML
  • documents: and , which contain the process ID and the
  • internally-generated thread identifier (zero-based). DTDs updated to
  • include these elements.
  • "Multi-documents" created with "psprocess -c" now include DTDs.
  • New format/version for documents that places
  • module information at the top level of a hierarchy that includes
  • function, file, and line granularities. New DTD for version 0.2
  • installed: "hwpcprofilereport-0.2.dtd". Old DTD persists as we
  • migrate from prior PerfSuite versions moving forward.
  • Content of element in modified to be
  • consistent with the format of ctime().
  • New DTD "multihwpcprofilereport-0.2" added.
  • CONFIGURE/INSTALLATION UPDATES
  • New option for "configure": "--enable-java", which requests that
  • the Java-based software in PerfSuite is built (default: no).
  • New option for "configure": "--with-cube=DIR", that requests support
  • for the Cube writer API.
  • Option "--enable-mpi" for "configure" changed to "--with-mpi=DIR",
  • where DIR defaults to "/usr". Related environment variable
  • MPICPPFLAGS changed to MPI_CPPFLAGS to improve consistency with other
  • configure variable names.
  • ACX_LIB_PAPI macro modified to retain user-specified PAPI_LDFLAGS.
  • TEST SUITE/EXAMPLE PROGRAM UPDATES
  • New example directory "psxml" that contains examples of using the
  • org.perfsuite.xml Java package.
  • Modified Autotest keywords in libpshwpc test suite (PAPI-only tests)
  • to allow testing of all pthreads-related tests with the common
  • keyword "pthreads". Formerly used both "thread" and "pthreads".
  • Added an explicit unset of PS_DEBUG environment variable in the
  • setup (atlocal) for the psprocess test suite.
  • libperfsuite test suite now adds .libs subdirectory to the
  • environment when running the test suite. PS_DEBUG is removed from
  • the environment for test suite runs via "export -n".
  • psprocess test suite modified to skip tests that require psrun if
  • psrun was not built during a particular configuration.
  • New test case for psprocess checks XML output for profiling reports.
  • DOCUMENTATION UPDATES
  • psprocess man page updated to document "--cube" option.
  • MISCELLANEOUS
  • psprocess debugging output capabilities standardized on generic
  • debugging support in procedure perfsuite::psdebug.

New in PerfSuite 0.6.2 (Oct 19, 2011)

  • No changes since 0.6.2 beta 3, no new bugs reported, final release.