Trace Library: Instrumentation Reference material

Unix I/O Trace Extension Routines for C

This reference material lists the routines provided by the Unix I/O extension to the Pablo trace library that can be called from C programs. The routines are grouped into subsections by functionality and listed alphabetically within each subsection.

Unix I/O Trace Extension Routines for FORTRAN

This reference material lists the routines provided by the Unix I/O extension to the Pablo trace library that can be called from FORTRAN programs. The routines are grouped into subsections by functionality and listed alphabetically within each subsection.

Arguments for routines that are interfaces to standard library routines are not documented here---the reader should refer to the vendor-supplied manual pages for the standard routines; arguments to the tracing interface routines are identical. 

MPI I/O Trace Extension Routines

HDF Trace Extension Routines

SDDF Records Produced by the I/O Trace Extension

For complete documentation, you can download or request for e-mail delivery the following guides:

I/O Trace Extension Routines for C

Initialization & Termination

The routines listed in this section initialize and terminate the Pablo I/O trace extension. Every application instrumented to gather I/O performance information must initialize and terminate the I/O extension for correct results.
endIOTrace void end IOTrace(void)

Terminates the I/O extension. Before termination, all open files are detected and final statistics are written by the extension. In most applicaitons, this routine should be called just prior to calling endTracing. endTracing is part of the Pablo trace library and it must be called prior to termination of the application to ensure that all trace data is written to the trace output file.

initIOTrace void initIOTrace(void)

Initialize the I/O extension and enable I/O tracing. Must be called from the application before any other I/O trace routines, with the exception of preInitIOTrace, are used.

preInitIOtrace void preInitIOTrace(void)

Rarely used. Causes I/O event record descriptors to be output to the trace file. Can be called by the user prior to calling initIOTrace if the order of the descriptors in the output file is important. The application is not required to make this call in order to use the I/O extension.

setTraceFileName void setTraceFileName(char* fileName)

Change the default tracefile name from Pablo.bin to the value contained in the string fileName.

setTraceProcessorNumber void setTraceProcessorNumber(int nodeID)

Set the trace processor number to nodeID in the trace record. This is used in conjunction with MPI programs.

Trace Event Production Control Routines

The routines listed in this section allow the user to control the production of I/O trace event records. Various types of summaries can be selected, production of detailed trace records can be specified, and all I/O tracing can be disabled.
disableFileRegionSummaries void disableFileRegionSummaries(void)

Disable accumulation and production of file region summary records. File region summaries being accumulated when this call is made will be discarded. See also enableFileRegionSummaries.

disableIOdetail void disableIOdetail(void)

Disable production of detailed I/O trace event records. This call is usually used in conjunction with one or more of the summary options to reduce the size of the generated trace output file. See also enableIOdetail.

disableIOtracing void disableIOtracing(void)

Disable tracing of I/O events. If this call is used, special care should be taken in interpreting the generated trace file. I/O requests occurring in the applicaiton while I/O tracing is disabled will not be accounted for in the trace file. The user should interpret the trace file and reports generated from it with that in mind. See also enableIOTracing.

disableLifetimeSummaries void disableLifetimeSummaries(void)

Disable accumulation and production of file lifetime summary records. Lifetime summaries being accumulated when this call is made will be discarded. See also enableLifetimeSummaries.

disableTimeWindowSummaries void disableTimeWindowSummaries(void)

Disable accumulation and production of time window summary records. Time window summaries being accumulated when this call is made will be discarded. See also enableTimeWindowSummaries.

enableFileRegionSummaries void enableFileRegionSummaries( int fileRegionBytes )

fileRegionBytes: number of bytes in the file regions over which I/O activity is summarized

Enable accumulation and production of file region summary records. Detail open events are always produced when file region summaries are enabled. File region summary records will not be generatd for files that are already open when this call is made. If the memory allocation fails, a generic trace event with a warning message will be written and summaries will not be enabled. See also disableFileRegionSummaries, setFileRegionSize, and outputFileRegionSummaries.

enableIOdetail void enableIOdetail(void)

Enable production of detailed I/O trace event records. This is the default behavior after the I/O extension has been initialized. See also disableIOdetail.

enableIOtracing void enableIOtracing(void)

Enable tracing of I/O events. This is the default state after the I/O etension has been initialized with initIOTrace. If disableIOtracing has been called previously, this call will reenable tracing of I/O events. See also disableIOtracing.

enableLifetimeSummaries void enableLifetimeSummaries(void)

Enable accumulation and production of file lifetime summary records. Lifetime summary records will not be generated for files that are already open when this call is made. If the memory allocation fails, a generic trace event with a warning message will be written and summaries will not be enabled. See also disableLifetimeSummaries.

enableTimeWindowSummaries void enableTimeWindowSummaries( double timeWindowSeconds )

timeWindowSeconds: number of seconds in the execution time window over which I/O requests are summarized

Enable accumulation and production of time window summary records. Detail open events are always produced when time window summaries are enabled. Time window summary records will not be generated for files that are already open when this call is made. If the memory allocation fails, a generic trace event with a warning message will be written and summaries will not be enabled. See also disableTimeWindowSumaries, setTimeWindowSize, and outputTmeWindowSummaries.

outputFileRegionSummaries void outputFileRegionSummaries(void)

Force the output of file region summary records for all open files. File region summaries must be enabled for this to work. See also enableFileRegionSummaries and setFileRegionSize.

outputTimeWindowSummaries void outputTimeWindowSummaries(void)

Force the output of time window summary records for all open files. Time window summaries must be enabled for this to work. See also enableTimeWindowSummaries and setTimeWindowSize.

setFileRegionSize void setFileRegionSize( int fileRegionBytes )

fileRegionBytes: number of bytes in the file regions over which I/O activity is summarized.

Change the file region size used for the file region summary records. See also enableFileRegionSummaries.

setTimeWindowSize void setTimeWindowSize( double timeWindowSeconds )

timeWindowSeconds: number of seconds in the execution time window over which I/O requests are summarized.

Change the time window size used for the time window summary records. See also enableTimeWindowSummaries.

File Open Routines

Routines in this section can be used to trace I/O file open requests. These routines are tracing extension interfaces to standard open request calls that are associated with trace Open events
traceCREAT int traceCREAT( char *path, mode_t mode )

Interface to creat(2) with tracing provides tracing information.

traceFOPEN FILE *traceFOPEN( char *filename, char *type )

Interface to fopen(3), which provides tracing information.

trace2OPEN int trace2OPEN(char *path, int flags )

Interface to open(2) when called with two arguments, which provides tracing information.

trace3OPEN int trace3OPEN( char *path, int flags, mode_t mode )

Interface to open(2) when called with three arguments, which provides tracing information.

File Close Routines

Routines in this section can be used to trace I/O file close requests. These routines are tracking extension interfaces to standard I/O close request calls and are associated with trace Close events.
traceFCLOSE int traceFCLOSE( FILE *stream )

Interface to fclose(3), which provides tracing information.

traceCLOSE int traceCLOSE( int fd )

Interface to close(2), which provides tracing information.

Read Routines

Routines in this section can be used to trace I/O file read requests. With the exception of traceReadBegin and traceReadEnd, these tracing extension routines are interfaces to standard calls that generate I/O read requests. All are associated with trace Read events.
traceFGETC int traceFGETC( FILE *stream )

Interface to fgetc(3), which provides tracing information.

traceFGETS int traceFGETS( char *s, int n, FILE *stream )

Interface to fgets(3), which provides tracing information.

traceFREAD size_t traceFREAD( char *ptr, int size, int nitems, FILE *stream )

