[Darshan-commits] [Git][darshan/darshan][issue-223-mmap-hugepages] 6 commits: update runtime docs with dxt info
Philip Carns
xgitlab at cels.anl.gov
Fri Feb 3 14:33:50 CST 2017
Philip Carns pushed to branch issue-223-mmap-hugepages at darshan / darshan
Commits:
dbbfe135 by Shane Snyder at 2017-01-31T09:59:13-06:00
update runtime docs with dxt info
- - - - -
8821f33d by Shane Snyder at 2017-01-31T10:00:17-06:00
ENABLE_DXT_IO_TRACE_MEM => DXT_ENABLE_IO_TRACE
- - - - -
36e039ff by Shane Snyder at 2017-01-31T11:42:49-06:00
change DXT module names
- - - - -
6dd6e0ab by Shane Snyder at 2017-01-31T11:43:03-06:00
update darshan-util docs to describe DxT
- - - - -
cdce70c9 by Shane Snyder at 2017-01-31T12:10:08-06:00
updated ChangeLog for all 3.1.3-pre contributions
- - - - -
f8cfb07e by Shane Snyder at 2017-01-31T12:12:11-06:00
bump up configure version numbers
- - - - -
11 changed files:
- ChangeLog
- darshan-log-format.h
- darshan-runtime/configure
- darshan-runtime/configure.in
- darshan-runtime/doc/darshan-runtime.txt
- darshan-runtime/lib/darshan-dxt.c
- darshan-runtime/lib/darshan-mpiio.c
- darshan-runtime/lib/darshan-posix.c
- darshan-util/configure
- darshan-util/configure.in
- darshan-util/doc/darshan-util.txt
Changes:
=====================================
ChangeLog
=====================================
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,16 @@ Darshan Release Change Log
Darshan-3.1.3-pre1
=============
+* add new DxT instrumentation modules to provide fine-grained read/write
+ operation tracing at both the POSIX and MPI-IO layers
+ - this functionality should be enabled at runtime by exporting the
+ DXT_ENABLE_IO_TRACE environment variable
+ - trace output is stored within Darshan's traditional log file format
+ - a corresponding trace parser (darshan-dxt-parser) is offered within
+ darshan-util to allow the DxT trace modules to be parsed and displayed
+ - this software was contributed by Cong Xu and Intel's HPDD division.a
+* add logic to allow Darshan to capture command line arguments from Fortran
+ applications (contributed by Cristian Simarro)
* skip instrumentation attempts for anonymous mmap() calls; this avoids a
potentential deadlock condition when used with hugepages on Cray systems.
Reported by Glenn Lockwood and Cristian Simarro.
@@ -15,6 +25,10 @@ Darshan-3.1.3-pre1
vary the wrapper prototypes to match the corresponding HDF5 library ABI.
The initial patch for HDF5 1.10 compatibility was contributed by
Karl-Ulrich Bamberg.
+* modified Darshan's path exclusion logic to include a whitelist to prevent
+ I/O to/from Cray's Datawarp service from being filtered out (it is located
+ within the /var directory, which historically has been excluded). Reported
+ by Glenn Lockwood.
Darshan-3.1.2
=============
=====================================
darshan-log-format.h
=====================================
--- a/darshan-log-format.h
+++ b/darshan-log-format.h
@@ -140,8 +140,8 @@ struct darshan_base_record
X(DARSHAN_LUSTRE_MOD, "LUSTRE", DARSHAN_LUSTRE_VER, &lustre_logutils) \
X(DARSHAN_STDIO_MOD, "STDIO", DARSHAN_STDIO_VER, &stdio_logutils) \
/* DXT */ \
- X(DXT_POSIX_MOD, "X_POSIX", DXT_POSIX_VER, &dxt_posix_logutils) \
- X(DXT_MPIIO_MOD, "X_MPIIO", DXT_MPIIO_VER, &dxt_mpiio_logutils)
+ X(DXT_POSIX_MOD, "DXT_POSIX", DXT_POSIX_VER, &dxt_posix_logutils) \
+ X(DXT_MPIIO_MOD, "DXT_MPIIO", DXT_MPIIO_VER, &dxt_mpiio_logutils)
/* unique identifiers to distinguish between available darshan modules */
/* NOTES: - valid ids range from [0...DARSHAN_MAX_MODS-1]
=====================================
darshan-runtime/configure
=====================================
--- a/darshan-runtime/configure
+++ b/darshan-runtime/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for darshan-runtime 3.1.2.
+# Generated by GNU Autoconf 2.69 for darshan-runtime 3.1.3-pre1.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -577,8 +577,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='darshan-runtime'
PACKAGE_TARNAME='darshan-runtime'
-PACKAGE_VERSION='3.1.2'
-PACKAGE_STRING='darshan-runtime 3.1.2'
+PACKAGE_VERSION='3.1.3-pre1'
+PACKAGE_STRING='darshan-runtime 3.1.3-pre1'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -1263,7 +1263,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures darshan-runtime 3.1.2 to adapt to many kinds of systems.
+\`configure' configures darshan-runtime 3.1.3-pre1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1325,7 +1325,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of darshan-runtime 3.1.2:";;
+ short | recursive ) echo "Configuration of darshan-runtime 3.1.3-pre1:";;
esac
cat <<\_ACEOF
@@ -1439,7 +1439,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-darshan-runtime configure 3.1.2
+darshan-runtime configure 3.1.3-pre1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1791,7 +1791,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by darshan-runtime $as_me 3.1.2, which was
+It was created by darshan-runtime $as_me 3.1.3-pre1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -4400,7 +4400,7 @@ else
MPICH_LIB_OLD=0
fi
-DARSHAN_VERSION="3.1.2"
+DARSHAN_VERSION="3.1.3-pre1"
@@ -4922,7 +4922,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by darshan-runtime $as_me 3.1.2, which was
+This file was extended by darshan-runtime $as_me 3.1.3-pre1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -4984,7 +4984,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-darshan-runtime config.status 3.1.2
+darshan-runtime config.status 3.1.3-pre1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
=====================================
darshan-runtime/configure.in
=====================================
--- a/darshan-runtime/configure.in
+++ b/darshan-runtime/configure.in
@@ -5,7 +5,7 @@ dnl Process this file with autoconf to produce a configure script.
dnl You may need to use autoheader as well if changing any DEFINEs
dnl sanity checks, output header, location of scripts used here
-AC_INIT([darshan-runtime], [3.1.2])
+AC_INIT([darshan-runtime], [3.1.3-pre1])
AC_CONFIG_SRCDIR([darshan.h])
AC_CONFIG_AUX_DIR(../maint/config)
AC_CONFIG_HEADER(darshan-runtime-config.h)
=====================================
darshan-runtime/doc/darshan-runtime.txt
=====================================
--- a/darshan-runtime/doc/darshan-runtime.txt
+++ b/darshan-runtime/doc/darshan-runtime.txt
@@ -25,6 +25,13 @@ for jobs running on BG/Q systems, a module for gathering Lustre striping data fo
files on Lustre file systems, and a module for instrumenting stdio (i.e., stream I/O
functions like `fopen()`, `fread()`, etc).
+Starting in version 3.1.3, Darshan also allows for full tracing of application I/O
+workloads using the newly developed Darshan eXtended Tracing (DXT) instrumentation
+module. This module can be selectively enabled at runtime to provide high-fidelity
+traces of an application's I/O workload, as opposed to the coarse-grained I/O summary
+data that Darshan has traditionally provided. Currently, DXT only traces at the POSIX
+and MPI-IO layers.
+
This document provides generic installation instructions, but "recipes" for
several common HPC systems are provided at the end of the document as well.
@@ -546,6 +553,7 @@ behavior at runtime:
* DARSHAN_LOGFILE: specifies the path (directory + Darshan log file name) to write the output Darshan log to. This overrides the default Darshan behavior of automatically generating a log file name and adding it to a log file directory formatted using darshan-mk-log-dirs script.
* DARSHAN_MODMEM: specifies the maximum amount of memory (in MiB) Darshan instrumentation modules can collectively consume at runtime (if not specified, Darshan uses a default quota of 2 MiB).
* DARSHAN_MMAP_LOGPATH: if Darshan's mmap log file mechanism is enabled, this variable specifies what path the mmap log files should be stored in (if not specified, log files will be stored in `/tmp`).
+* DXT_ENABLE_IO_TRACE: setting this environment variable enables the DXT (Darshan eXtended Tracing) modules at runtime. Users can specify a numeric value for this variable to set the number of MiB to use for tracing per process; if no value is specified, Darshan will use a default value of 4 MiB.
== Debugging
=====================================
darshan-runtime/lib/darshan-dxt.c
=====================================
--- a/darshan-runtime/lib/darshan-dxt.c
+++ b/darshan-runtime/lib/darshan-dxt.c
@@ -410,7 +410,7 @@ static void dxt_posix_runtime_initialize()
memset(dxt_posix_runtime, 0, sizeof(*dxt_posix_runtime));
/* set the memory quota for DXT, if it has not been initialized */
- envstr = getenv("ENABLE_DXT_IO_TRACE_MEM");
+ envstr = getenv("DXT_ENABLE_IO_TRACE");
if(envstr && dxt_mpiio_runtime == NULL)
{
ret = sscanf(envstr, "%lf", &tmpfloat);
@@ -463,7 +463,7 @@ void dxt_mpiio_runtime_initialize()
memset(dxt_mpiio_runtime, 0, sizeof(*dxt_mpiio_runtime));
/* set the memory quota for DXT, if it has not been initialized */
- envstr = getenv("ENABLE_DXT_IO_TRACE_MEM");
+ envstr = getenv("DXT_ENABLE_IO_TRACE");
if(envstr && dxt_posix_runtime == NULL)
{
ret = sscanf(envstr, "%lf", &tmpfloat);
=====================================
darshan-runtime/lib/darshan-mpiio.c
=====================================
--- a/darshan-runtime/lib/darshan-mpiio.c
+++ b/darshan-runtime/lib/darshan-mpiio.c
@@ -862,7 +862,7 @@ static void mpiio_runtime_initialize()
memset(mpiio_runtime, 0, sizeof(*mpiio_runtime));
/* check if DXT (Darshan extended tracing) should be enabled */
- if (getenv("ENABLE_DXT_IO_TRACE_MEM")) {
+ if (getenv("DXT_ENABLE_IO_TRACE")) {
enable_dxt_io_trace = 1;
}
=====================================
darshan-runtime/lib/darshan-posix.c
=====================================
--- a/darshan-runtime/lib/darshan-posix.c
+++ b/darshan-runtime/lib/darshan-posix.c
@@ -1291,7 +1291,7 @@ static void posix_runtime_initialize()
memset(posix_runtime, 0, sizeof(*posix_runtime));
/* check if DXT (Darshan extended tracing) should be enabled */
- if (getenv("ENABLE_DXT_IO_TRACE_MEM")) {
+ if (getenv("DXT_ENABLE_IO_TRACE")) {
enable_dxt_io_trace = 1;
}
=====================================
darshan-util/configure
=====================================
--- a/darshan-util/configure
+++ b/darshan-util/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for darshan-util 3.1.2.
+# Generated by GNU Autoconf 2.69 for darshan-util 3.1.3-pre1.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -577,8 +577,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='darshan-util'
PACKAGE_TARNAME='darshan-util'
-PACKAGE_VERSION='3.1.2'
-PACKAGE_STRING='darshan-util 3.1.2'
+PACKAGE_VERSION='3.1.3-pre1'
+PACKAGE_STRING='darshan-util 3.1.3-pre1'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -1247,7 +1247,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures darshan-util 3.1.2 to adapt to many kinds of systems.
+\`configure' configures darshan-util 3.1.3-pre1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1309,7 +1309,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of darshan-util 3.1.2:";;
+ short | recursive ) echo "Configuration of darshan-util 3.1.3-pre1:";;
esac
cat <<\_ACEOF
@@ -1405,7 +1405,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-darshan-util configure 3.1.2
+darshan-util configure 3.1.3-pre1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1770,7 +1770,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by darshan-util $as_me 3.1.2, which was
+It was created by darshan-util $as_me 3.1.3-pre1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -4117,7 +4117,7 @@ fi
done
-DARSHAN_UTIL_VERSION="3.1.2"
+DARSHAN_UTIL_VERSION="3.1.3-pre1"
@@ -4633,7 +4633,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by darshan-util $as_me 3.1.2, which was
+This file was extended by darshan-util $as_me 3.1.3-pre1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -4695,7 +4695,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-darshan-util config.status 3.1.2
+darshan-util config.status 3.1.3-pre1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
=====================================
darshan-util/configure.in
=====================================
--- a/darshan-util/configure.in
+++ b/darshan-util/configure.in
@@ -5,7 +5,7 @@ dnl Process this file with autoconf to produce a configure script.
dnl You may need to use autoheader as well if changing any DEFINEs
dnl sanity checks, output header, location of scripts used here
-AC_INIT([darshan-util], [3.1.2])
+AC_INIT([darshan-util], [3.1.3-pre1])
AC_CONFIG_SRCDIR([darshan-logutils.h])
AC_CONFIG_AUX_DIR(../maint/config)
AC_CONFIG_HEADER(darshan-util-config.h)
=====================================
darshan-util/doc/darshan-util.txt
=====================================
--- a/darshan-util/doc/darshan-util.txt
+++ b/darshan-util/doc/darshan-util.txt
@@ -587,6 +587,106 @@ The `--file-list-detailed` is the same as --file-list except that it
produces many columns of output containing statistics broken down by file.
This option is mainly useful for more detailed automated analysis.
+=== darshan-dxt-parser
+
+The `darshan-dxt-parser` utility can be used to parse DxT traces out of Darshan
+log files, assuming the corresponding application was executed with the DxT
+modules enabled. The following example parses all DxT trace information out
+of a Darshan log file and stores it in a text file:
+
+----
+darshan-dxt-parser shane_ior_id25016_1-31-38066-13864742673678115131_1.darshan > ~/ior-trace.txt
+----
+
+=== Guide to darshan-dxt-parser output
+
+The preamble to `darshan-dxt-parser` output is identical to that of the traditional
+`darshan-parser` utility, which is described above.
+
+`darshan-dxt-parser` displays detailed trace information contained within a Darshan log
+that was generated with DxT instrumentation enabled. Trace data is captured from both
+POSIX and MPI-IO interfaces. Example output is given below:
+
+.Example output
+----
+# ***************************************************
+# DXT_POSIX module data
+# ***************************************************
+
+# DXT, file_id: 16457598720760448348, file_name: /tmp/test/testFile
+# DXT, rank: 0, hostname: shane-thinkpad
+# DXT, write_count: 4, read_count: 4
+# DXT, mnt_pt: /, fs_type: ext4
+# Module Rank Wt/Rd Segment Offset Length Start(s) End(s)
+ X_POSIX 0 write 0 0 262144 0.0029 0.0032
+ X_POSIX 0 write 1 262144 262144 0.0032 0.0035
+ X_POSIX 0 write 2 524288 262144 0.0035 0.0038
+ X_POSIX 0 write 3 786432 262144 0.0038 0.0040
+ X_POSIX 0 read 0 0 262144 0.0048 0.0048
+ X_POSIX 0 read 1 262144 262144 0.0049 0.0049
+ X_POSIX 0 read 2 524288 262144 0.0049 0.0050
+ X_POSIX 0 read 3 786432 262144 0.0050 0.0051
+
+# ***************************************************
+# DXT_MPIIO module data
+# ***************************************************
+
+# DXT, file_id: 16457598720760448348, file_name: /tmp/test/testFile
+# DXT, rank: 0, hostname: shane-thinkpad
+# DXT, write_count: 4, read_count: 4
+# DXT, mnt_pt: /, fs_type: ext4
+# Module Rank Wt/Rd Segment Length Start(s) End(s)
+ X_MPIIO 0 write 0 262144 0.0029 0.0032
+ X_MPIIO 0 write 1 262144 0.0032 0.0035
+ X_MPIIO 0 write 2 262144 0.0035 0.0038
+ X_MPIIO 0 write 3 262144 0.0038 0.0040
+ X_MPIIO 0 read 0 262144 0.0048 0.0049
+ X_MPIIO 0 read 1 262144 0.0049 0.0049
+ X_MPIIO 0 read 2 262144 0.0049 0.0050
+ X_MPIIO 0 read 3 262144 0.0050 0.0051
+----
+
+===== DxT POSIX module
+
+This module provides details on each read or write access at the POSIX layer.
+The trace output is organized first by file then by process rank. So, for each
+file accessed by the application, DxT will provide each process's I/O trace
+segments in separate blocks, ordered by increasing process rank. Within each
+file/rank block, I/O trace segments are ordered chronologically.
+
+Before providing details on each I/O operation, DxT provides a short preamble
+for each file/rank trace block with the following bits of information: the Darshan
+identifier for the file (which is equivalent to the identifers used by Darshan in its
+traditional modules), the full file path, the corresponding MPI rank the current
+block of trace data belongs to, the hostname associated with this process rank, the
+number of individual POSIX read and write operations by this process, and the mount
+point and file system type corresponding to the traced file.
+
+The output format for each indvidual I/O operation segment is:
+
+----
+# Module Rank Wt/Rd Segment Offset Length Start(s) End(s)
+----
+
+* Module: corresponding DxT module (DXT_POSIX or DXT_MPIIO)
+* Rank: process rank responsible for I/O operation
+* Wt/Rd: whether the operation was a write or read
+* Segment: The operation number for this segment (first operation is segment 0)
+* Offset: file offset the I/O operation occured at
+* Length: length of the I/O operation in bytes
+* Start: timestamp of the start of the operation (w.r.t. application start time)
+* End: timestamp of the end of the operation (w.r.t. application start time)
+
+===== DxT MPI-IO module
+
+If the MPI-IO interface is used by an application, this module provides details on
+each read or write access at the MPI-IO layer. This data is often useful in
+understanding how MPI-IO read or write operations map to underlying POSIX read
+or write operations issued to the traced file.
+
+The output format for the DxT MPI-IO module is essentially identical to the DxT
+POSIX module, except that the offset of file operations is not tracked.
+
=== Other darshan-util utilities
The darshan-util package includes a number of other utilies that can be
View it on GitLab: https://xgitlab.cels.anl.gov/darshan/darshan/compare/8857f5ff2755b3cc1ec15a0bd2c55b30a492ed60...f8cfb07e7874fe885d05122eb1127e38ca41b08a
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/darshan-commits/attachments/20170203/96088ea8/attachment-0001.html>
More information about the Darshan-commits
mailing list