LIFETIMEIOSTATS(1) NAME LifetimeIOstats - Produce report from I/O File Lifetime Summary trace records SYNOPSIS LifetimeIOstats [ -browserFile browserOut ] tracefile DESCRIPTION LifetimeIOstats generates a report of application I/O activity summarized by file from File Lifetime Summary trace records in the input SDDF trace file. The necessary trace event records are produced by the I/O extension to the Pablo trace library when the File Lifetime Summary option is enabled. As LifetimeIOstats is running, it periodically displays the number of input trace packets (records) processed to standard error. The report output is directed to standard out and is 132 characters wide. Several notes regarding interpretation of reported values appear after the actual I/O summary information. Those notes are included in a slightly modified form in the section "THE REPORT" below. If the input file does not include any File Lifetime Sum- mary records, the report will contain headings and a mes- sage that none of the necessary records appear in the trace file, but no summary information. For the report to work as intended, there must be File Lifetime Summary records in the input trace file. If the programmer elects not to enable the File Lifetime Summaries for the entire application execution, the report must be interpreted with that in mind. OPTIONS -browserFile browserOut When specified, this option causes LifetimeIOstats to produce an SDDF file, browserOut, containing a subset of the reported information in a format that can be loaded and viewed with the Pablo Browser program. See "THE BROWSER DATA" section below for details on the information written to the SDDF file. Note that the Pablo Brower program is currently not distributed outside the Pablo research group due to limited portability across platforms. BEFORE RUNNING THE PROGRAM The application to be studied must be instrumented with the I/O extension to the Pablo trace library and call the function enableLifetimeSummaries() to generate the trace records needed as input for this program. The instrumented application is run and one or more trace files are generated - the number of trace files depends on the number of processors used to run the application. If there are multiple trace files, they should be merged with the MergePabloTraces(1) program to produce a single trace file for the execution including information from all processors. After the trace files have been merged, you should run the program AdjustTime(1) on the merged trace file if you linked the application with the the raw clock version of the Pablo trace library. THE REPORT The report generated by LifetimeIOstats is made up of three major sections. The first section summarizes I/O activity over the lifetime of files accessed on a per-pro- cessor basis. The second section provides similar sum- mary information over all processors and also includes a statistical analysis of the length of time files were kept open during execution. The final section reports the sec- onds spent in any of the traced I/O operations( Read, Seek, Write, Open, Close ) for each processor, and the total for all processors. The processors spending the least and the most time doing I/O are identified with "Minimum" and "Maximum" labels in the third section of the report. Further details on the contents of sections one and two follow. Unless explicitly noted, the comments apply to both the "per-processor" and the "all processors" sections of the report. The processor number, or all processors, is given. Fol- lowing that a table containing the headings "Read Count", "Read Bytes", "Read Time", "Seek Count", "Seek Bytes", "Seek Time", "Write Count", "Write Bytes", "Write Time", "File Lifetime", "Opn/Cls Time", "Open Count", and "File- name" is generated. In section one (per-processor), sum- mary lines appear in the table for all files opened on the processor being reported. In section two (all proces- sors), summary lines appear in the table for all files opened by any processor that was part of the application run. Each file name is given under the heading "Filename". The number of times each file was opened appears under the "Open Count" heading. The amount of time spent (in sec- onds) opening and closing each file is given in the column "Opn/Cls Time". The total time the file was open during the execution is listed in the "File Lifetime" column. Count, Bytes, and Time columns show the event count, bytes involved, and seconds taken for read, seek, and write requests. Asynchronous reads and writes (on the Intel Paragon systems) are included in the read and write columns, with the reported seconds corresponding to the duration of the asynchronous call, not to the time required for the completion of the requested data trans- fer. The table ends with a summary line for all files accessed on the processor (or processors if in section two). Following the table, the distribution of I/O read, seek, and write requests is listed. Next, the mean request size for reads, seeks, and writes is shown. Bytes/Second values based on individual requests are reported for reads and writes. These are calculated by dividing the number of bytes read (written) for all files by the number of seconds required by the reads (writes). If your application makes use of asynchronous reads and/or writes, special care should be taken in interpreting these numbers since only the time for the asynch I/O request and not the time for the data transfer is included in the num- ber of seconds reported. For section one (per-processor), a set of statistics based on "Processor Execution Time" is given next. For section two (all processors), the statistics are given based on "All Processor Execution Time" and on "Application Execu- tion Time". For purposes of this report, "Processor Execution Time" measures the time from the initialization of the Pablo Trace library to the time when endIOtrace() is called. The Pablo Trace library is initialized by the first call to traceEvent(), countEvent(), or startTimeEvent(); or by the first call to initialize a trace library extension -- initIOtrace() for example. Provided one of these calls is made near the beginning of the application execution and the call to endIOtrace() is made near the end of the application execution, the "Processor Execution Time" gives a fairly good measure of the application run time. Since tracing is often done on multi-processor systems, we use the term "Processor Execution Time" to refer to the execution time of an individual processor. We use "All Processors Execution Time" to refer to the sum of the exe- cution times of the individual processors. The term "Application Execution Time" is used to refer to the maxi- mum of the execution times of the individual processors in the system. "Application Execution Time" corresponds to wall clock time -- how long it took the application to run on the system. The statistics given show the operation frequency (operations per second) for reads, seeks, and writes based on the Execution Time. The operation time as a percentage of execution time is listed for read, seek, write, and opens/close operations. The time taken by the opens/closes can be thought of as overhead since they accomplish no real work, but are necessary in order to perform the desired I/O. Finally, a bytes/second figure based on Execution Time is given for reads and writes. THE BROWSER DATA The browser SDDF file contains data on: o Read Counts per File Open o Seek Counts per File Open o Write Counts per File Open o Read Time per File Open o Seek Time per File Open o Write Time per File Open o Open/Close Time per File Open o File Lifetimes o Open/Close Overhead -vs- File Lifetime KNOWN PROBLEMS For files accessed in a global mode, the "Seek Bytes" val- ues will often be incorrect. In particular, on Intel Paragon systems, these values should not be trusted for files accessed with an iomode of M_LOG, M_SYNC, M_RECORD, or M_GLOBAL. The I/O extension to the Pablo instrumenta- tion library attempts to minimize the overhead incurred in gathering file pointer information and does not track file pointer positioning correctly when the activity on one processor affects the file pointer position on another processor. An attempt will be made to address this prob- lem in the next release. SEE ALSO AdjustTime(1), FileRegionIOstats(1), IOstats(1), IOtotalsByPE(1), MergePabloTraces(1), TimeWindowIOstats(1), runBrowser(1) Ruth A. Aydt, A User's Guide to Pablo I/O Instrumentation Ruth A. Aydt, The Pablo Self-Defining Data Format COPYRIGHT Copyright 1994, The University of Illinois Board of Trustees. AUTHOR Ruth A. Aydt, University of Illinois Pablo Environment Oct 16, 1996