Interface to fread(3), which provides tracing information.

traceGETS int trace GETS( char *s )

Interface to gets(3), which provides tracing information.

traceGETW int traceGETW( FILE *stream )

Interface to getw(3), which provides tracing information.

traceREAD int traceREAD( int fd, char *buf, int nbyte )

Interface to read(2), which provides tracing information.

traceReadBegin void traceReadBegin( int fd, int numVariables, int cause )

fd: file descriptor   numVariables: the number of variables we're reading    cause: user-supplied integer "comment"

May be used to indicate the start of a group of one or more read requests that the user would like to have treated as a single read call by the trace library. Must be followed at some point by a call to traceReadEnd. Usually one of the traceREAD routines is used to replace the individual read request. This call gives the user the ability to attach a cause indicator to the detail Read trace record which is not provided when a traceREAD call is used. See also traceReadEnd.

traceReadEnd void traceReadEnd( int nbytes )

nbytes: number of bytes read.

May be used to indicate the end of a group of one or more read requests that the user would like to have treated as a single read call by the trace library. Must be preceded by a call to traceReadBegin. See also traceReadBegin.

Seek Routines

Routines in this section can be used to trace I/O file seek requests. These routines are tracing extension interfaces to standard calls that generate I /O seek requests. All are associated with trace Seek events.
traceFSEEK int traceFSEEK( FILE *stream, long offset, int whence )

Interface to fseek(3), which provides tracing information.

traceFSETPOS void traceFSETPOS( FILE *stream, const fpos_t *position )

Interface to fsetpos(3), which provides tracing information.

traceLSEEK off_t traceLSEEK( int fd, off_t offset, int whence )

Interface to lseek(2), which provides tracing information.

traceREWIND void traceREWIND(FILE *stream )

Interface to rewind(3), which provides tracing information.

Write Routines

Routines in this section can be used to trace I/O file write requests. With the exception of traceWriteBegin and traceWriteEnd, these routines are tracing etension interfaces to standard calls that generate I/O write requests. All are associated with trace Write events.
traceFPUTC int traceFPUTC( int c, FILE *stream )

Interface to fputc(3), which provides tracing information.

traceFPUTS int traceFPUTS( char *s, FILE *stream )

Interface to fputs(3) whih provides tracing information.

traceFWRITE size_t traceFWRITE( char *ptr, int size, int nitems, FILE *stream )

Interface to fwrite(3), which provides tracing information.

tracePUTS int tracePUTS( char *s )

Intrface to puts(3), which provides tracing information.

tracePUTW int tracePUTW( int w, FILE *stream )

Interface to putw(3), which provides tracing information.

traceWRITE int traceWrite( int fd, char *buf, int nbyte )

Interface to write(2), which provides tracing information.

traceWriteBegin void traceWriteBegin( int fd, int numVariables, int cause )

fd: file descriptor   numVariables: the number of variables we're writing    cause: user-supplied integer "comment"

May be used to indicate the start of a group of one or more write requests that the user would like to have treated as a single write call by the trace library. Must be followed at some point by a call to traceWriteEnd. Usually one of the traceWRITE routines is used to replace the individual write request. This call gives the user the ability to attach a cause indicator to the detail Write trace record that is not provided when a traceWrite call is used. See also traceWriteEnd.

traceWriteEnd void traceWriteEnd( int nbytes )

nbytes: number of bytes written

May be used to indicate the end of a group of one or more write requests the user would like to have treated as a single write call by the trace library. Must be preceded by a call to traceWriteBegin. See also traceWriteBegin.

Flush Routine

The routine in this section can be used to trace I/O file flush requests and provides a tracing extension interface to the standard call to flush a stream It is associated with trace Flush events.
traceFFLUSH int traceFFLUSH( FILE *stream )

Interface to fflush(3), which provides tracing information.

Interval Routines

The routines in this section can be used to bracket any I/O call for which no tracing extension interface exists, but for which the user would like to record the duration or other information in the trace file. These routines are associated with trace Misc I/O events.
traceIOBegin void traceIOBegin( int eventID, int fd )

eventID: an integer value that will appear in the Event Identifier field of the generated trace record.
fd: file descriptor of file associated with the I/O operation being measured.

May be used to indicate the start of an I/O request the user wouldl ike to measure, but for which no direct tracing extension interface is provided. Must be followed by a call to traceIOEnd before any other calls to traceIOBegin are made. See also traceIOEnd.

traceIOEnd void traceIOEnd( int userInt, double userDbl, char *userStr )

userInt: an interger value that will appear in the Integer field of the generated trace record.
userDbl: a double value that will appear in the Double field of the generated trace record.
userStr: a character string that will appear in the String field of the generated trace record.

may be used to indicate the end of an I/O request the user would like to measure, but for which no direct tracing extension interface is provided. The arguments, which are output in the generated Misc I/O trace record, are under complete control of the user. The Misc I/O trace record also contains the file identifier and elapsed time since the interval was started by a call to traceIOBegin.

Must be precded by a call to traceIOBegin. See also traceIOBegin.

Machine Dependent Routines
Intel Paragon Systems

This is a list of the machine-dependent routines provided by the I/O extension to the Pablo trace library that are callable from C programs on Intel Paragon systems. All routines are interfaces to Intel standard library calls---the reader should refer to the Intel-supplied manual pages for the standard calls; arguments to the tracing interface calls are identical.
traceCREAD

trace_CREAD

traceCREADV

trace_CREADV

These synchronous read requests are associated with trace Read events

void traceCREAD( int fildes, har *buffer, unsigned int nbytes )

Interface to cread(3), which provides tracing information.

int trace_CREAD( int fildes, char *buffer, unsigned int nbytes )

Interface to _cread(3), which provides tracing information.

void traceCREADV( int fildes, struct iovec *iov, int iovcnt )

Interface to creadv(3), which provides tracing information.

int traceCREADV( int fildes, struct iovec *iov, int iovcnt )

Interface to _creadv(3), which provides tracing information.

traceCWRITE

trace_CWRITE

traceCWRITEV

trace_CWRITEV

These synchronous write requests are associated with trace Write events.

void traceCWRITE( int fildes, char *buffer, unsigned int nbytes )

Interface to cwrite(3), which provides tracing information.

int trace_CWRITE( int fildes, char *buffer, unsigned int nbytes)

Interface to _cwrite(3), which provides tracing information.

void traceCWRITEV( int fildes, struct iovec *iov, int iovcnt )

Interface to cwritev(3), which provides tracing information.

int traceCWRITEV( int fildes, struct iovec *iov, int iovcnt )

Interface to _cwritev(3), which provides tracing information

traceGOPEN

trace_GOPEN

These global file open requests are associated with trace Global Open events

int traceGOPEN( const char *path, int oflag, int iomode, mode_t mode )

Interface to gopen(3), which provides tracing information.

int trace_GOPEN( const char *path, int oflag, int iomode, mode_t mode )

Interface to _gopen(3), which provides tracing information.

traceIODONE

trace_IODONE

These requests to determine whether synchronous read or write operations have completed are associated with trace IO Wait events.

long traceIODONE( long id )

Interface to iodone(3), which provides tracing information.

long trace_IODONE( long id )

Interface to _iodone(3), which provides tracing information.

traceIOMODE

trace_IOMODE

These requests to get the I/O mode of files are associated with trace IO Mode events

long traceIOMODE( int filedes )

Interface to iomode(3), which provides tracing information.

long trace_IOMODE( int filedes )

Interface to _iomode(3), which provides tracing information.

traceIOWAIT

trace_IOWAIT

