HPC Storage strace Snippet

Strace Report for file: strace.out.18590

  

Introduction

This report summarizes the statistics in analyzing the strace results for a file. This output allows you examine what the application is doing from an I/O perspective. This report is broken into several sections. In each section a summary of the results is presented and a statistical analysis is made.

Time Statistics

The following results are the overall time statistics for all of the files.
 

Elapsed Time for run: 3376.81543207 seconds  
Total IO Time:: 7.677231 seconds  
Total IO Time Counter:: 43787 seconds  
  Percentage of Total Time = 0.227351 %

I/O Function Count

This section lists the I/O function command count (how many times a particular I/O command is called). Table 1 below contains this information. 

Table 1 - I/O Function Command Count

  Command     Count  
lseek 3,848
close 72
open 77
write 35,369
getdents 8
access 5
fstat 1,384
fcntl 8
stat 36
read 2,798
unlink 5
fsync 21
lseekm 3,848

Write Statistics

This section presents statistical information about the write functions in the application. It focuses on use of the write(2) function in glibc. The pertinent details of the man pages are:  

NAME
write - write to a file descriptor

SYNOPSIS
#include

ssize_t write(int fd, const void *buf, size_t count);

DESCRIPTION
write() writes up to count bytes from the buffer pointed buf to the file referred to by the file descriptor fd.

The number of bytes written may be less than count if, for example, there is insufficient space on the underlying physical medium, or the RLIMIT_FSIZE resource limit is encountered (see setrlimit(2)), or the call was interrupted by a signal handler after having written less than count bytes. (See also pipe(7).)

For a seekable file (i.e., one to which lseek(2) may be applied, for example, a regular file) writing takes place at the current file offset, and the file offset is incremented by the number of bytes actually written. If the file was open(2)ed with O_APPEND, the file offset is first set to the end of the file before writing. The adjustment of the file offset and the write operation are performed as an atomic step.

POSIX requires that a read(2) which can be proved to occur after a write() has returned returns the new data. Note that not all file systems are POSIX conforming.

The information and statistics in this section focus on the write() aspects of the application. Both tabular and graphical information is provided.

Table 2 below contains information on the total number of write function calls as a function of the data transfer size. The data is presented in

Table 2 - Total Write Function calls vs. data size

  IO Size Range     Total Number of Syscalls  
0KB < < 1KB 30,070
1KB < < 8KB 5,105
8KB < < 32KB 14
32KB < < 128KB 64
128KB < < 256KB 0
256KB < < 512KB 2
512KB < < 1MB 3
1MB < < 10MB 87
10MB < < 100MB 0
100MB < < 1GB 0
1GB < < 10GB 0
10GB < < 100GB 0
100GB < < 1TB 0
1TB < < 10TB 0

Statistical overall summary of write functions.

Total number of Bytes written = 216,707,618 (216.707618 MB)
Number of Write function calls = 35,369
Average (mean) bytes per call = 6,131.210016 (bytes) (0.006131 MB)
  Standard Deviation bytes per call = 112,719.094422 (bytes) (0.112719 MB)
  Mean Absolute Deviation = 116,747.324560 (bytes) (0.116747 MB)
Median Bytes per call = 109 (bytes) (0 MB)
  Median Absolute Deviation = 6,083.299392 (bytes) (0.006083 MB)
Time for slowest write function (secs) = 0.084869   Line location in file = 1,485
Smallest write syscall size = 1 (Bytes)
Largest write syscall size = 8,388,608 (Bytes)

Read Statistics

This section presents statistical information about the read functions in the application. It focuses on use of the read(2) function in glibc. The pertinent details of the man pages are:

NAME
read - read from a file descriptor

SYNOPSIS
#include

ssize_t read(int fd, void *buf, size_t count);

DESCRIPTION
read() attempts to read up to count bytes from file descriptor fd into the buffer starting at buf.

If count is zero, read() returns zero and has no other results. If count is greater than SSIZE_MAX, the result is unspecified.

The information and statistics in this section focus on the read() aspects of the application. Both tabular and graphical information is provided.

Table 3 below contains information on the number of read function calls as a function of the data transfer size. The data is presented in

Table 3 - Read Function calls vs. data size

  IO Size Range     Total Number of Read Syscalls  