These requests to wait for the completion of asynchronous read or write operations are associated with trace IO Wait events.

void traceIOWAIT( long id )

Interface to iowait(3), which provides tracing information.

int trace_IOWAIT( long id )

Interface to _iowait(3), which provides tracing information.

traceIREAD

trace_IREAD

traceIREADV

trace_IREADV

These asynchronous read requests are associated with trace Asynch Read events.

long traceIREAD( int fildes, char *buffer, unsigned int nbytes )

Interface to iread(3), which provides tracing information.

long trace_IREAD( int fildes, char *buffer, unsigned int nbytes )

Interface to _iread(3), which provides tracing information.

long traceIREADV( int fildes, struct iovec *iov, int iovcnt )

Interface to ireadv(3), which provides tracing information.

long traceIREADV( int fildes, struct iovec *iov, int iovcnt )

Interface to _ireadv(3), which provides tracing information.

traceIWRITE

trace_IWRITE

traceIWRITEV

trace_IWRITEV

These asynchronous write requests are associated with trace Asynch Write events.

long traceIWRITE( int fildes, char *buffer, unsigned int nbytes )

Interface to iwrite(3), which provides tracing information.

long trace_IWRITE( int fildes, char *buffer, unsigned int nbytes )

Interface to _iwrite(3), which provides tracing information.

long traceIWRITEV( int filde, struct iovec *iov, int iovnt )

Interface to iwritev(3), which provides tracing information.

long trace_IWRITEV( int fildes, struct iovec *iov, int iovcnt )

Interface to _iwritev(3), which provides tracing information.

traceLSIZE

trace_LSIZE

These requests to set or increase the size of files are associated with trace Lsize events.

long traceLSIZE( int fileID, off_t offset, int whence )

Interface to lsize(3), which provides tracing information.

long trace_LSIZE( int fileID, off_t offset, int whence )

Interface to _lsize(3), which provides tracing information.

traceSETIOMODE

trace_SETIOMODE

These requests to set the I/O mode of files are associated with trace IO Mode events.

void traceSETIOMODE( int fildes, int iomode )

Interface to setiomode(3), which provides tracing information.

long trace_SETIOMODE( int fildes, int iomode )

Interface to _setiomode(3), which provides tracing information.

 

I/O Trace Extension Bracketing Routines for FORTRAN

Since most I/O requests are implemented as statements in the FORTRAN language and not library calls, it is not possible to simply replace the I/O statements with corresponding Pablo library routines to gather performance information. Instead, to instrument a FORTRAN I/O request, the user must bracket the I/O statement with calls to routines in the I/O extension library that record the beginning and end times of the actual I/O request, together with other relevant data. For example, calls to traceOpenBegin and traceOpenEnd should be placed just before and afer a FORTRAN OPEN statement---they should bracket the I/O statement.

The I/O extension routine names are listed using both upper- and lower-case characters to improve readability. Since FORTRAN does not distinguish between upper- and lower-case characters, only the actual name and not the case of the characters is important. In fact, the I/O extension implements these as C functions using all lower-case letters with a trailing underscore. To illustrate: in a FORTRAN program, ENDIOTRACE() is equivalent to endIOtrace() is equivalent to eNdIoTrAcE(), and so on. The I/O extension bivrary routine that actually gets called in endiotrace_(). The call is included in this list as endIOTrace().

The machine-dependent I/O requests are implemented as library routines and therefore can be replaced by tracing interface routines. Arguments for those routines that are interfaces to standard library routines are not documented here---the reader should refer to the vendor-supplied manual pages for the standard routines; arguments to the tracing interface routines are identical.

 

Initialization & Termination

The routines listed in this section initialize and terminate the Pablo I/O trace extension. Every application instrumented to gather I/O performance informaiton must initialize and terminate the I/O extension for correct results.
endIOTrace subroutine end IOTrace()

Terminates the I/O extension. Before termination, all open files are detected and final statistics are written by the extension. In most applicaitons, this routine should be called just prior to calling endTracing. endTracing is part of the Pablo trace library and it must be called prior to termination of the application to ensure that all trace data is written to the trace output file.

initIOTrace subroutine initIOTrace()

Initialize the I/O extension and enable I/O tracing. Must be called from the application before any other I/O trace routines, with the exception of preInitIOTrace, are used.

preInitIOtrace subroutine preInitIOTrace()

Causes I/O event record descriptors to be output to the trace file. Can be called by the user prior to calling initIOTrace if the order of the descriptors in the output file is important. The application is not required to make this call in order to use the I/O extension.

Trace Event Production Control Routines

The routines listed in this section allow the user to control the production of I/O trace event records. Various types of summaries can be selected, production of detailed trace records can be specified, and all I/O tracing can be disabled.
disableFileRegionSummaries subroutine disableFileRegionSummaries()

Disable accumulation and production of file region summary records. File region summaries being accumulated when this call is made will be discarded. See also enableFileRegionSummaries.

disableIOdetail subroutine disableIOdetail()

Disable production of detailed I/O trace event records. This call is usually used in conjunction with one or more of the summary options to reduce the size of the generated trace output file. See also enableIOdetail.

disableIOtracing subroutine disableIOtracing()

Disable tracing of I/O events. If this call is used, special care should be taken in interpreting the generated trace file. I/O requests occurring in the application while I/O tracing is disabled will not be accounted for in the trace file. The user should interpret the trace file and reports generated from it with that in mind. See also enableIOTracing.

disableLifetimeSummaries subroutine disableLifetimeSummaries()

Disable accumulation and production of file lifetime summary records. Lifetime summaries being accumulated when this call is made will be discarded. See also enableLifetimeSummaries.

disableTimeWindowSummaries subroutine disableTimeWindowSummaries()

Disable accumulation and production of time window summary records. Time window summaries being accumulated when this call is made will be discarded. See also enableTimeWindowSummaries.

enableFileRegionSummaries subroutine enableFileRegionSummaries( integer fileRegionBytes )

fileRegionBytes: number of bytes in the file regions over which I/O activity is summarized

Enable accumulation and production of file region summary records. Detail open events are always produced when file region summaries are enabled. File region summary records will not be generatd for files that are already open when this call is made. If the memory allocation fails, a generic trace event with a warning message will be written and summaries will not be enabled. See also disableFileRegionSummaries, setFileRegionSize, and outputFileRegionSummaries.

enableIOdetail subroutine enableIOdetail()

Enable production of detailed I/O trace event records. This is the default behavior after the I/O extension has been initialized. See also disableIOdetail.

enableIOtracing subroutine enableIOtracing()

Enable tracing of I/O events. This is the default state after the I/O etension has been initialized with initIOTrace. If disableIOtracing has been called previously, this call will reenable tracing of I/O events. See also disableIOtracing.

enableLifetimeSummaries subroutine enableLifetimeSummaries()

Enable accumulation and production of file lifetime summary records. Lifetime summary records will not be generated for files that are already open when this call is made. If the memory allocation fails, a generic trace event with a warning message will be written and summaries will not be enabled. See also disableLifetimeSummaries.

enableTimeWindowSummaries subroutine enableTimeWindowSummaries( double precision timeWindowSeconds )

timeWindowSeconds: number of seconds in the execution time window over which I/O requests are summarized

Enable accumulation and production of time window summary records. Detail open events are always produced when time window summaries are enabled. Time window summary records will not be generated for files that are already open when this call is made. If the memory allocation fails, a generic trace event with a warning message will be written and summaries will not be enabled. See also disableTimeWindowSumaries, setTimeWindowSize, and outputTmeWindowSummaries.

outputFileRegionSummaries subroutine outputFileRegionSummaries()

Force the output of file region summary records for all open files. File region summaries must be enabled for this to work. See also enableFileRegionSummaries and setFileRegionSize.

outputTimeWindowSummaries subroutine outputTimeWindowSummaries()

Force the output of time window summary records for all open files. Time window summaries must be enabled for this to work. See also enableTimeWindowSummaries and setTimeWindowSize.

setFileRegionSize subroutine setFileRegionSize( integer fileRegionBytes )

fileRegionBytes: number of bytes in the file regions over which I/O activity is summarized.

Change the file region size used for the file region summary records. See also enableFileRegionSummaries.

setTimeWindowSize subroutine setTimeWindowSize( double precision timeWindowSeconds )

timeWindowSeconds: number of seconds in the execution time window over which I/O requests are summarized.

Change the time window size used for the time window summary records. See also enableTimeWindowSummaries.

File Open Routines

Routines in this section can be used to trace I/O file open requests and are associated with trace Open events
traceOpenBegin subroutine traceOpenBegin( character*(*) file, integer flags )

file: file to open      flags: user-supplied value

Used to indicate the start of a open request. This call should be inserted just prior to a FORTRAN OPEN statement. See also traceOpenEnd()

traceOpenEnd subroutine traceOpenEnd( integer unit )

unit: unit specifier

Used to indicate the end of a open request. This call should be inserted immediately after a FORTRAN OPEN statement. See also traceOpenBegin().

File Close Routines

Routines in this section can be used to trace I/O file close requests and are associated with trace Close events.
traceCloseBegin subroutine traceCloseBegin( integer unit )

unit: unit specifier

Used to indicate the start of a close request. This call should be inserted just prior to a FORTRAN CLOSE statement. See also traceOpenEnd().

traceCloseEnd subroutine traceCloseEnd()

Used to indicate the end of a close request.This call should be inserted immediately after a FORTRAN CLOSE statement. See also traceCloseBegin().

Read Routines

Routines in this section can be used to trace I/O file read requests and are associated with trace Read events.
traceReadBegin subroutine traceReadBegin( integer unit, integer num Variables, integer cause )

unit: unit specifier    numVariables: the number of variables we're reading    cause: user-supplied integer "comment"

Used to indicate the start of a read request. This call should be inserted just prior to a FORTRAN READ statement. See also traceReadEnd.

traceReadEnd subroutine traceReadEnd( integer nbytes )

nbytes: number of bytes read.

Used to indicate the end of a read request. This call should be inserted immediately after a FORTRAN READ statement. In FORTRAN, there is no indication to the programmer of the actual number of bytes read, so it is the programmer's responsibility to give their best estimate of the bytes read.  See also traceReadBegin.

Seek Routines

Routines in this section can be used to trace I/O file seek requests and are associated with trace Seek events.
traceRewindBegin subroutine traceRewindBegin( integer unit )

unit: unit specifier

Used to indicate the start of a rewind request. This call should be inserted just prior to a FORTRAN REWIND statement. See also traceRewindEnd.

traceRewindEnd subroutine traceRewindEnd()

Used to indicate the end of a rewind request. This call should be inserted immediately after a FORTRAN REWIND statement. See also traceRewindBegin.

Write Routines

Routines in this section can be used to trace I/O file write requests. All are associated with trace Write events.
traceWriteBegin subroutine traceWriteBegin( integer unit, integer numVariables, integer cause )

unit: unitspecifier   numVariables: the number of variables we're writing    cause: user-supplied integer "comment"

Used to indicate the start of a write request. This call should be inserted just prior to a FORTRAN WRITE statement. See also traceWriteEnd.

traceWriteEnd subroutine traceWriteEnd( integer nbytes )

nbytes: number of bytes written

Used to indicate the end of a write request. This call should be inserted immediately after a FORTRAN WRITE statement. In FORTRAN, there is no indication to the programmer of the actual nmber of bytes written so it is the programmer's responsibility to give their best estimate of the bytes written. See also traceWriteBegin.

Flush Routine

The routine in this section can be used to trace I/O file flush requests and provides a tracing extension interface to the standard call to flush a file. It is associated with trace Flush events.
traceFLUSH subroutine traceFLUSH( integer unit )

Interface to flush(3F), which provides tracing information.

Interval Routines

The routines in this section can be used to bracket any I/O call for which no specific I/O tracing extension interface exists, but for which the user would like to record the duration or other information in the trace file. These routines are associated with trace Misc I/O events.
traceIOBegin subroutine traceIOBegin( integer eventID, integer unit )

eventID: an integer value that will appear in the Event Identifier field of the generated trace record.
unit unit specifier for file associated with the I/O operation being measured.

May be used to indicate the start of an I/O request the user would like to measure, but for which no other tracing interface is provided. Must be followed by a call to traceIOEnd before any other calls to traceIOBegin are made. See also traceIOEnd.

traceIOEnd subroutine traceIOEnd( int userInt, double userDbl, char *userStr )

userInt: an interger value that will appear in the Integer field of the generated trace record.
userDbl: a double value that will appear in the Double field of the generated trace record.
userStr: a character string that will appear in the String field of the generated trace record.

May be used to indicate the end of an I/O request the user would like to measure, but for which no other tracing interface is provided. The arguments, which are output in the generated Misc I/O trace record, are under complete control of the user. The Misc I/O trace record also contains the file identifier and elapsed time since the interval was started by a call to traceIOBegin.

Must be preceded by a call to traceIOBegin. See also traceIOBegin.

Machine Dependent Routines
Intel Paragon Systems

This is a list of the machine-dependent routines provided by the I/O extension to the Pablo trace library that are callable from FORTRAN programs on Intel Paragon systems. All routines are interfaces to Intel standard library calls---the reader should refer to the Intel-supplied manual pages for the standard calls; arguments to the tracing interface calls are identical.
traceCREAD

traceCREADV

These synchronous read requests are associated with trace Read events

subroutine traceCREAD( integer fildes, har *buffer, unsigned integer nbytes )

Interface to cread(3), which provides tracing information.

subroutine traceCREADV( integer fildes, struct iovec *iov, integer iovcnt )

Interface to creadv(3), which provides tracing information.

traceCWRITE

traceCWRITEV

These synchronous write requests are associated with trace Write events.

subroutine traceCWRITE( integer unit, integer buffer(*), unsigned integer nbytes )

Interface to cwrite(3f), which provides tracing information.

subroutine traceCWRITEV( integer unit, integer iov(*), integer iovcnt )

Interface to cwritev(3f), which provides tracing information.

traceFORFLUSH

This request to force completion of all buffered I/O to a specific file is associated with the trace Flush event.

subroutine traceFORFLUSH( integer unit )

Interface to flush(3f), which provides tracing information.

traceGOPEN

This global file open requests are associated with trace Global Open events

subroutine traceGOPEN( integer unit, character *(*) path, integer iomode )

Interface to gopen(3f), which provides tracing information.

traceIODONE

This request to determine whether synchronous read or write operations has completed isassociated with the trace IO Wait event.

integer function traceIODONE( integer id )

Interface to iodone(3f), which provides tracing information.

traceIOMODE

trace_IOMODE

These requests to get the I/O mode of files are associated with trace IO Mode events

long traceIOMODE( integer filedes )

Interface to iomode(3), which provides tracing information.

long trace_IOMODE( integer filedes )

Interface to _iomode(3), which provides tracing information.

traceIOWAIT

trace_IOWAIT

These requests to wait for the completion of asynchronous read or write operations are associated with trace IO Wait events.