0KB < < 1KB 53
1KB < < 8KB 16
8KB < < 32KB 28
32KB < < 128KB 145
128KB < < 256KB 188
256KB < < 512KB 404
512KB < < 1MB 629
1MB < < 10MB 1,310
10MB < < 100MB 1
100MB < < 1GB 0
1GB < < 10GB 0
10GB < < 100GB 0
100GB < < 1TB 0
1TB < < 10TB 0

Overall statistical summary of read functions. 

Total number of Bytes read = 2,687,124,647 (2,687.124647 MB)
Number of Read function calls = 2,798
Average (mean) bytes per call = 968,682.280822 (bytes) (0.968682 MB)
  Standard Deviation bytes per call = 635,858.277337 (bytes) (0.635858 MB)
  Mean Absolute Deviation = 573,916.058117 (bytes) (0.573916 MB)
Median Bytes per call = 938,594 (bytes) (1 MB)
  Median Absolute Deviation = 533,627.598053 (bytes) (0.533628 MB)
Time for slowest read function (secs) = 0.041213
  Line location in file = 845
Smallest read syscall size = 0 (Bytes)
Largest read syscall size = 10,485,760 (Bytes)

Close Statistics

This section presents statistical information about the close() functions in the application. Below are the statistics across all files in the analysis.

Total number of Close Function Calls = 72
Average time for close function calls (secs) = 2.84166666667e-05
  Standard Deviation for close function calls (secs) = 0.000100594586501
Maximum Time for close function (secs) = 0.000793
Line location in file = 6855

Open Statistics

This section presents statistical information about the open() functions.

Total number of Open Function Calls = 77
Average time for open function calls (secs) = 0.000111064935065
  Standard Deviation for open function calls (secs) = 0.000460360822282
Maximum Time for open function (secs) = 0.003927
  Line location in file = 35665

LSEEK Statistics

This section presents statistical information about the lseek() functions.

Table 4 below contains information on the lseek function usage in various input and output files used by the application.

Table 4 - Lseek Function calls

File Number of Lseeks
/dev/shm/Intel_MPI_zomd8c 386
/dev/shm/Intel_MPI_zomd8c 386
/etc/ld.so.cache 386
/usr/lib64/libdat.so 386
/usr/lib64/libibverbs.so.1 386
/etc/dat.conf 386
/etc/ld.so.cache 386
/usr/lib64/libdat.so 386
/usr/lib64/libibverbs.so.1 386
/etc/dat.conf 386
/etc/ld.so.cache 386
/usr/lib64/libdaplcma.so.1 386
/usr/lib64/librdmacm.so.1 386
/proc/stat 1
/proc/stat 1
/dev/null 1
/lustre/icbci001/apps/lsdyna/benchmark-file/tmp/./mes0001 1
/etc/localtime 103
/dev/shm/Intel_MPI_FlKyRG 103
/dev/shm/Intel_MPI_Nwgmhn 103
/dev/shm/Intel_MPI_Nwgmhn 103
/lustre/icbci001/apps/lsdyna/benchmark-file/tmp/./scr0001 103
/dev/shm/Intel_MPI_zJIEDn 3,307
/dev/shm/Intel_MPI_zJIEDn 3,307
/dev/shm/Intel_MPI_fDKoDn 3,307
/dev/shm/Intel_MPI_fDKoDn 3,307
. 3,307
./mpptbin0001 3,307
/lustre/icbci001/apps/lsdyna/benchmark-file/tmp/./scr0001h 103
/lustre/icbci001/apps/lsdyna/benchmark-file/tmp/./scr0001 103
/lustre/icbci001/apps/lsdyna/benchmark-file/tmp/./scr0001h 50
./disk8.0001 50
. 3,307
./binout0001 3,307
./d3full.scr.0001 103
./runrsf.0001 103

IOPS Statistics

This section presents statistical information about the IOPS performance while the application was running.

The following statistical data is for the peak and average IOPS. The peak IOPS is defined as the second time interval where the number IOPS is greatest. The average IOPS is defined as the the sum of all IOPS divided by the run time of the application.

Peak Write IOPS = 2,099    time: 66 (secs)
Average Write IOPS = 10.4669623528

Peak Read IOPS = 153    time: 41 (secs)
Average Read IOPS = 0.821484044894

Peak Total IOPS = 2,099    time: 66 (secs)
Average Total IOPS = 12.9056505683