integer function traceIOWAIT( long id )

Interface to iowait(3), which provides tracing information.

int trace_IOWAIT( long id )

Interface to _iowait(3), which provides tracing information.

traceIREAD

trace_IREAD

traceIREADV

trace_IREADV

These asynchronous read requests are associated with trace Asynch Read events.

long traceIREAD( integer fildes, char *buffer, unsigned integer nbytes )

Interface to iread(3), which provides tracing information.

long trace_IREAD( integer fildes, char *buffer, unsigned integer nbytes )

Interface to _iread(3), which provides tracing information.

long traceIREADV( integer fildes, struct iovec *iov, integer iovcnt )

Interface to ireadv(3), which provides tracing information.

long traceIREADV( integer fildes, struct iovec *iov, integer iovcnt )

Interface to _ireadv(3), which provides tracing information.

traceIWRITE

trace_IWRITE

traceIWRITEV

trace_IWRITEV

These asynchronous write requests are associated with trace Asynch Write events.

long traceIWRITE( integer fildes, char *buffer, unsigned integer nbytes )

Interface to iwrite(3), which provides tracing information.

long trace_IWRITE( integer fildes, char *buffer, unsigned integer nbytes )

Interface to _iwrite(3), which provides tracing information.

long traceIWRITEV( integer filde, struct iovec *iov, integer iovnt )

Interface to iwritev(3), which provides tracing information.

long trace_IWRITEV( integer fildes, struct iovec *iov, integer iovcnt )

Interface to _iwritev(3), which provides tracing information.

traceLSIZE

trace_LSIZE

These requests to set or increase the size of files are associated with trace Lsize events.

long traceLSIZE( integer fileID, off_t offset, integer whence )

Interface to lsize(3), which provides tracing information.

long trace_LSIZE( integer fileID, off_t offset, integer whence )

Interface to _lsize(3), which provides tracing information.

traceSETIOMODE

trace_SETIOMODE

These requests to set the I/O mode of files are associated with trace IO Mode events.

subroutine traceSETIOMODE( integer fildes, integer iomode )

Interface to setiomode(3), which provides tracing information.

long trace_SETIOMODE( integer fildes, integer iomode )

Interface to _setiomode(3), which provides tracing information.

 

MPI I/O Trace Routines

The procedure for real-time tracing is only slightly different from the procedure for runtime tracing . To enable real-time tracing, the call initMPIOTrace should have "1" as the tracing option, which is the second parameter in the call. To instrument the program in the sample code with the real-time tracing option, comment out line 22 and uncomment line 24. Versions for both C and FORTRAN are available below.

Initialization & Termination Routines for C

The routines listed in this section initialize and terminate the Pablo MPI I/O trace extension. Every application instrumented to gather MPI I/O performance information must initialize and terminate the MPI I/O extension for correct results.
initMPIOTrace

Initializes the Pablo MPI I/O tracing environment.

synopsis:

     #include "MPIO_Trace.h"
     void initMPIOTrace( char *traceFile, int traceType);

Parameters:

    traceFile: The name of the trace file to which the trace records will
     be written. The suffix ".ndXX", where XX represents a MPI process
     number, will be added to the specified trace file name automatically.

     traceType: The type of trace to produce. Options are 0 and 1. If "0" is
     specified, then the runtime tracing option is chosen; if "1" is specified,
     then the real-time tracing option is chosen.

endMPIOTrace

Terminates the Pablo MPI I/O tracing environment.

synopsis:

     #include "MPIO_Trace.h"
     void endMPIOTrace( void );

Initialization & Termination Routines for FORTRAN

The routines listed in this section initialize and terminate the Pablo MPI I/O trace extension. Every application instrumented to gather MPI I/O performance information must initialize and terminate the MPI I/O extension for correct results.
initMPIOTrace

Initializes the Pablo MPI I/O tracing environment.

synopsis:

     include 'fMPIO_Trace.h'
     character*(*) tracefile
     integer traceType, nameLen
     subroutine initMPIOTrace( traceFile, nameLen, traceType)

Parameters:

    traceFile: The name of the trace file to which the trace records will
     be written. The suffix ".ndXX", where XX represents a MPI process
     number, will be added to the specified trace file name automatically.

     nameLen: The length of the name traceFile

     traceType: The type of trace to produce. Options are 0 and 1. If "0" is
     specified, then the runtime tracing option is chosen; if "1" is specified,
     then the real-time tracing option is chosen.

endMPIOTrace

Terminates the Pablo MPI I/O tracing environment.

synopsis:

     include 'fMPIO_Trace.h'
     subroutine endMPIOTrace()

 

HDF Trace Extension Routines

Any HDF code that call call FORTRAN or C programs can be instrumented. For your code to produce output from HDF and I/O calls, the main program must be modified slightly. The modifications involve inserting a call to initialize tracing before any HDF calls are made and a call to end tracing prior to exiting from the program. The procedure for real-time tracing is only slightly different from the procedure for runtime tracing . To enable real-time tracing, the call HDFinitTrace should have "1" as the tracing option, which is the second parameter in the call. Versions for both C and FORTRAN are available below.

Initialization & Termination Routines for C

The routines listed in this section initialize and terminate the Pablo HDF trace extension. Every application instrumented to gather HDF performance information must initialize and terminate the HDF extension for correct results.
HDFinitTrace

Initializes the Pablo HDF tracing environment.

 

This function is called to specify the name of the trace file(s), the procedures to be traced, and the type of tracing to be performed. It accepts a variable length parameter list. The first parameter is the root name of the trace file and the last parameter is the type of tracing to be performed. Between the first and last parameters, is a list of unsigned integers called trace IDs that specifies the HDF procedures that are to be traced. The user may enable tracing of individual HDF procedures and individual HDF source files. If an HDF source file is traced, all routines within the file will be traced. The unsigned integer trace IDs associated with the procedures and HDF source files are defined in the include file ProcTrace.h. The trace ID associated with a specific procedure has the form ID_<procedure> where <procedure> is the name of the procedure. The trace ID associated with a source file has the form ID_<file>_c where<file> is the root name of the source file. For eample, ID_H5Topen is the trace ID for the procedure H5Topen; ID_H5A_c is the trace ID for the source file H5A.c. The trace ID ID_ALLHDF will enable tracing of all HDF procedures.

synopsis:

     #include "ProcTrace.h"
     void HDFinitTrace( char *traceFile,
                        unsigned traceID1, [traceID2, ...,]
                        int traceType );

Parameters:

    traceFile: The root name of the file to which the output will be written.
     If the program is run in serial mode, the trace file produced will be named
     <traceFile> where <traceFile> contains the contents of the character string
     traceFile. If the program is run with MPI, for each processor, a file name
     <traceFlie>.ndp will be produced where p is the number of the processor.

Note: For best results, the file system contaning the trace files should be different from the file system containing the files used as input and output for the program being traced.

     traceID1, [traceID2, ...,]: This is a nonempty list of trace IDs
     specifying the procedures to be traced. Each trace ID may represent either an
     individual procedure or a source file in the HDF library. In the case where
     the ID represents a source file, all procedures in that file will be traced.
     An arbitrary number of trace IDs may be passed. The include file ProcTrace.h
     in the HDF include directory contains the definitions of the trace IDs
     associated with the HDF procedures and HDF library source files. Passing the
     value ID_ALLHDF causes all HDF procedures to be traced.

     traceType: The type of trace to produce. It is an integer indicating the
     type of SDDF output and program execution:
       traceType=RUNTIME_TRACE,
                 perform Runtime tracing when the program is sun in serial mode.
       traceType=MPI_RUNTIME_TRACE,
                 perform runtime tracing when the program is run using MPI. This
                 option is not valid with HDF version 4.
       traceType=SUMMARY_TRACE,
                 perform Summary Tracing when the program is run in serial mode.
       traceType=MPI_SUMARY_TRACE,
                 perform Summary Tracing when the program is run using MPI. This
                 option is not valid with HDF version 4.

The constants RUNTIME_TRACE, MPI_RUNTIME_TRACE, SUMMARY_TRACE, and MPI_SUMMARY_TRACE are defined in the include file ProcTrace.h as are the values of the trace IDs.

HDFendTrace

Terminates the Pablo MPI I/O tracing environment.

synopsis:

     #include "MPIO_Trace.h"
     void endMPIOTrace( void );

Initialization & Termination Routines for FORTRAN

The routines listed in this section initialize and terminate the Pablo MPI I/O trace extension. Every application instrumented to gather MPI I/O performance information must initialize and terminate the MPI I/O extension for correct results.
initMPIOTrace

Initializes the Pablo MPI I/O tracing environment.

synopsis:

     include 'fMPIO_Trace.h'
     character*(*) tracefile
     integer traceType, nameLen
     subroutine initMPIOTrace( traceFile, nameLen, traceType)

Parameters:

    traceFile: The name of the trace file to which the trace records will
     be written. The suffix ".ndXX", where XX represents a MPI process
     number, will be added to the specified trace file name automatically.

     nameLen: The length of the name traceFile

     traceType: The type of trace to produce. Options are 0 and 1. If "0" is
     specified, then the runtime tracing option is chosen; if "1" is specified,
     then the real-time tracing option is chosen.

endMPIOTrace

Terminates the Pablo MPI I/O tracing environment.

synopsis:

     include 'fMPIO_Trace.h'
     subroutine endMPIOTrace()

SDDF Records Produced by the I/O Trace Extension

SDDF Event Descriptors for Trace Records

The SDDF records described in this section define the layout of the corresponding data records.This is mechanism for defining data contained in the individual fields comprising each SDDF record.

I/O Detail Trace Records

OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen
OpenOpenOpenOpen

#321

// "description" "IO Open"
"Open" {
       //"Time" "Timestamp"
       int "Timestamp"[];
       //"Seconds" "Floating Point Timestamp
       double "Seconds";
       //Event ID" "Corresponding event"
       // "700001" "open"
       // "700003" "fopen"
       int "Event Identifier";
       //"Node" "Processor number"
       int "Processor number";
       //"Duration" "Event duration in seconds"
       double "Duration";
       //"File ID" "Unique file identifier"
       int "File ID";
       //"Flags" "Flage supplied at file open"
       int "Flags";
       //"Mode" "Mode supplied at file open"
       // "-1" "No mode specified"
       int "Mode";
       //"file Name" "Name of file supplied at file open"
       char "File Name" [];

};;

FlushFlushFlushFlush
FlushFlushFlushFlush
FlushFlushFlushFlush
FlushFlushFlushFlush
FlushFlushFlushFlush
FlushFlushFlushFlush
FlushFlushFlushFlush
FlushFlushFlushFlush
FlushFlushFlushFlush
FlushFlushFlushFlush
FlushFlushFlushFlush
FlushFlushFlushFlush
FlushFlushFlushFlush
FlushFlushFlushFlush
FlushFlushFlushFlush
FlushFlushFlushFlush
FlushFlushFlushFlush

#329

// "description" "IO Flush"
"Flush" {
       //"Time" "Timestamp"
       int "Timestamp"[];
       //"Seconds" "Floating Point Timestamp
       double "Seconds";
       //Event ID" "Corresponding event"
       // "700021" "fflush"
       // "700023" "flush"
       // "800029" "forflush"
       int "Event Identifier";
       //"Node" "Processor number"
       int "Processor number";
       //"Duration" "Event duration in seconds"
       double "Duration";
       //"File ID" "Unique file identifier"
       //"-2" "indicates stream argument was NULL in fflush()"
       int "File ID";
};;

CloseCloseClose
CloseCloseClose
CloseCloseClose
CloseCloseClose
CloseCloseClose
CloseCloseClose
CloseCloseClose
CloseCloseClose
CloseCloseClose
CloseCloseClose
CloseCloseClose
CloseCloseClose
CloseCloseClose
CloseCloseClose
CloseCloseClose
CloseCloseClose

#337

// "description" "IO Close"
"Close" {
       //"Time" "Timestamp"
       int "Timestamp"[];
       //"Seconds" "Floating Point Timestamp
       double "Seconds";
       //Event ID" "Corresponding event"
       // "700005" "close"
       // "700007" "fclose"
      int "Event Identifier";
       //"Node" "Processor number"
       int "Processor number";
       //"Duration" "Event duration in seconds"
       double "Duration";
       //"File ID" "Unique file identifier"
       int "File ID";
};;

ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead
ReadReadReadRead

#345

// "description" "IO Read"
"Read" {
       //"Time" "Timestamp"
       int "Timestamp"[];
       //"Seconds" "Floating Point Timestamp
       double "Seconds";
       //Event ID" "Corresponding event"
       // "700009" "read"
       // "700011" "fread"
       // "800001" "cread"
       // "800003" "creadv"
       int "Event Identifier";
       //"Node" "Processor number"
       int "Processor number";
       //"Duration" "Event duration in seconds"
       double "Duration";
       //"File ID" "Unique file identifier"
       int "File ID";
       //"Number Bytes" "Number of bytes read"
       int "Number Bytes";
       //"Number Variables" "Number of variables read"
       int "Number Variables";
       //"Cause" "User-supplied value"
       //"-1" "Produced by automatic instrumentation"
       int "Cause";
};;

SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek
SeekSeekSeekSeek

#353

// "description" "IO Seek"
"Seek" {
       //"Time" "Timestamp"
       int "Timestamp"[];
       //"Seconds" "Floating Point Timestamp
       double "Seconds";
       //Event ID" "Corresponding event"
       // "700013" "read"
       // "700015" "fread"
       // "700025" "cread"
       // "700027" "creadv"
       int "Event Identifier";
       //"Node" "Processor number"
       int "Processor number";
       //"Duration" "Event duration in seconds"
       double "Duration";
       //"File ID" "Unique file identifier"
       int "File ID";
       //"Number Bytes" "Number of bytes traversed"
       int "Number Bytes";
       //"Offset" "Byte offset from position indicated by Whence"
       int "Offset";
       //"Whence" "Indicates file position the Offset is measured from"
       //"0" "SEEK_SET"
       //"1" "SEEK_CUR"
       //"2" "SEEK_END"
       int "Whence";
};;

WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite
WriteWriteWrite

#361

// "description" "IO Write"
"Write" {
       //"Time" "Timestamp"
       int "Timestamp"[];
       //"Seconds" "Floating Point Timestamp
       double "Seconds";
       //Event ID" "Corresponding event"
       // "700017" "write"
       // "700019" "fwrite"
       // "800005" "cwrite"
       // "800007" "cwritev"
       int "Event Identifier";
       //"Node" "Processor number"
       int "Processor number";
       //"Duration" "Event duration in seconds"
       double "Duration";
       //"File ID" "Unique file identifier"
       int "File ID";
       //"Number Bytes" "Number of bytes written"
       int "Number Bytes";
       //"Number Variables" "Number of variables written"
       int "Number Variables";
       //"Cause" "User-supplied value"
       //"-1" "Produced by automatic instrumentation
       int "Cause";
};;

MiscIOMiscIOMiscIO
MiscIOMiscIOMiscIO
MiscIOMiscIOMiscIO
MiscIOMiscIOMiscIO
MiscIOMiscIOMiscIO
MiscIOMiscIOMiscIO
MiscIOMiscIOMiscIO
MiscIOMiscIOMiscIO
MiscIOMiscIOMiscIO
MiscIOMiscIOMiscIO
MiscIOMiscIOMiscIO
MiscIOMiscIOMiscIO
MiscIOMiscIOMiscIO
MiscIOMiscIOMiscIO
MiscIOMiscIOMiscIO
MiscIOMiscIOMiscIO
MiscIOMiscIOMiscIO
MiscIOMiscIOMiscIO
MiscIOMiscIOMiscIO
MiscIOMiscIOMiscIO

#401

// "description" "Miscellaneous I/O Event"
"Misc I/O" {
       //"Time" "Timestamp"
       int "Timestamp"[];
       //"Seconds" "Floating Point Timestamp
       double "Seconds";
       //Event ID" "Corresponding event"
       // "all values" "supplied by user"
       int "Event Identifier";
       //"Node" "Processor number"
       int "Processor Number";
       //"Duration" "Event duration in seconds"
       double "Duration";
       //"File ID" "Unique file identifier"
       int "File ID";
       //"Integer" "user-supplied integer"
       int "Integer";
       //"Double" "User-supplied double"
       double "Double"
       //"String" "User-supplied string"
       char "String"[]
};;
I/O Summary Records

File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary
File Lifetime Summary

#369

// "description" "IO File Lifetime Summary"
"File Lifetime Summary" {
       //"Time" "Timestamp"
       int "Timestamp"[];
       //"Seconds" "Floating Point Timestamp
       double "Seconds";
       //"Event ID" "Corresponding event"
       //"700040" "lifetime summary"
       int "Event Identifier";
       //"Node" "Processor number"
       int "Processor number";
       //"Duration" "Event duration in seconds"
       double "Duration";
       //"File ID" "Unique file identifier"
       int "File ID";
       //"Mode" "Mode supplied at file open"
       //"-1" "No mode specified"
       int "Mode";
       //"Lifetime" "Time file was open (excluding overhead) in seconds"
       double "Lifetime";
       //"Overhead" "Duration of Open and Close in seconds"
       double "Overhead";
       //"Read Count" "Number of reads"
       int "Read Count";
       //"Read Number Bytes" "Number of bytes read"
       int "Read Number Bytes";
       //"Read Duration" "Duration of Reads in seconds"
       double "Read Duration";
       //"Seek Count" "Number of seeks"
       int "Seek Count";
       //"Seek Number Bytes" "Number of bytes traversed by seeks"
       int "Seek Number Bytes";
       //"Seek Duration" "Duration of Seeks in seconds"
       double "Seek Duration";
       //"Write Count" "Number of writes"
       int "Write Count";
       //"Write Number Bytes" "Number of bytes written"
       int "Write Number Bytes";
       //"Write Duration" "Duration of Writes in seconds"
       double "Write Duration";
       //"File Name" "Name of the file supplied at fle open"
       char "File Name"[];
};;

Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary
Time Window Summary

#377

// "description" "IO Time Window Summary by File"
"Time Window Summary" {
       //"Time" "Timestamp"
       int "Timestamp"[];
       //"Seconds" "Floating Point Timestamp
       double "Seconds";
       //Event ID" "Corresponding event"
       //"700041" "time window summary"
       int "Event Identifier";
       //"Node" "Processor number"
       int "Processor Number";
       //"Active Duration" "Time between first and last I/O access in seconds"
       //"Note" "Value is 0 if fewer than two accesses occured"
       double "Active Duration";
       //"File ID" "Unique file identifier"
       int "File ID";
       //"Summary Trigger" "Indicates what triggered time window summary"
       //"0" "New time window"
       //"1" "File closed"
       //"2" "Forced by call to outputTimeWindowSummaries()"
       int "Summary Trigger";
       //"Read Count" "Number of reads in time window"
       int "Read Count";
       //"Read Number Bytes" "Number of bytes read in time window"
       int "Read Number Bytes";
       //"Read Duration" "Seconds spent reading in time window"
       double "Read Duration";
       //"Seek Count" "Number of seeksin time window"
       int "Seek Count";
       //"Seek Number Bytes" "Number of bytes traversed by seeks in window"
       int "Seek Number Bytes";
       //"Seek Duration" "Seconds spent seeking in time window"
       double "Seek Duration";
       //"Write Count" "Number of writes in time window"
       int "Write Count";
       //"Write Number Bytes" "Number of bytes written in time window"
       int "Write Number Bytes";
       //"Write Duration" "Seconds spent writing in time window"
       double "Write Duration";
       //"First Byte" "First byte accessed during time window"
       //"Note" "Value is -1 if no bytes were accessed"
       int "First Byte";
       //"Last Byte" "Last byte accessed during time window"
       //"Note" "Value is -1 if no bytes were accessed"
       int "Last Byte";
};;

File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary
File Region Summary

#385

// "description" "IO Time Window Summary by File"
"Time Window Summary" {
       //"Time" "Timestamp"
       int "Timestamp"[];
       //"Seconds" "Floating Point Timestamp
       double "Seconds";
       //Event ID" "Corresponding event"
       //"700041" "time window summary"
       int "Event Identifier";
       //"Node" "Processor number"
       int "Processor Number";
       //"Active Duration" "Time between first and last I/O access in seconds"
       //"Note" "Value is 0 if fewer than two accesses occured"
       double "Active Duration";
       //"File ID" "Unique file identifier"
       int "File ID";
       //"Summary Trigger" "Indicates what triggered time window summary"
       //"0" "New time window"
       //"1" "File closed"
       //"2" "Forced by call to outputTimeWindowSummaries()"
       int "Summary Trigger";
       //"Read Count" "Number of reads in time window"
       int "Read Count";
       //"Read Number Bytes" "Number of bytes read in time window"
       int "Read Number Bytes";
       //"Read Duration" "Seconds spent reading in time window"
       double "Read Duration";
       //"Seek Count" "Number of seeksin time window"
       int "Seek Count";
       //"Seek Number Bytes" "Number of bytes traversed by seeks in window"
       int "Seek Number Bytes";
       //"Seek Duration" "Seconds spent seeking in time window"
       double "Seek Duration";
       //"Write Count" "Number of writes in time window"
       int "Write Count";
       //"Write Number Bytes" "Number of bytes written in time window"
       int "Write Number Bytes";
       //"Write Duration" "Seconds spent writing in time window"
       double "Write Duration";
       //"First Byte" "First byte accessed during time window"
       //"Note" "Value is -1 if no bytes were accessed"
       int "First Byte";
       //"Last Byte" "Last byte accessed during time window"
       //"Note" "Value is -1 if no bytes were accessed"
       int "Last Byte";
};;
I/O Extension Status Records

IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State
IO Trace State

#385

// "description" "State Change in I/O Tracing"
"IO Trace State" {
       //"Time" "Timestamp"
       int "Timestamp"[];
       //"Seconds" "Floating Point Timestamp
       double "Seconds";
       //Event ID" "Corresponding event"
       //"700101" "End of IO Tracing"
       //"700102" "Enable IO Tracing"
       //"700103" "Disable IO Tracing"
       //"700104" "Enable IO Detail Tracing"
       //"700105" "Disable IO Detail Tracing"
       //"700106" "Enable IO Lifetime Summary"
       //"700107" "Disable IO Lifetime Summary"
       //"700108" "Enable IO Time Window Summary"
       //"700109" "Disable IO Time Window Summary"
       //"700110" "Change Time Window Size"
       //"700111" "Enable IO File Region Summary"
       //"700112" "Disable IO File Region Summary"
       //"700113" "Change File Region Size"
       int "Event Identifier";
       //"Node" "Processor number"
       int "Processor Number";
       //"Request Status" "Corresponding outcome of state change request"
       //"-1" "Unable to complete request"
       //"0" "Request completed successfully"
       //"1" "Requested state same as current state"
       int "Request Status";
       //"IO Tracing" "0 = disabled; 1 = enabled"
       int "IO Tracing";
       //"Detailed Trace" "0 = disabled; 1 = enabled"
       int "Detailed Trace";
       //"Lifetime Summaries" "0 = disabled; 1 = enabled"
       int "Lifetime Summaries";
       //"Time Window Summaries" "0 = disabled; >0 = window size"
       double "Time Window Summaries";
       //"File Region Summaries" "0 = disabled; >0 = region size"
       int "File Region Summaries";
};;
I/O Detail Records-Intel Paragon Systems

Async Read
Async Read
Async Read
Async Read
Async Read
Async Read
Async Read
Async Read
Async Read
Async Read
Async Read
Async Read
Async Read
Async Read
Async Read
Async Read
Async Read
Async Read
Async Read
Async Read
Async Read
Async Read
Async Read

#345

// "description" "Asynch IO Read - Intel"
"Asynch Read" {
       //"Time" "Timestamp"
       int "Timestamp"[];
       //"Seconds" "Floating Point Timestamp
       double "Seconds";
       //Event ID" "Corresponding event"
       // "800009" "iread"
       // "800011" "fread"
       int "Event Identifier";
       //"Node" "Processor number"
       int "Processor number";
       //"Duration" "Event duration in seconds"
       double "Duration";
       //"File ID" "Unique file identifier"
       int "File ID";
       //"Number Bytes" "Number of bytes requested"
       int "Number Bytes";
       //"Number Variables" "Number of variables requested"
       int "Number Variables";
       //"IO Identifier" "I/O identifier returned by the call"
       int "IO Identifier";
};;

Async Write
Async Write
Async Write
Async Write
Async Write
Async Write
Async Write
Async Write
Async Write
Async Write
Async Write
Async Write
Async Write
Async Write
Async Write
Async Write
Async Write
Async Write
Async Write
Async Write
Async Write

#457

// "description" "Asynch IO Write - Intel"
"Asynch Write" {
       //"Time" "Timestamp"
       int "Timestamp"[];
       //"Seconds" "Floating Point Timestamp
       double "Seconds";
       //Event ID" "Corresponding event"
       // "800013" "iwrite"
       // "800015" "iwritev"
       int "Event Identifier";
       //"Node" "Processor number"
       int "Processor number";
       //"Duration" "Event duration in seconds"
       double "Duration";
       //"File ID" "Unique file identifier"
       int "File ID";
       //"Number Bytes" "Number of bytes to write"
       int "Number Bytes";
       //"Number Variables" "Number of variables to write"
       int "Number Variables";
       //"IO Identifier" "I/O identifier returned by the call"
       int "IO Identifier";
};;

IO Wait   IO Wait
IO Wait   IO Wait
IO Wait   IO Wait
IO Wait   IO Wait
IO Wait   IO Wait
IO Wait   IO Wait
IO Wait   IO Wait
IO Wait   IO Wait
IO Wait   IO Wait
IO Wait   IO Wait
IO Wait   IO Wait
IO Wait   IO Wait
IO Wait   IO Wait
IO Wait   IO Wait
IO Wait   IO Wait
IO Wait   IO Wait
IO Wait  IO Wait
IO Wait   IO Wait
IO Wait   IO Wait
IO Wait   IO Wait
IO Wait   IO Wait
IO Wait   IO Wait
IO Wait   IO Wait

#457

// "description" "IO Wait - Intel"
"IO Wait" {
       //"Time" "Timestamp"
       int "Timestamp"[];
       //"Seconds" "Floating Point Timestamp
       double "Seconds";
       //Event ID" "Corresponding event"
       // "800017" "iowait"
       // "800019" "iodone"
       int "Event Identifier";
       //"Node" "Processor number"
       int "Processor number";
       //"Duration" "Event duration in seconds"
       double "Duration";
       //"File ID" "Unique file identifier"
       int "File ID";
       //"IO Identifier" "Value returned by previous asynch call"
       int "IO Identifier";
       //"Return Value" "Corresponding event and interpretation"
       //"-1" "-iowait, -iodone: error occurred"
       //"0" "iowait; I/O finished; iodone, _iodone: I/O not finished"
       //"0-N" "iowait: bytes transferred (I/O finished)"
       //"1" "iodone, _iodone: I/O finished"
       int "Return Value";
};;

Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open
Global Open

#473

// "description" "IO Global Open - Intel"
"Global Open" {
       //"Time" "Timestamp"
       int "Timestamp"[];
       //"Seconds" "Floating Point Timestamp
       double "Seconds";
       //Event ID" "Corresponding event"
       // "800021" "gopen"
       int "Event Identifier";
       //"Node" "Processor number"
       int "Processor number";
       //"Duration" "Event duration in seconds"
       double "Duration";
       //"File ID" "Unique file identifier"
       int "File ID";
       //"Flags" "Flags supplied at file open"
       int "Flags";
       //"Mode" "Mode supplied at file open"
       int "Mode";
       //"IO Mode" "Corresponding symbolic value"
       //"0" "M_UNIX"
       //"1" "M_LOG"
       //"2" "M_SYNC"
       //"3" "M_RECORD"
       //"4" "M_GLOBAL"
       int "IO Mode";
       //"File Name" "Name of file supplied at file open"
       char "File Name"[];
};;

IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode
IO Mode    IO Mode

#481

// "description" "IO Mode Manipulation - Intel"
"IO Mode" {
       //"Time" "Timestamp"
       int "Timestamp"[];
       //"Seconds" "Floating Point Timestamp
       double "Seconds";
       //Event ID" "Corresponding event"
       // "800025" "setiomode"
       // "800023" "iomode"
       int "Event Identifier";
       //"Node" "Processor number"
       int "Processor number";
       //"Duration" "Event duration in seconds"
       double "Duration";
       //"File ID" "Unique file identifier"
       int "File ID";
       //"IO Mode" "Corresponding symbolic value"
       //"0" "M_UNIX"
       //"1" "M_LOG"
       //"2" "M_SYNC"
       //"3" "M_RECORD"
       //"4" "M_GLOBAL - Paragon only"
       //"-1" "Error occurred in call"
       int "IO Mode";
};;

Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize
Lsize  Lsize  Lsize

#489

// "description" "IO Lsize - Intel"
"Lsize" {
       //"Time" "Timestamp"
       int "Timestamp"[];
       //"Seconds" "Floating Point Timestamp
       double "Seconds";
       //Event ID" "Corresponding event"
       // "800027" "lsize"
       int "Event Identifier";
       //"Node" "Processor number"
       int "Processor number";
       //"Duration" "Event duration in seconds"
       double "Duration";
       //"File ID" "Unique file identifier"
       int "File ID";
       //"Offset" "Number of bytes toresize from whence"
       int "Offset";
       //"Whence" "Indicates file position where resize begins"
       //"0" "SIZE_SET"
       //"1" "SIZE_CUR"
       //"2" "SIZE_END"
       int "Whence";
       //"Size" "New file size as returned by lsize() call"
       int "Size";
};;