Merge branch 'master' into daos-devel
Signed-off-by: Mohamad Chaarawi <mohamad.chaarawi@intel.com> Conflicts: configure.ac src/Makefile.am src/aiori-MPIIO.c src/aiori.c src/aiori.h src/ior.c src/mdtest.c src/option.cmaster
commit
e9dd5fe15e
|
@ -9,7 +9,7 @@ install:
|
|||
# Install MPI
|
||||
- sudo apt-get install -y openmpi-bin libopenmpi-dev
|
||||
# Install HDF5
|
||||
- sudo apt-get install -y hdf5-tools libhdf5-mpi-dev
|
||||
- sudo apt-get install -y hdf5-tools libhdf5-openmpi-dev
|
||||
# Install Lustre
|
||||
# TODO: As far as a i can see it needs to be compiled form source with kernel
|
||||
# module as there is no package.
|
||||
|
@ -22,10 +22,13 @@ install:
|
|||
# Install HDFS
|
||||
# TODO: Not sure with which c libray hdfs should be used and if it is in
|
||||
# the ubuntu repos
|
||||
# Probably hadoop needs to be installed an provides nativ api.
|
||||
# Probably hadoop needs to be installed an provides native API.
|
||||
# Install Amazon S3
|
||||
# TODO: The needed library needs to be installed. Follow the instructions in
|
||||
# aiori-S3.c to achive this.
|
||||
# GPFS
|
||||
# NOTE: Think GPFS need a license and is therefore not testable with travis.
|
||||
script: ./travis-build.sh && CONFIGURE_OPTS="--with-hdf5" ./travis-test.sh
|
||||
script:
|
||||
- ./travis-build.sh
|
||||
- export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/hdf5/openmpi:${LD_LIBRARY_PATH}
|
||||
- CONFIGURE_OPTS="--with-hdf5" CFLAGS="-I/usr/include/hdf5/openmpi -L/usr/lib/x86_64-linux-gnu/hdf5/openmpi" ./travis-test.sh
|
||||
|
|
42
README.md
42
README.md
|
@ -1,31 +1,31 @@
|
|||
# HPC IO Benchmark Repository [![Build Status](https://travis-ci.org/hpc/ior.svg?branch=master)](https://travis-ci.org/hpc/ior)
|
||||
|
||||
This repo now contains both IOR and mdtest.
|
||||
See also NOTES.txt
|
||||
This repository contains the IOR and mdtest parallel I/O benchmarks. The
|
||||
[official IOR/mdtest documention][] can be found in the `docs/` subdirectory or
|
||||
on Read the Docs.
|
||||
|
||||
# Building
|
||||
## Building
|
||||
|
||||
0. If "configure" is missing from the top level directory, you
|
||||
probably retrieved this code directly from the repository.
|
||||
Run "./bootstrap".
|
||||
1. If `configure` is missing from the top level directory, you probably
|
||||
retrieved this code directly from the repository. Run `./bootstrap`
|
||||
to generate the configure script. Alternatively, download an
|
||||
[official IOR release][] which includes the configure script.
|
||||
|
||||
If your versions of the autotools are not new enough to run
|
||||
this script, download and official tarball in which the
|
||||
configure script is already provided.
|
||||
1. Run `./configure`. For a full list of configuration options, use
|
||||
`./configure --help`.
|
||||
|
||||
1. Run "./configure"
|
||||
2. Run `make`
|
||||
|
||||
See "./configure --help" for configuration options.
|
||||
3. Optionally, run `make install`. The installation prefix
|
||||
can be changed via `./configure --prefix=...`.
|
||||
|
||||
2. Run "make"
|
||||
## Testing
|
||||
|
||||
3. Optionally, run "make install". The installation prefix
|
||||
can be changed as an option to the "configure" script.
|
||||
* Run `make check` to invoke the unit tests.
|
||||
* More comprehensive functionality tests are included in `testing/`. These
|
||||
scripts will launch IOR and mdtest via MPI.
|
||||
* Docker scripts are also provided in `testing/docker/` to test various
|
||||
distributions at once.
|
||||
|
||||
# Testing
|
||||
|
||||
Run "make check" to invoke the unit test framework of Automake.
|
||||
|
||||
* To run basic functionality tests that we use for continuous integration, see ./testing/
|
||||
* There are docker scripts provided to test various distributions at once.
|
||||
* See ./testing/docker/
|
||||
[official IOR release]: https://github.com/hpc/ior/releases
|
||||
[official IOR/mdtest documention]: http://ior.readthedocs.org/
|
||||
|
|
20
configure.ac
20
configure.ac
|
@ -220,6 +220,26 @@ AM_COND_IF([USE_DAOS_AIORI],[
|
|||
AC_DEFINE([USE_DAOS_AIORI], [], [Build DAOS backends AIORI])
|
||||
])
|
||||
|
||||
# Gfarm support
|
||||
AC_MSG_CHECKING([for Gfarm file system])
|
||||
AC_ARG_WITH([gfarm],
|
||||
[AS_HELP_STRING([--with-gfarm=GFARM_ROOT],
|
||||
[support IO with Gfarm backend @<:@default=no@:>@])],
|
||||
[], [with_gfarm=no])
|
||||
AC_MSG_RESULT([$with_gfarm])
|
||||
AM_CONDITIONAL([USE_GFARM_AIORI], [test x$with_gfarm != xno])
|
||||
if test x$with_gfarm != xno; then
|
||||
AC_DEFINE([USE_GFARM_AIORI], [], [Build Gfarm backend AIORI])
|
||||
case x$with_gfarm in
|
||||
xyes) ;;
|
||||
*)
|
||||
CPPFLAGS="$CPPFLAGS -I$with_gfarm/include"
|
||||
LDFLAGS="$LDFLAGS -L$with_gfarm/lib" ;;
|
||||
esac
|
||||
AC_CHECK_LIB([gfarm], [gfarm_initialize],, [AC_MSG_ERROR([libgfarm not found])])
|
||||
AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec])
|
||||
fi
|
||||
|
||||
# aws4c is needed for the S3 backend (see --with-S3, below).
|
||||
# Version 0.5.2 of aws4c is available at https://github.com/jti-lanl/aws4c.git
|
||||
# Install it something like this:
|
||||
|
|
|
@ -342,7 +342,7 @@ MPIIO-, HDF5-, AND NCMPI-ONLY:
|
|||
* collective - uses collective operations for access [0=FALSE]
|
||||
|
||||
* showHints - show hint/value pairs attached to open file [0=FALSE]
|
||||
NOTE: not available in NCMPI
|
||||
NOTE: available in NCMPI only if PnetCDF is 1.2.0 or later
|
||||
|
||||
LUSTRE-SPECIFIC:
|
||||
================
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
To build the documentation in this directory,
|
||||
|
||||
sphinx-build . _build_html
|
||||
|
||||
The output will be saved as html in `_build_html/`.
|
|
@ -1,4 +1,4 @@
|
|||
Changes in IOR
|
||||
*****************
|
||||
**************
|
||||
|
||||
.. .. include:: ../../ChangeLog
|
||||
.. include:: ../../NEWS
|
||||
|
|
|
@ -64,18 +64,30 @@ source_suffix = '.rst'
|
|||
master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'IOR'
|
||||
copyright = u'2017, IOR'
|
||||
author = u'IOR'
|
||||
project = u'ior'
|
||||
copyright = u'2018, The Regents of the University of California'
|
||||
author = u'The IOR Developer Community'
|
||||
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = u'3.1.0'
|
||||
version = u'3.2.0'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = u'0'
|
||||
release = u'3.2.0'
|
||||
|
||||
for line in open(os.path.join('..', '..', 'META'), 'r'):
|
||||
key, value = line.split(None, 1)
|
||||
if key == "Package:":
|
||||
project = value
|
||||
elif key == "Version:":
|
||||
version = value
|
||||
release = value
|
||||
# We don't use the release field
|
||||
# elif key == "Release:":
|
||||
# release = value
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
@ -185,7 +197,7 @@ man_pages = [
|
|||
# dir menu entry, description, category)
|
||||
texinfo_documents = [
|
||||
(master_doc, 'IOR', u'IOR Documentation',
|
||||
author, 'IOR', 'One line description of project.',
|
||||
author, 'IOR', 'IOR/mdtest Parallel I/O Benchmarks',
|
||||
'Miscellaneous'),
|
||||
]
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
Continues Integration
|
||||
=====================
|
||||
Continuous Integration
|
||||
======================
|
||||
|
||||
Continues Integration is used for basic sanity checking. Travis-CI provides free
|
||||
CI for open source github projects and is configured via a .travis.yml.
|
||||
Continuous Integration is used for basic sanity checking. Travis-CI provides free
|
||||
CI for open source github projects and is configured via a ``.travis.yml``.
|
||||
|
||||
For now this is set up to compile IOR on a ubuntu 14.04 machine with gcc 4.8,
|
||||
openmpi and hdf5 for the backends. This is a pretty basic check and should be
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
Release Process
|
||||
===============
|
||||
|
||||
To build a new version of IOR::
|
||||
|
||||
$ docker run -it ubuntu bash
|
||||
$ apt-get update
|
||||
$ apt-get install -y git automake autoconf make gcc mpich
|
||||
$ git clone -b rc https://github.com/hpc/ior
|
||||
$ cd ior
|
||||
$ ./travis-build.sh
|
||||
|
||||
To create a new release candidate from RC,
|
||||
|
||||
1. Disable the ``check-news`` option in ``AM_INIT_AUTOMAKE`` inside configure.ac
|
||||
2. Append "rcX" to the ``Version:`` field in META where X is the release
|
||||
candidate number
|
||||
3. Build a release package as described above
|
||||
|
||||
To create a new minor release of IOR,
|
||||
|
||||
1. Build the rc branch as described above
|
||||
2. Create a release on GitHub which creates the appropriate tag
|
||||
3. Upload the source distributions generated by travis-build.sh
|
||||
|
||||
To create a micro branch of IOR (e.g., if a release needs a hotfix),
|
||||
|
||||
1. Check out the relevant release tagged in the rc branch (e.g., ``3.2.0``)
|
||||
2. Create a branch with the major.minor name (e.g., ``3.2``) from that tag
|
||||
3. Update the ``Version:`` in META
|
||||
4. Apply hotfix(es) to that major.minor branch
|
||||
5. Create the major.minor.micro release on GitHub
|
||||
|
||||
To initiate a feature freeze,
|
||||
|
||||
1. Merge the master branch into the rc branch
|
||||
2. Update the ``Version:`` field in META `of the master branch` to be the `next`
|
||||
release version, not the one whose features have just been frozen
|
|
@ -13,7 +13,7 @@
|
|||
userDoc/install
|
||||
First Steps <userDoc/tutorial>
|
||||
userDoc/options
|
||||
userDoc/skripts
|
||||
userDoc/scripts
|
||||
userDoc/compatibility
|
||||
FAQ <userDoc/faq>
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
|||
|
||||
devDoc/doxygen
|
||||
devDoc/CI
|
||||
devDoc/release
|
||||
|
||||
.. toctree::
|
||||
:hidden:
|
||||
|
|
|
@ -1,26 +1,22 @@
|
|||
Introduction
|
||||
============
|
||||
|
||||
Welcome to the IOR documentation.
|
||||
IOR is a parallel IO benchmark that can be used to test the performance of
|
||||
parallel storage systems using various interfaces and access patterns. The
|
||||
IOR repository also includes the mdtest benchmark which specifically tests
|
||||
the peak metadata rates of storage systems under different directory
|
||||
structures. Both benchmarks use a common parallel I/O abstraction backend
|
||||
and rely on MPI for synchronization.
|
||||
|
||||
**I**\ nterleaved **o**\ r **R**\ andom is a parallel IO benchmark.
|
||||
IOR can be used for testing performance of parallel file systems using various
|
||||
interfaces and access patterns. IOR uses MPI for process synchronization.
|
||||
This documentation provides information for versions 3 and higher, for other
|
||||
versions check :ref:`compatibility`
|
||||
This documentation consists of two parts.
|
||||
|
||||
This documentation consists of tow parts.
|
||||
**User documentation** includes installation instructions (:ref:`install`), a
|
||||
beginner's tutorial (:ref:`first-steps`), and information about IOR's
|
||||
runtime :ref:`options`.
|
||||
|
||||
The first part is a user documentation were you find instructions on compilation, a
|
||||
beginners tutorial (:ref:`first-steps`) as well as information about all
|
||||
available :ref:`options`.
|
||||
**Developer documentation** consists of code documentation generated with
|
||||
Doxygen and some notes about the contiguous integration with Travis.
|
||||
|
||||
The second part is the developer documentation. It currently only consists of a
|
||||
auto generated Doxygen and some notes about the contiguous integration with travis.
|
||||
As there are quite some people how needs to modify or extend IOR to there needs
|
||||
it would be great to have documentation on what and how to alter IOR without
|
||||
breaking other stuff. Currently there is neither a documentation on the overall
|
||||
concept of the code nor on implementation details. If you are getting your
|
||||
hands dirty in code anyways or have deeper understanding of IOR, you are more
|
||||
then welcome to comment the code directly, which will result in better Doxygen
|
||||
output or add your insight to this sphinx documentation.
|
||||
Many aspects of both IOR/mdtest user and developer documentation are incomplete,
|
||||
and contributors are encouraged to comment the code directly or expand upon this
|
||||
documentation.
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
.. _compatibility:
|
||||
|
||||
Compatibility
|
||||
=============
|
||||
Version Compatibility
|
||||
=====================
|
||||
|
||||
IOR has a long history. Here are some hints about compatibility with older
|
||||
versions.
|
||||
IOR has a long history and only IOR version 3 is currently supported. However,
|
||||
there are many forks of IOR based on earlier versions, and the following
|
||||
incompatibilities are known to exist between major versions.
|
||||
|
||||
1) IOR version 1 (c. 1996-2002) and IOR version 2 (c. 2003-present) are
|
||||
incompatible. Input decks from one will not work on the other. As version
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
.. _install:
|
||||
|
||||
Install
|
||||
=======
|
||||
|
||||
|
|
|
@ -16,7 +16,9 @@ normal parameters override each other, so the last one executed.
|
|||
|
||||
Command line options
|
||||
--------------------
|
||||
These options are to be used on the command line. E.g., 'IOR -a POSIX -b 4K'.
|
||||
|
||||
These options are to be used on the command line (e.g., ``./ior -a POSIX -b 4K``).
|
||||
|
||||
-a S api -- API for I/O [POSIX|MPIIO|HDF5|HDFS|S3|S3_EMC|NCMPI|RADOS]
|
||||
-A N refNum -- user reference number to include in long summary
|
||||
-b N blockSize -- contiguous bytes to write per task (e.g.: 8, 4k, 2m, 1g)
|
||||
|
@ -69,282 +71,264 @@ These options are to be used on the command line. E.g., 'IOR -a POSIX -b 4K'.
|
|||
-Z reorderTasksRandom -- changes task ordering to random ordering for readback
|
||||
|
||||
|
||||
NOTES: * S is a string, N is an integer number.
|
||||
* For transfer and block sizes, the case-insensitive K, M, and G
|
||||
suffices are recognized. I.e., '4k' or '4K' is accepted as 4096.
|
||||
* S is a string, N is an integer number.
|
||||
|
||||
* For transfer and block sizes, the case-insensitive K, M, and G
|
||||
suffices are recognized. I.e., '4k' or '4K' is accepted as 4096.
|
||||
|
||||
|
||||
Directive Options
|
||||
------------------
|
||||
For each of the general settings, note the default is shown in brackets.
|
||||
IMPORTANT NOTE: For all true/false options below [1]=true, [0]=false
|
||||
IMPORTANT NOTE: Contrary to appearance, the script options below are NOT case sensitive
|
||||
|
||||
For all true/false options below, [1]=true, [0]=false. All options are case-insensitive.
|
||||
|
||||
GENERAL:
|
||||
GENERAL
|
||||
^^^^^^^^^^^^^^
|
||||
* refNum - user supplied reference number, included in
|
||||
long summary [0]
|
||||
|
||||
* api - must be set to one of POSIX, MPIIO, HDF5, HDFS, S3,
|
||||
S3_EMC, or NCMPI, depending on test [POSIX]
|
||||
* ``refNum`` - user supplied reference number, included in long summary
|
||||
(default: 0)
|
||||
|
||||
* testFile - name of the output file [testFile]
|
||||
NOTE: with filePerProc set, the tasks can round
|
||||
robin across multiple file names '-o S@S@S'
|
||||
* ``api`` - must be set to one of POSIX, MPIIO, HDF5, HDFS, S3, S3_EMC, NCMPI,
|
||||
IME, MMAP, or RAODS depending on test (default: ``POSIX``)
|
||||
|
||||
* hintsFileName - name of the hints file []
|
||||
* ``testFile`` - name of the output file [testFile]. With ``filePerProc`` set,
|
||||
the tasks can round robin across multiple file names via ``-o S@S@S``.
|
||||
If only a single file name is specified in this case, IOR appends the MPI
|
||||
rank to the end of each file generated (e.g., ``testFile.00000059``)
|
||||
(default: ``testFile``)
|
||||
|
||||
* repetitions - number of times to run each test [1]
|
||||
* ``hintsFileName`` - name of the hints file (default: none)
|
||||
|
||||
* multiFile - creates multiple files for single-shared-file or
|
||||
file-per-process modes; i.e. each iteration creates
|
||||
a new file [0=FALSE]
|
||||
* ``repetitions`` - number of times to run each test (default: 1)
|
||||
|
||||
* reorderTasksConstant - reorders tasks by a constant node offset for writing/reading neighbor's
|
||||
data from different nodes [0=FALSE]
|
||||
* ``multiFile`` - creates multiple files for single-shared-file or
|
||||
file-per-process modes for each iteration (default: 0)
|
||||
|
||||
* taskPerNodeOffset - for read tests. Use with -C & -Z options. [1]
|
||||
With reorderTasks, constant N. With reordertasksrandom, >= N
|
||||
* ``reorderTasksConstant`` - reorders tasks by a constant node offset for
|
||||
writing/reading neighbor's data from different nodes (default: 0)
|
||||
|
||||
* reorderTasksRandom - reorders tasks to random ordering for readback [0=FALSE]
|
||||
* ``taskPerNodeOffset`` - for read tests. Use with ``-C`` and ``-Z`` options.
|
||||
With ``reorderTasks``, constant N. With ``reordertasksrandom``, >= N
|
||||
(default: 1)
|
||||
|
||||
* reorderTasksRandomSeed - random seed for reordertasksrandom option. [0]
|
||||
>0, same seed for all iterations. <0, different seed for each iteration
|
||||
* ``reorderTasksRandom`` - reorders tasks to random ordering for read tests
|
||||
(default: 0)
|
||||
|
||||
* quitOnError - upon error encountered on checkWrite or checkRead,
|
||||
display current error and then stop execution;
|
||||
if not set, count errors and continue [0=FALSE]
|
||||
* ``reorderTasksRandomSeed`` - random seed for ``reordertasksrandom`` option. (default: 0)
|
||||
* When > 0, use the same seed for all iterations
|
||||
* When < 0, different seed for each iteration
|
||||
|
||||
* numTasks - number of tasks that should participate in the test
|
||||
[0]
|
||||
NOTE: 0 denotes all tasks
|
||||
* ``quitOnError`` - upon error encountered on ``checkWrite`` or ``checkRead``,
|
||||
display current error and then stop execution. Otherwise, count errors and
|
||||
continue (default: 0)
|
||||
|
||||
* interTestDelay - this is the time in seconds to delay before
|
||||
beginning a write or read in a series of tests [0]
|
||||
NOTE: it does not delay before a check write or
|
||||
check read
|
||||
* ``numTasks`` - number of tasks that should participate in the test. 0
|
||||
denotes all tasks. (default: 0)
|
||||
|
||||
* outlierThreshold - gives warning if any task is more than this number
|
||||
of seconds from the mean of all participating tasks.
|
||||
If so, the task is identified, its time (start,
|
||||
elapsed create, elapsed transfer, elapsed close, or
|
||||
end) is reported, as is the mean and standard
|
||||
deviation for all tasks. The default for this is 0,
|
||||
which turns it off. If set to a positive value, for
|
||||
example 3, any task not within 3 seconds of the mean
|
||||
displays its times. [0]
|
||||
* ``interTestDelay`` - time (in seconds) to delay before beginning a write or
|
||||
read phase in a series of tests This does not delay before check-write or
|
||||
check-read phases. (default: 0)
|
||||
|
||||
* intraTestBarriers - use barrier between open, write/read, and close [0=FALSE]
|
||||
* ``outlierThreshold`` - gives warning if any task is more than this number of
|
||||
seconds from the mean of all participating tasks. The warning includes the
|
||||
offending task, its timers (start, elapsed create, elapsed transfer, elapsed
|
||||
close, end), and the mean and standard deviation for all tasks. When zero,
|
||||
disable this feature. (default: 0)
|
||||
|
||||
* uniqueDir - create and use unique directory for each
|
||||
file-per-process [0=FALSE]
|
||||
* ``intraTestBarriers`` - use barrier between open, write/read, and close
|
||||
phases (default: 0)
|
||||
|
||||
* writeFile - writes file(s), first deleting any existing file [1=TRUE]
|
||||
NOTE: the defaults for writeFile and readFile are
|
||||
set such that if there is not at least one of
|
||||
the following -w, -r, -W, or -R, it is assumed
|
||||
that -w and -r are expected and are
|
||||
consequently used -- this is only true with
|
||||
the command line, and may be overridden in
|
||||
a script
|
||||
* ``uniqueDir`` - create and use unique directory for each file-per-process
|
||||
(default: 0)
|
||||
|
||||
* readFile - reads existing file(s) (from current or previous
|
||||
run) [1=TRUE]
|
||||
NOTE: see writeFile notes
|
||||
* ``writeFile`` - write file(s), first deleting any existing file.
|
||||
The defaults for ``writeFile`` and ``readFile`` are set such that if there
|
||||
is not at least one of ``-w``, ``-r``, ``-W``, or ``-R``, ``-w`` and ``-r``
|
||||
are enabled. If either ``writeFile`` or ``readFile`` are explicitly
|
||||
enabled, though, its complement is *not* also implicitly enabled.
|
||||
|
||||
* filePerProc - accesses a single file for each processor; default
|
||||
is a single file accessed by all processors [0=FALSE]
|
||||
* ``readFile`` - reads existing file(s) as specified by the ``testFile``
|
||||
option. The defaults for ``writeFile`` and ``readFile`` are set such that
|
||||
if there is not at least one of ``-w``, ``-r``, ``-W``, or ``-R``, ``-w``
|
||||
and ``-r`` are enabled. If either ``writeFile`` or ``readFile`` are
|
||||
explicitly enabled, though, its complement is *not* also implicitly enabled.
|
||||
|
||||
* checkWrite - read data back and check for errors against known
|
||||
pattern; can be used independently of writeFile [0=FALSE]
|
||||
NOTES: - data checking is not timed and does not
|
||||
affect other performance timings
|
||||
- all errors tallied and returned as program
|
||||
exit code, unless quitOnError set
|
||||
* ``filePerProc`` - have each MPI process perform I/O to a unique file
|
||||
(default: 0)
|
||||
|
||||
* checkRead - reread data and check for errors between reads; can
|
||||
be used independently of readFile [0=FALSE]
|
||||
NOTE: see checkWrite notes
|
||||
* ``checkWrite`` - read data back and check for errors against known pattern.
|
||||
Can be used independently of ``writeFile``. Data checking is not timed and
|
||||
does not affect other performance timings. All errors detected are tallied
|
||||
and returned as the program exit code unless ``quitOnError`` is set.
|
||||
(default: 0)
|
||||
|
||||
* keepFile - stops removal of test file(s) on program exit [0=FALSE]
|
||||
* ``checkRead`` - re-read data and check for errors between reads. Can be
|
||||
used independently of ``readFile``. Data checking is not timed and does not
|
||||
affect other performance timings. All errors detected are tallied and
|
||||
returned as the program exit code unless ``quitOnError`` is set.
|
||||
(default: 0)
|
||||
|
||||
* keepFileWithError - ensures that with any error found in data-checking,
|
||||
the error-filled file(s) will not be deleted [0=FALSE]
|
||||
* ``keepFile`` - do not remove test file(s) on program exit (default: 0)
|
||||
|
||||
* useExistingTestFile - do not remove test file before write access [0=FALSE]
|
||||
* ``keepFileWithError`` - do not delete any files containing errors if
|
||||
detected during read-check or write-check phases. (default: 0)
|
||||
|
||||
* segmentCount - number of segments in file [1]
|
||||
NOTES: - a segment is a contiguous chunk of data
|
||||
accessed by multiple clients each writing/
|
||||
reading their own contiguous data;
|
||||
comprised of blocks accessed by multiple
|
||||
clients
|
||||
- with HDF5 this repeats the pattern of an
|
||||
entire shared dataset
|
||||
* ``useExistingTestFile`` - do not remove test file(s) before write phase
|
||||
(default: 0)
|
||||
|
||||
* blockSize - size (in bytes) of a contiguous chunk of data
|
||||
accessed by a single client; it is comprised of one
|
||||
or more transfers [1048576]
|
||||
* ``segmentCount`` - number of segments in file, where a segment is a
|
||||
contiguous chunk of data accessed by multiple clients each writing/reading
|
||||
their own contiguous data (blocks). The exact semantics of segments
|
||||
depend on the API used; for example, HDF5 repeats the pattern of an entire
|
||||
shared dataset. (default: 1)
|
||||
|
||||
* transferSize - size (in bytes) of a single data buffer to be
|
||||
transferred in a single I/O call [262144]
|
||||
* ``blockSize`` - size (in bytes) of a contiguous chunk of data accessed by a
|
||||
single client. It is comprised of one or more transfers (default: 1048576)
|
||||
|
||||
* verbose - output information [0]
|
||||
NOTE: this can be set to levels 0-5 on the command
|
||||
line; repeating the -v flag will increase
|
||||
verbosity level
|
||||
* ``transferSize`` - size (in bytes) of a single data buffer to be transferred
|
||||
in a single I/O call (default: 262144)
|
||||
|
||||
* setTimeStampSignature - set value for time stamp signature [0]
|
||||
NOTE: used to rerun tests with the exact data
|
||||
pattern by setting data signature to contain
|
||||
positive integer value as timestamp to be
|
||||
written in data file; if set to 0, is
|
||||
disabled
|
||||
* ``verbose`` - output more information about what IOR is doing. Can be set
|
||||
to levels 0-5; repeating the -v flag will increase verbosity level.
|
||||
(default: 0)
|
||||
|
||||
* showHelp - display options and help [0=FALSE]
|
||||
* ``setTimeStampSignature`` - Value to use for the time stamp signature. Used
|
||||
to rerun tests with the exact data pattern by setting data signature to
|
||||
contain positive integer value as timestamp to be written in data file; if
|
||||
set to 0, is disabled (default: 0)
|
||||
|
||||
* storeFileOffset - use file offset as stored signature when writing
|
||||
file [0=FALSE]
|
||||
NOTE: this will affect performance measurements
|
||||
* ``showHelp`` - display options and help (default: 0)
|
||||
|
||||
* memoryPerNode - Allocate memory on each node to simulate real
|
||||
application memory usage. Accepts a percentage of
|
||||
node memory (e.g. "50%") on machines that support
|
||||
sysconf(_SC_PHYS_PAGES) or a size. Allocation will
|
||||
be split between tasks that share the node.
|
||||
* ``storeFileOffset`` - use file offset as stored signature when writing file.
|
||||
This will affect performance measurements (default: 0)
|
||||
|
||||
* memoryPerTask - Allocate secified amount of memory per task to
|
||||
simulate real application memory usage.
|
||||
* ``memoryPerNode`` - allocate memory on each node to simulate real
|
||||
application memory usage or restrict page cache size. Accepts a percentage
|
||||
of node memory (e.g. ``50%``) on systems that support
|
||||
``sysconf(_SC_PHYS_PAGES)`` or a size. Allocation will be split between
|
||||
tasks that share the node. (default: 0)
|
||||
|
||||
* maxTimeDuration - max time in minutes to run tests [0]
|
||||
NOTES: * setting this to zero (0) unsets this option
|
||||
* this option allows the current read/write
|
||||
to complete without interruption
|
||||
* ``memoryPerTask`` - allocate specified amount of memory (in bytes) per task
|
||||
to simulate real application memory usage. (default: 0)
|
||||
|
||||
* deadlineForStonewalling - seconds before stopping write or read phase [0]
|
||||
NOTES: - used for measuring the amount of data moved
|
||||
in a fixed time. After the barrier, each
|
||||
task starts its own timer, begins moving
|
||||
data, and the stops moving data at a pre-
|
||||
arranged time. Instead of measuring the
|
||||
amount of time to move a fixed amount of
|
||||
data, this option measures the amount of
|
||||
data moved in a fixed amount of time. The
|
||||
objective is to prevent tasks slow to
|
||||
complete from skewing the performance.
|
||||
- setting this to zero (0) unsets this option
|
||||
- this option is incompatible w/data checking
|
||||
* ``maxTimeDuration`` - max time (in minutes) to run all tests. Any current
|
||||
read/write phase is not interrupted; only future I/O phases are cancelled
|
||||
once this time is exceeded. Value of zero unsets disables. (default: 0)
|
||||
|
||||
* randomOffset - access is to random, not sequential, offsets within a file [0=FALSE]
|
||||
NOTES: - this option is currently incompatible with:
|
||||
-checkRead
|
||||
-storeFileOffset
|
||||
-MPIIO collective or useFileView
|
||||
-HDF5 or NCMPI
|
||||
* summaryAlways - Always print the long summary for each test.
|
||||
Useful for long runs that may be interrupted, preventing
|
||||
the final long summary for ALL tests to be printed.
|
||||
* ``deadlineForStonewalling`` - seconds before stopping write or read phase.
|
||||
Used for measuring the amount of data moved in a fixed time. After the
|
||||
barrier, each task starts its own timer, begins moving data, and the stops
|
||||
moving data at a pre-arranged time. Instead of measuring the amount of time
|
||||
to move a fixed amount of data, this option measures the amount of data
|
||||
moved in a fixed amount of time. The objective is to prevent straggling
|
||||
tasks slow from skewing the performance. This option is incompatible with
|
||||
read-check and write-check modes. Value of zero unsets this option.
|
||||
(default: 0)
|
||||
|
||||
* ``randomOffset`` - randomize access offsets within test file(s). Currently
|
||||
incompatible with ``checkRead``, ``storeFileOffset``, MPIIO ``collective``
|
||||
and ``useFileView``, and HDF5 and NCMPI APIs. (default: 0)
|
||||
|
||||
* ``summaryAlways`` - Always print the long summary for each test even if the job is interrupted. (default: 0)
|
||||
|
||||
POSIX-ONLY
|
||||
^^^^^^^^^^
|
||||
* useO_DIRECT - use O_DIRECT for POSIX, bypassing I/O buffers [0]
|
||||
|
||||
* singleXferAttempt - will not continue to retry transfer entire buffer
|
||||
until it is transferred [0=FALSE]
|
||||
NOTE: when performing a write() or read() in POSIX,
|
||||
there is no guarantee that the entire
|
||||
requested size of the buffer will be
|
||||
transferred; this flag keeps the retrying a
|
||||
single transfer until it completes or returns
|
||||
an error
|
||||
* ``useO_DIRECT`` - use direct I/ for POSIX, bypassing I/O buffers (default: 0)
|
||||
|
||||
* fsyncPerWrite - perform fsync after each POSIX write [0=FALSE]
|
||||
* fsync - perform fsync after POSIX write close [0=FALSE]
|
||||
* ``singleXferAttempt`` - do not continue to retry transfer entire buffer
|
||||
until it is transferred. When performing a write() or read() in POSIX,
|
||||
there is no guarantee that the entire requested size of the buffer will be
|
||||
transferred; this flag keeps the retrying a single transfer until it
|
||||
completes or returns an error (default: 0)
|
||||
|
||||
* ``fsyncPerWrite`` - perform fsync after each POSIX write (default: 0)
|
||||
|
||||
* ``fsync`` - perform fsync after POSIX file close (default: 0)
|
||||
|
||||
MPIIO-ONLY
|
||||
^^^^^^^^^^
|
||||
* preallocate - preallocate the entire file before writing [0=FALSE]
|
||||
|
||||
* useFileView - use an MPI datatype for setting the file view option
|
||||
to use individual file pointer [0=FALSE]
|
||||
NOTE: default IOR uses explicit file pointers
|
||||
* ``preallocate`` - preallocate the entire file before writing (default: 0)
|
||||
|
||||
* useSharedFilePointer - use a shared file pointer [0=FALSE] (not working)
|
||||
NOTE: default IOR uses explicit file pointers
|
||||
* ``useFileView`` - use an MPI datatype for setting the file view option to
|
||||
use individual file pointer. Default IOR uses explicit file pointers.
|
||||
(default: 0)
|
||||
|
||||
* useStridedDatatype - create a datatype (max=2GB) for strided access; akin
|
||||
to MULTIBLOCK_REGION_SIZE [0] (not working)
|
||||
* ``useSharedFilePointer`` - use a shared file pointer. Default IOR uses
|
||||
explicit file pointers. (default: 0)
|
||||
|
||||
* ``useStridedDatatype`` - create a datatype (max=2GB) for strided access;
|
||||
akin to ``MULTIBLOCK_REGION_SIZE`` (default: 0)
|
||||
|
||||
HDF5-ONLY
|
||||
^^^^^^^^^
|
||||
* individualDataSets - within a single file each task will access its own
|
||||
dataset [0=FALSE] (not working)
|
||||
NOTE: default IOR creates a dataset the size of
|
||||
numTasks * blockSize to be accessed by all
|
||||
tasks
|
||||
|
||||
* noFill - no pre-filling of data in HDF5 file creation [0=FALSE]
|
||||
* ``individualDataSets`` - within a single file, each task will access its own
|
||||
dataset. Default IOR creates a dataset the size of ``numTasks * blockSize``
|
||||
to be accessed by all tasks (default: 0)
|
||||
|
||||
* setAlignment - HDF5 alignment in bytes (e.g.: 8, 4k, 2m, 1g) [1]
|
||||
* ``noFill`` - do not pre-fill data in HDF5 file creation (default: 0)
|
||||
|
||||
* ``setAlignment`` - set the HDF5 alignment in bytes (e.g.: 8, 4k, 2m, 1g) (default: 1)
|
||||
|
||||
* hdf5.collectiveMetadata - enable HDF5 collective metadata (available since HDF5-1.10.0)
|
||||
|
||||
MPIIO-, HDF5-, AND NCMPI-ONLY
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
* collective - uses collective operations for access [0=FALSE]
|
||||
|
||||
* showHints - show hint/value pairs attached to open file [0=FALSE]
|
||||
NOTE: not available in NCMPI
|
||||
* ``collective`` - uses collective operations for access (default: 0)
|
||||
|
||||
* ``showHints`` - show hint/value pairs attached to open file. Not available
|
||||
for NCMPI. (default: 0)
|
||||
|
||||
LUSTRE-SPECIFIC
|
||||
^^^^^^^^^^^^^^^^^
|
||||
* lustreStripeCount - set the lustre stripe count for the test file(s) [0]
|
||||
|
||||
* lustreStripeSize - set the lustre stripe size for the test file(s) [0]
|
||||
* ``lustreStripeCount`` - set the Lustre stripe count for the test file(s) (default: 0)
|
||||
|
||||
* lustreStartOST - set the starting OST for the test file(s) [-1]
|
||||
* ``lustreStripeSize`` - set the Lustre stripe size for the test file(s) (default: 0)
|
||||
|
||||
* lustreIgnoreLocks - disable lustre range locking [0]
|
||||
* ``lustreStartOST`` - set the starting OST for the test file(s) (default: -1)
|
||||
|
||||
* ``lustreIgnoreLocks`` - disable Lustre range locking (default: 0)
|
||||
|
||||
GPFS-SPECIFIC
|
||||
^^^^^^^^^^^^^^
|
||||
* gpfsHintAccess - use gpfs_fcntl hints to pre-declare accesses
|
||||
|
||||
* gpfsReleaseToken - immediately after opening or creating file, release
|
||||
all locks. Might help mitigate lock-revocation
|
||||
traffic when many proceses write/read to same file.
|
||||
|
||||
* ``gpfsHintAccess`` - use ``gpfs_fcntl`` hints to pre-declare accesses (default: 0)
|
||||
|
||||
* ``gpfsReleaseToken`` - release all locks immediately after opening or
|
||||
creating file. Might help mitigate lock-revocation traffic when many
|
||||
proceses write/read to same file. (default: 0)
|
||||
|
||||
Verbosity levels
|
||||
---------------------
|
||||
The verbosity of output for IOR can be set with -v. Increasing the number of
|
||||
-v instances on a command line sets the verbosity higher.
|
||||
----------------
|
||||
|
||||
The verbosity of output for IOR can be set with ``-v``. Increasing the number
|
||||
of ``-v`` instances on a command line sets the verbosity higher.
|
||||
|
||||
Here is an overview of the information shown for different verbosity levels:
|
||||
|
||||
0) default; only bare essentials shown
|
||||
1) max clock deviation, participating tasks, free space, access pattern,
|
||||
commence/verify access notification w/time
|
||||
2) rank/hostname, machine name, timer used, individual repetition
|
||||
performance results, timestamp used for data signature
|
||||
3) full test details, transfer block/offset compared, individual data
|
||||
checking errors, environment variables, task writing/reading file name,
|
||||
all test operation times
|
||||
4) task id and offset for each transfer
|
||||
5) each 8-byte data signature comparison (WARNING: more data to STDOUT
|
||||
than stored in file, use carefully)
|
||||
====== ===================================
|
||||
Level Behavior
|
||||
====== ===================================
|
||||
0 default; only bare essentials shown
|
||||
1 max clock deviation, participating tasks, free space, access pattern, commence/verify access notification with time
|
||||
2 rank/hostname, machine name, timer used, individual repetition performance results, timestamp used for data signature
|
||||
3 full test details, transfer block/offset compared, individual data checking errors, environment variables, task writing/reading file name, all test operation times
|
||||
4 task id and offset for each transfer
|
||||
5 each 8-byte data signature comparison (WARNING: more data to STDOUT than stored in file, use carefully)
|
||||
====== ===================================
|
||||
|
||||
|
||||
Incompressible notes
|
||||
-------------------------
|
||||
--------------------
|
||||
Please note that incompressibility is a factor of how large a block compression
|
||||
algorithm uses. The incompressible buffer is filled only once before write times,
|
||||
so if the compression algorithm takes in blocks larger than the transfer size,
|
||||
there will be compression. Below are some baselines that I established for
|
||||
zip, gzip, and bzip.
|
||||
algorithm uses. The incompressible buffer is filled only once before write
|
||||
times, so if the compression algorithm takes in blocks larger than the transfer
|
||||
size, there will be compression. Below are some baselines for zip, gzip, and
|
||||
bzip.
|
||||
|
||||
1) zip: For zipped files, a transfer size of 1k is sufficient.
|
||||
|
||||
|
@ -354,5 +338,5 @@ zip, gzip, and bzip.
|
|||
To avoid compression a transfer size of greater than the bzip block size is required
|
||||
(default = 900KB). I suggest a transfer size of greather than 1MB to avoid bzip2 compression.
|
||||
|
||||
Be aware of the block size your compression algorithm will look at, and adjust the transfer size
|
||||
accordingly.
|
||||
Be aware of the block size your compression algorithm will look at, and adjust
|
||||
the transfer size accordingly.
|
||||
|
|
|
@ -0,0 +1,82 @@
|
|||
Scripting
|
||||
=========
|
||||
|
||||
IOR can use an input script with the command line using the ``-f`` option.
|
||||
**Any options on the command line set before the '-f' option is given will be
|
||||
considered the default settings for running the script.** For example, ::
|
||||
|
||||
mpirun ./ior -W -f script
|
||||
|
||||
will run all tests in the script with an implicit ``-W``. The script itself can
|
||||
override these settings and may be set to run many different tests of IOR under
|
||||
a single execution, and it is important to note that **any command-line options
|
||||
specified after ``-f`` will not be applied to the runs dictated by the script.**
|
||||
For example, ::
|
||||
|
||||
mpirun ./ior -f script -W
|
||||
|
||||
will *not* run any tests with the implicit ``-W`` since that argument does not
|
||||
get applied until after the ``-f`` option (and its constituent runs) are complete.
|
||||
|
||||
Input scripts are specified using the long-form option names that correspond to
|
||||
each command-line option. In addition to long-form options,
|
||||
|
||||
* ``IOR START`` and ``IOR END`` mark the beginning and end of the script
|
||||
* ``RUN`` dispatches the test using all of the options specified before it
|
||||
* All previous set parameter stay set for the next test. They are not reset
|
||||
to the default! For default the must be rest manually.
|
||||
* White space is ignored in script, as are comments starting with ``#``.
|
||||
* Not all test parameters need be set.
|
||||
|
||||
An example of a script: ::
|
||||
|
||||
IOR START
|
||||
api=[POSIX|MPIIO|HDF5|HDFS|S3|S3_EMC|NCMPI|RADOS]
|
||||
testFile=testFile
|
||||
hintsFileName=hintsFile
|
||||
repetitions=8
|
||||
multiFile=0
|
||||
interTestDelay=5
|
||||
readFile=1
|
||||
writeFile=1
|
||||
filePerProc=0
|
||||
checkWrite=0
|
||||
checkRead=0
|
||||
keepFile=1
|
||||
quitOnError=0
|
||||
segmentCount=1
|
||||
blockSize=32k
|
||||
outlierThreshold=0
|
||||
setAlignment=1
|
||||
transferSize=32
|
||||
singleXferAttempt=0
|
||||
individualDataSets=0
|
||||
verbose=0
|
||||
numTasks=32
|
||||
collective=1
|
||||
preallocate=0
|
||||
useFileView=0
|
||||
keepFileWithError=0
|
||||
setTimeStampSignature=0
|
||||
useSharedFilePointer=0
|
||||
useStridedDatatype=0
|
||||
uniqueDir=0
|
||||
fsync=0
|
||||
storeFileOffset=0
|
||||
maxTimeDuration=60
|
||||
deadlineForStonewalling=0
|
||||
useExistingTestFile=0
|
||||
useO_DIRECT=0
|
||||
showHints=0
|
||||
showHelp=0
|
||||
RUN
|
||||
# additional tests are optional
|
||||
transferSize=64
|
||||
blockSize=64k
|
||||
segmentcount=2
|
||||
RUN
|
||||
transferSize=4K
|
||||
blockSize=1M
|
||||
segmentcount=1024
|
||||
RUN
|
||||
IOR STOP
|
|
@ -1,72 +0,0 @@
|
|||
Scripting
|
||||
=========
|
||||
|
||||
IOR can use a script with the command line. Any options on the command line set
|
||||
before the script will be considered the default settings for running the script.
|
||||
(I.e.,'$ ./IOR -W -f script' will have all tests in the script run with the -W
|
||||
option as default.)
|
||||
The script itself can override these settings and may be set to run
|
||||
run many different tests of IOR under a single execution.
|
||||
The command line is: ::
|
||||
|
||||
./IOR -f script
|
||||
|
||||
In IOR/scripts, there are scripts of test cases for simulating I/O behavior of
|
||||
various application codes. Details are included in each script as necessary.
|
||||
|
||||
Syntax:
|
||||
* IOR START / IOR END: marks the beginning and end of the script
|
||||
* RUN: Delimiter for next Test
|
||||
* All previous set parameter stay set for the next test. They are not reset
|
||||
to the default! For default the musst be rest manually.
|
||||
* White space is ignored in script, as are comments starting with '#'.
|
||||
* Not all test parameters need be set.
|
||||
|
||||
An example of a script: ::
|
||||
|
||||
IOR START
|
||||
api=[POSIX|MPIIO|HDF5|HDFS|S3|S3_EMC|NCMPI|RADOS]
|
||||
testFile=testFile
|
||||
hintsFileName=hintsFile
|
||||
repetitions=8
|
||||
multiFile=0
|
||||
interTestDelay=5
|
||||
readFile=1
|
||||
writeFile=1
|
||||
filePerProc=0
|
||||
checkWrite=0
|
||||
checkRead=0
|
||||
keepFile=1
|
||||
quitOnError=0
|
||||
segmentCount=1
|
||||
blockSize=32k
|
||||
outlierThreshold=0
|
||||
setAlignment=1
|
||||
transferSize=32
|
||||
singleXferAttempt=0
|
||||
individualDataSets=0
|
||||
verbose=0
|
||||
numTasks=32
|
||||
collective=1
|
||||
preallocate=0
|
||||
useFileView=0
|
||||
keepFileWithError=0
|
||||
setTimeStampSignature=0
|
||||
useSharedFilePointer=0
|
||||
useStridedDatatype=0
|
||||
uniqueDir=0
|
||||
fsync=0
|
||||
storeFileOffset=0
|
||||
maxTimeDuration=60
|
||||
deadlineForStonewalling=0
|
||||
useExistingTestFile=0
|
||||
useO_DIRECT=0
|
||||
showHints=0
|
||||
showHelp=0
|
||||
RUN
|
||||
# additional tests are optional
|
||||
<snip>
|
||||
RUN
|
||||
<snip>
|
||||
RUN
|
||||
IOR STOP
|
|
@ -74,6 +74,11 @@ if USE_DAOS_AIORI
|
|||
extraSOURCES += aiori-DAOS.c aiori-DFS.c list.h
|
||||
endif
|
||||
|
||||
if USE_GFARM_AIORI
|
||||
extraSOURCES += aiori-Gfarm.c
|
||||
extraLDADD += -lgfarm
|
||||
endif
|
||||
|
||||
if USE_S3_AIORI
|
||||
extraSOURCES += aiori-S3.c
|
||||
if AWS4C_DIR
|
||||
|
|
|
@ -61,10 +61,10 @@ static struct daos_options o = {
|
|||
};
|
||||
|
||||
static option_help options [] = {
|
||||
{0, "daos.pool", "pool uuid", OPTION_REQUIRED_ARGUMENT, 's', &o.pool},
|
||||
{0, "daos.svcl", "pool SVCL", OPTION_REQUIRED_ARGUMENT, 's', &o.svcl},
|
||||
{0, "daos.pool", "pool uuid", OPTION_OPTIONAL_ARGUMENT, 's', &o.pool},
|
||||
{0, "daos.svcl", "pool SVCL", OPTION_OPTIONAL_ARGUMENT, 's', &o.svcl},
|
||||
{0, "daos.group", "server group", OPTION_OPTIONAL_ARGUMENT, 's', &o.group},
|
||||
{0, "daos.cont", "container uuid", OPTION_REQUIRED_ARGUMENT, 's', &o.cont},
|
||||
{0, "daos.cont", "container uuid", OPTION_OPTIONAL_ARGUMENT, 's', &o.cont},
|
||||
{0, "daos.chunk_size", "chunk size", OPTION_OPTIONAL_ARGUMENT, 'd', &o.chunk_size},
|
||||
{0, "daos.destroy", "Destroy Container", OPTION_FLAG, 'd', &o.destroy},
|
||||
{0, "daos.oclass", "object class", OPTION_OPTIONAL_ARGUMENT, 's', &o.oclass},
|
||||
|
|
|
@ -82,10 +82,10 @@ static struct dfs_options o = {
|
|||
};
|
||||
|
||||
static option_help options [] = {
|
||||
{0, "dfs.pool", "pool uuid", OPTION_REQUIRED_ARGUMENT, 's', & o.pool},
|
||||
{0, "dfs.svcl", "pool SVCL", OPTION_REQUIRED_ARGUMENT, 's', & o.svcl},
|
||||
{0, "dfs.pool", "pool uuid", OPTION_OPTIONAL_ARGUMENT, 's', & o.pool},
|
||||
{0, "dfs.svcl", "pool SVCL", OPTION_OPTIONAL_ARGUMENT, 's', & o.svcl},
|
||||
{0, "dfs.group", "server group", OPTION_OPTIONAL_ARGUMENT, 's', & o.group},
|
||||
{0, "dfs.cont", "DFS container uuid", OPTION_REQUIRED_ARGUMENT, 's', & o.cont},
|
||||
{0, "dfs.cont", "DFS container uuid", OPTION_OPTIONAL_ARGUMENT, 's', & o.cont},
|
||||
{0, "dfs.chunk_size", "chunk size", OPTION_OPTIONAL_ARGUMENT, 'd', &o.chunk_size},
|
||||
{0, "dfs.oclass", "object class", OPTION_OPTIONAL_ARGUMENT, 's', &o.oclass},
|
||||
{0, "dfs.destroy", "Destroy DFS Container", OPTION_FLAG, 'd', &o.destroy},
|
||||
|
|
|
@ -143,6 +143,10 @@ static int DUMMY_stat (const char *path, struct stat *buf, IOR_param_t * param){
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int DUMMY_check_params(IOR_param_t * test){
|
||||
return 1;
|
||||
}
|
||||
|
||||
ior_aiori_t dummy_aiori = {
|
||||
.name = "DUMMY",
|
||||
.name_legacy = NULL,
|
||||
|
@ -163,4 +167,5 @@ ior_aiori_t dummy_aiori = {
|
|||
.finalize = NULL,
|
||||
.get_options = DUMMY_options,
|
||||
.enable_mdtest = true,
|
||||
.check_params = DUMMY_check_params
|
||||
};
|
||||
|
|
|
@ -0,0 +1,316 @@
|
|||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <errno.h>
|
||||
#include <gfarm/gfarm.h>
|
||||
#undef PACKAGE_NAME
|
||||
#undef PACKAGE_STRING
|
||||
#undef PACKAGE_TARNAME
|
||||
#undef PACKAGE_VERSION
|
||||
#include "ior.h"
|
||||
#include "aiori.h"
|
||||
|
||||
struct gfarm_file {
|
||||
GFS_File gf;
|
||||
};
|
||||
|
||||
void
|
||||
Gfarm_initialize()
|
||||
{
|
||||
gfarm_initialize(NULL, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
Gfarm_finalize()
|
||||
{
|
||||
gfarm_terminate();
|
||||
}
|
||||
|
||||
void *
|
||||
Gfarm_create(char *fn, IOR_param_t *param)
|
||||
{
|
||||
GFS_File gf;
|
||||
struct gfarm_file *fp;
|
||||
gfarm_error_t e;
|
||||
|
||||
if (param->dryRun)
|
||||
return (NULL);
|
||||
|
||||
e = gfs_pio_create(fn, GFARM_FILE_RDWR, 0664, &gf);
|
||||
if (e != GFARM_ERR_NO_ERROR)
|
||||
ERR("gfs_pio_create failed");
|
||||
GFARM_MALLOC(fp);
|
||||
if (fp == NULL)
|
||||
ERR("no memory");
|
||||
fp->gf = gf;
|
||||
return (fp);
|
||||
}
|
||||
|
||||
void *
|
||||
Gfarm_open(char *fn, IOR_param_t *param)
|
||||
{
|
||||
GFS_File gf;
|
||||
struct gfarm_file *fp;
|
||||
gfarm_error_t e;
|
||||
|
||||
if (param->dryRun)
|
||||
return (NULL);
|
||||
|
||||
e = gfs_pio_open(fn, GFARM_FILE_RDWR, &gf);
|
||||
if (e != GFARM_ERR_NO_ERROR)
|
||||
ERR("gfs_pio_open failed");
|
||||
GFARM_MALLOC(fp);
|
||||
if (fp == NULL)
|
||||
ERR("no memory");
|
||||
fp->gf = gf;
|
||||
return (fp);
|
||||
}
|
||||
|
||||
IOR_offset_t
|
||||
Gfarm_xfer(int access, void *fd, IOR_size_t *buffer, IOR_offset_t len,
|
||||
IOR_param_t *param)
|
||||
{
|
||||
struct gfarm_file *fp = fd;
|
||||
IOR_offset_t rem = len;
|
||||
gfarm_off_t off;
|
||||
gfarm_error_t e;
|
||||
#define MAX_SZ (1024 * 1024 * 1024)
|
||||
int sz, n;
|
||||
char *buf = (char *)buffer;
|
||||
|
||||
if (param->dryRun)
|
||||
return (len);
|
||||
|
||||
if (len > MAX_SZ)
|
||||
sz = MAX_SZ;
|
||||
else
|
||||
sz = len;
|
||||
|
||||
e = gfs_pio_seek(fp->gf, param->offset, GFARM_SEEK_SET, &off);
|
||||
if (e != GFARM_ERR_NO_ERROR)
|
||||
ERR("gfs_pio_seek failed");
|
||||
while (rem > 0) {
|
||||
if (access == WRITE)
|
||||
e = gfs_pio_write(fp->gf, buf, sz, &n);
|
||||
else
|
||||
e = gfs_pio_read(fp->gf, buf, sz, &n);
|
||||
if (e != GFARM_ERR_NO_ERROR)
|
||||
ERR("xfer failed");
|
||||
if (n == 0)
|
||||
ERR("EOF encountered");
|
||||
rem -= n;
|
||||
buf += n;
|
||||
}
|
||||
return (len);
|
||||
}
|
||||
|
||||
void
|
||||
Gfarm_close(void *fd, IOR_param_t *param)
|
||||
{
|
||||
struct gfarm_file *fp = fd;
|
||||
|
||||
if (param->dryRun)
|
||||
return;
|
||||
|
||||
if (gfs_pio_close(fp->gf) != GFARM_ERR_NO_ERROR)
|
||||
ERR("gfs_pio_close failed");
|
||||
free(fp);
|
||||
}
|
||||
|
||||
void
|
||||
Gfarm_delete(char *fn, IOR_param_t *param)
|
||||
{
|
||||
gfarm_error_t e;
|
||||
|
||||
if (param->dryRun)
|
||||
return;
|
||||
|
||||
e = gfs_unlink(fn);
|
||||
if (e != GFARM_ERR_NO_ERROR)
|
||||
errno = gfarm_error_to_errno(e);
|
||||
}
|
||||
|
||||
char *
|
||||
Gfarm_version()
|
||||
{
|
||||
return ((char *)gfarm_version());
|
||||
}
|
||||
|
||||
void
|
||||
Gfarm_fsync(void *fd, IOR_param_t *param)
|
||||
{
|
||||
struct gfarm_file *fp = fd;
|
||||
|
||||
if (param->dryRun)
|
||||
return;
|
||||
|
||||
if (gfs_pio_sync(fp->gf) != GFARM_ERR_NO_ERROR)
|
||||
ERR("gfs_pio_sync failed");
|
||||
}
|
||||
|
||||
IOR_offset_t
|
||||
Gfarm_get_file_size(IOR_param_t *param, MPI_Comm comm, char *fn)
|
||||
{
|
||||
struct gfs_stat st;
|
||||
IOR_offset_t size, sum, min, max;
|
||||
|
||||
if (param->dryRun)
|
||||
return (0);
|
||||
|
||||
if (gfs_stat(fn, &st) != GFARM_ERR_NO_ERROR)
|
||||
ERR("gfs_stat failed");
|
||||
size = st.st_size;
|
||||
gfs_stat_free(&st);
|
||||
|
||||
if (param->filePerProc == TRUE) {
|
||||
MPI_CHECK(MPI_Allreduce(&size, &sum, 1, MPI_LONG_LONG_INT,
|
||||
MPI_SUM, comm), "cannot total data moved");
|
||||
size = sum;
|
||||
} else {
|
||||
MPI_CHECK(MPI_Allreduce(&size, &min, 1, MPI_LONG_LONG_INT,
|
||||
MPI_MIN, comm), "cannot total data moved");
|
||||
MPI_CHECK(MPI_Allreduce(&size, &max, 1, MPI_LONG_LONG_INT,
|
||||
MPI_MAX, comm), "cannot total data moved");
|
||||
if (min != max) {
|
||||
if (rank == 0)
|
||||
WARN("inconsistent file size by different "
|
||||
"tasks");
|
||||
/* incorrect, but now consistent across tasks */
|
||||
size = min;
|
||||
}
|
||||
}
|
||||
return (size);
|
||||
}
|
||||
|
||||
int
|
||||
Gfarm_statfs(const char *fn, ior_aiori_statfs_t *st, IOR_param_t *param)
|
||||
{
|
||||
gfarm_off_t used, avail, files;
|
||||
gfarm_error_t e;
|
||||
int bsize = 4096;
|
||||
|
||||
if (param->dryRun)
|
||||
return (0);
|
||||
|
||||
e = gfs_statfs_by_path(fn, &used, &avail, &files);
|
||||
if (e != GFARM_ERR_NO_ERROR) {
|
||||
errno = gfarm_error_to_errno(e);
|
||||
return (-1);
|
||||
}
|
||||
st->f_bsize = bsize;
|
||||
st->f_blocks = (used + avail) / bsize;
|
||||
st->f_bfree = avail / bsize;
|
||||
st->f_files = 2 * files; /* XXX */
|
||||
st->f_ffree = files; /* XXX */
|
||||
return (0);
|
||||
}
|
||||
|
||||
int
|
||||
Gfarm_mkdir(const char *fn, mode_t mode, IOR_param_t *param)
|
||||
{
|
||||
gfarm_error_t e;
|
||||
|
||||
if (param->dryRun)
|
||||
return (0);
|
||||
|
||||
e = gfs_mkdir(fn, mode);
|
||||
if (e == GFARM_ERR_NO_ERROR)
|
||||
return (0);
|
||||
errno = gfarm_error_to_errno(e);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
int
|
||||
Gfarm_rmdir(const char *fn, IOR_param_t *param)
|
||||
{
|
||||
gfarm_error_t e;
|
||||
|
||||
if (param->dryRun)
|
||||
return (0);
|
||||
|
||||
e = gfs_rmdir(fn);
|
||||
if (e == GFARM_ERR_NO_ERROR)
|
||||
return (0);
|
||||
errno = gfarm_error_to_errno(e);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
int
|
||||
Gfarm_access(const char *fn, int mode, IOR_param_t *param)
|
||||
{
|
||||
struct gfs_stat st;
|
||||
gfarm_error_t e;
|
||||
|
||||
if (param->dryRun)
|
||||
return (0);
|
||||
|
||||
e = gfs_stat(fn, &st);
|
||||
if (e != GFARM_ERR_NO_ERROR) {
|
||||
errno = gfarm_error_to_errno(e);
|
||||
return (-1);
|
||||
}
|
||||
gfs_stat_free(&st);
|
||||
return (0);
|
||||
}
|
||||
|
||||
/* XXX FIXME */
|
||||
#define GFS_DEV ((dev_t)-1)
|
||||
#define GFS_BLKSIZE 8192
|
||||
#define STAT_BLKSIZ 512 /* for st_blocks */
|
||||
|
||||
int
|
||||
Gfarm_stat(const char *fn, struct stat *buf, IOR_param_t *param)
|
||||
{
|
||||
struct gfs_stat st;
|
||||
gfarm_error_t e;
|
||||
|
||||
if (param->dryRun)
|
||||
return (0);
|
||||
|
||||
e = gfs_stat(fn, &st);
|
||||
if (e != GFARM_ERR_NO_ERROR) {
|
||||
errno = gfarm_error_to_errno(e);
|
||||
return (-1);
|
||||
}
|
||||
buf->st_dev = GFS_DEV;
|
||||
buf->st_ino = st.st_ino;
|
||||
buf->st_mode = st.st_mode;
|
||||
buf->st_nlink = st.st_nlink;
|
||||
buf->st_uid = getuid(); /* XXX */
|
||||
buf->st_gid = getgid(); /* XXX */
|
||||
buf->st_size = st.st_size;
|
||||
buf->st_blksize = GFS_BLKSIZE;
|
||||
buf->st_blocks = (st.st_size + STAT_BLKSIZ - 1) / STAT_BLKSIZ;
|
||||
buf->st_atime = st.st_atimespec.tv_sec;
|
||||
buf->st_mtime = st.st_mtimespec.tv_sec;
|
||||
buf->st_ctime = st.st_ctimespec.tv_sec;
|
||||
#if defined(HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC)
|
||||
buf->st_atim.tv_nsec = st.st_atimespec.tv_nsec;
|
||||
buf->st_mtim.tv_nsec = st.st_mtimespec.tv_nsec;
|
||||
buf->st_ctim.tv_nsec = st.st_ctimespec.tv_nsec;
|
||||
#endif
|
||||
gfs_stat_free(&st);
|
||||
return (0);
|
||||
}
|
||||
|
||||
ior_aiori_t gfarm_aiori = {
|
||||
.name = "Gfarm",
|
||||
.name_legacy = NULL,
|
||||
.create = Gfarm_create,
|
||||
.open = Gfarm_open,
|
||||
.xfer = Gfarm_xfer,
|
||||
.close = Gfarm_close,
|
||||
.delete = Gfarm_delete,
|
||||
.get_version = Gfarm_version,
|
||||
.fsync = Gfarm_fsync,
|
||||
.get_file_size = Gfarm_get_file_size,
|
||||
.statfs = Gfarm_statfs,
|
||||
.mkdir = Gfarm_mkdir,
|
||||
.rmdir = Gfarm_rmdir,
|
||||
.access = Gfarm_access,
|
||||
.stat = Gfarm_stat,
|
||||
.initialize = Gfarm_initialize,
|
||||
.finalize = Gfarm_finalize,
|
||||
.get_options = NULL,
|
||||
.enable_mdtest = true,
|
||||
};
|
|
@ -182,8 +182,8 @@ static void *MPIIO_Open(char *testFileName, IOR_param_t * param)
|
|||
fprintf(stdout, "}\n");
|
||||
}
|
||||
if(! param->dryRun){
|
||||
MPI_CHECK(MPI_File_open(comm, testFileName, fd_mode, mpiHints, fd),
|
||||
"cannot open file");
|
||||
MPI_CHECKF(MPI_File_open(comm, testFileName, fd_mode, mpiHints, fd),
|
||||
"cannot open file: %s", testFileName);
|
||||
}
|
||||
|
||||
/* show hints actually attached to file handle */
|
||||
|
@ -432,8 +432,8 @@ void MPIIO_Delete(char *testFileName, IOR_param_t * param)
|
|||
{
|
||||
if(param->dryRun)
|
||||
return;
|
||||
MPI_CHECK(MPI_File_delete(testFileName, (MPI_Info) MPI_INFO_NULL),
|
||||
"cannot delete file");
|
||||
MPI_CHECKF(MPI_File_delete(testFileName, (MPI_Info) MPI_INFO_NULL),
|
||||
"cannot delete file: %s", testFileName);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -89,7 +89,7 @@ static void *NCMPI_Create(char *testFileName, IOR_param_t * param)
|
|||
int fd_mode;
|
||||
MPI_Info mpiHints = MPI_INFO_NULL;
|
||||
|
||||
/* Wei-keng Liao: read and set MPI file hints from hintsFile */
|
||||
/* read and set MPI file hints from hintsFile */
|
||||
SetHints(&mpiHints, param->hintsFileName);
|
||||
if (rank == 0 && param->showHints) {
|
||||
fprintf(stdout, "\nhints passed to MPI_File_open() {\n");
|
||||
|
@ -105,22 +105,23 @@ static void *NCMPI_Create(char *testFileName, IOR_param_t * param)
|
|||
NCMPI_CHECK(ncmpi_create(testComm, testFileName, fd_mode,
|
||||
mpiHints, fd), "cannot create file");
|
||||
|
||||
/* Wei-keng Liao: print the MPI file hints currently used */
|
||||
/* WEL - add when ncmpi_get_file_info() is in current parallel-netcdf release
|
||||
if (rank == 0 && param->showHints) {
|
||||
MPI_CHECK(ncmpi_get_file_info(*fd, &mpiHints),
|
||||
"cannot get file info");
|
||||
fprintf(stdout, "\nhints returned from opened file {\n");
|
||||
ShowHints(&mpiHints);
|
||||
fprintf(stdout, "}\n");
|
||||
}
|
||||
*/
|
||||
/* free up the mpiHints object */
|
||||
if (mpiHints != MPI_INFO_NULL)
|
||||
MPI_CHECK(MPI_Info_free(&mpiHints), "cannot free file info");
|
||||
|
||||
/* Wei-keng Liao: free up the mpiHints object */
|
||||
/* WEL - this needs future fix from next release of PnetCDF
|
||||
if (mpiHints != MPI_INFO_NULL)
|
||||
MPI_CHECK(MPI_Info_free(&mpiHints), "cannot free file info");
|
||||
*/
|
||||
#if defined(PNETCDF_VERSION_MAJOR) && (PNETCDF_VERSION_MAJOR > 1 || PNETCDF_VERSION_MINOR >= 2)
|
||||
/* ncmpi_get_file_info is first available in 1.2.0 */
|
||||
if (rank == 0 && param->showHints) {
|
||||
MPI_Info info_used;
|
||||
MPI_CHECK(ncmpi_get_file_info(*fd, &info_used),
|
||||
"cannot inquire file info");
|
||||
/* print the MPI file hints currently used */
|
||||
fprintf(stdout, "\nhints returned from opened file {\n");
|
||||
ShowHints(&info_used);
|
||||
fprintf(stdout, "}\n");
|
||||
MPI_CHECK(MPI_Info_free(&info_used), "cannot free file info");
|
||||
}
|
||||
#endif
|
||||
|
||||
return (fd);
|
||||
}
|
||||
|
@ -134,7 +135,7 @@ static void *NCMPI_Open(char *testFileName, IOR_param_t * param)
|
|||
int fd_mode;
|
||||
MPI_Info mpiHints = MPI_INFO_NULL;
|
||||
|
||||
/* Wei-keng Liao: read and set MPI file hints from hintsFile */
|
||||
/* read and set MPI file hints from hintsFile */
|
||||
SetHints(&mpiHints, param->hintsFileName);
|
||||
if (rank == 0 && param->showHints) {
|
||||
fprintf(stdout, "\nhints passed to MPI_File_open() {\n");
|
||||
|
@ -150,22 +151,23 @@ static void *NCMPI_Open(char *testFileName, IOR_param_t * param)
|
|||
NCMPI_CHECK(ncmpi_open(testComm, testFileName, fd_mode,
|
||||
mpiHints, fd), "cannot open file");
|
||||
|
||||
/* Wei-keng Liao: print the MPI file hints currently used */
|
||||
/* WEL - add when ncmpi_get_file_info() is in current parallel-netcdf release
|
||||
if (rank == 0 && param->showHints) {
|
||||
MPI_CHECK(ncmpi_get_file_info(*fd, &mpiHints),
|
||||
"cannot get file info");
|
||||
fprintf(stdout, "\nhints returned from opened file {\n");
|
||||
ShowHints(&mpiHints);
|
||||
fprintf(stdout, "}\n");
|
||||
}
|
||||
*/
|
||||
/* free up the mpiHints object */
|
||||
if (mpiHints != MPI_INFO_NULL)
|
||||
MPI_CHECK(MPI_Info_free(&mpiHints), "cannot free file info");
|
||||
|
||||
/* Wei-keng Liao: free up the mpiHints object */
|
||||
/* WEL - this needs future fix from next release of PnetCDF
|
||||
if (mpiHints != MPI_INFO_NULL)
|
||||
MPI_CHECK(MPI_Info_free(&mpiHints), "cannot free file info");
|
||||
*/
|
||||
#if defined(PNETCDF_VERSION_MAJOR) && (PNETCDF_VERSION_MAJOR > 1 || PNETCDF_VERSION_MINOR >= 2)
|
||||
/* ncmpi_get_file_info is first available in 1.2.0 */
|
||||
if (rank == 0 && param->showHints) {
|
||||
MPI_Info info_used;
|
||||
MPI_CHECK(ncmpi_get_file_info(*fd, &info_used),
|
||||
"cannot inquire file info");
|
||||
/* print the MPI file hints currently used */
|
||||
fprintf(stdout, "\nhints returned from opened file {\n");
|
||||
ShowHints(&info_used);
|
||||
fprintf(stdout, "}\n");
|
||||
MPI_CHECK(MPI_Info_free(&info_used), "cannot free file info");
|
||||
}
|
||||
#endif
|
||||
|
||||
return (fd);
|
||||
}
|
||||
|
@ -183,17 +185,6 @@ static IOR_offset_t NCMPI_Xfer(int access, void *fd, IOR_size_t * buffer,
|
|||
IOR_offset_t segmentPosition;
|
||||
int segmentNum, transferNum;
|
||||
|
||||
/* Wei-keng Liao: In ior.c line 1979 says "block size must be a multiple
|
||||
of transfer size." Hence, length should always == param->transferSize
|
||||
below. I leave it here to double check.
|
||||
*/
|
||||
if (length != param->transferSize) {
|
||||
char errMsg[256];
|
||||
sprintf(errMsg, "length(%lld) != param->transferSize(%lld)\n",
|
||||
length, param->transferSize);
|
||||
NCMPI_CHECK(-1, errMsg);
|
||||
}
|
||||
|
||||
/* determine by offset if need to start data set */
|
||||
if (param->filePerProc == TRUE) {
|
||||
segmentPosition = (IOR_offset_t) 0;
|
||||
|
@ -224,7 +215,7 @@ static IOR_offset_t NCMPI_Xfer(int access, void *fd, IOR_size_t * buffer,
|
|||
int numTransfers =
|
||||
param->blockSize / param->transferSize;
|
||||
|
||||
/* Wei-keng Liao: change 1D array to 3D array of dimensions:
|
||||
/* reshape 1D array to 3D array:
|
||||
[segmentCount*numTasksWorld][numTransfers][transferSize]
|
||||
Requirement: none of these dimensions should be > 4G,
|
||||
*/
|
||||
|
@ -264,13 +255,13 @@ static IOR_offset_t NCMPI_Xfer(int access, void *fd, IOR_size_t * buffer,
|
|||
|
||||
var_id = param->var_id;
|
||||
|
||||
/* Wei-keng Liao: calculate the segment number */
|
||||
/* calculate the segment number */
|
||||
segmentNum = param->offset / (param->numTasks * param->blockSize);
|
||||
|
||||
/* Wei-keng Liao: calculate the transfer number in each block */
|
||||
/* calculate the transfer number in each block */
|
||||
transferNum = param->offset % param->blockSize / param->transferSize;
|
||||
|
||||
/* Wei-keng Liao: read/write the 3rd dim of the dataset, each is of
|
||||
/* read/write the 3rd dim of the dataset, each is of
|
||||
amount param->transferSize */
|
||||
bufSize[0] = 1;
|
||||
bufSize[1] = 1;
|
||||
|
@ -381,7 +372,7 @@ static int GetFileMode(IOR_param_t * param)
|
|||
fprintf(stdout, "O_DIRECT not implemented in NCMPI\n");
|
||||
}
|
||||
|
||||
/* Wei-keng Liao: to enable > 4GB file size */
|
||||
/* to enable > 4GB file size */
|
||||
fd_mode |= NC_64BIT_OFFSET;
|
||||
|
||||
return (fd_mode);
|
||||
|
|
|
@ -71,6 +71,7 @@
|
|||
static IOR_offset_t POSIX_Xfer(int, void *, IOR_size_t *,
|
||||
IOR_offset_t, IOR_param_t *);
|
||||
static void POSIX_Fsync(void *, IOR_param_t *);
|
||||
static void POSIX_Sync(IOR_param_t * );
|
||||
|
||||
/************************** O P T I O N S *****************************/
|
||||
typedef struct{
|
||||
|
@ -122,6 +123,7 @@ ior_aiori_t posix_aiori = {
|
|||
.stat = aiori_posix_stat,
|
||||
.get_options = POSIX_options,
|
||||
.enable_mdtest = true,
|
||||
.sync = POSIX_Sync
|
||||
};
|
||||
|
||||
/***************************** F U N C T I O N S ******************************/
|
||||
|
@ -146,7 +148,7 @@ void gpfs_free_all_locks(int fd)
|
|||
|
||||
rc = gpfs_fcntl(fd, &release_all);
|
||||
if (verbose >= VERBOSE_0 && rc != 0) {
|
||||
EWARN("gpfs_fcntl release all locks hint failed.");
|
||||
EWARNF("gpfs_fcntl(%d, ...) release all locks hint failed.", fd);
|
||||
}
|
||||
}
|
||||
void gpfs_access_start(int fd, IOR_offset_t length, IOR_param_t *param, int access)
|
||||
|
@ -169,7 +171,7 @@ void gpfs_access_start(int fd, IOR_offset_t length, IOR_param_t *param, int acce
|
|||
|
||||
rc = gpfs_fcntl(fd, &take_locks);
|
||||
if (verbose >= VERBOSE_2 && rc != 0) {
|
||||
EWARN("gpfs_fcntl access range hint failed.");
|
||||
EWARNF("gpfs_fcntl(fd, ...) access range hint failed.", fd);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -193,7 +195,7 @@ void gpfs_access_end(int fd, IOR_offset_t length, IOR_param_t *param, int access
|
|||
|
||||
rc = gpfs_fcntl(fd, &free_locks);
|
||||
if (verbose >= VERBOSE_2 && rc != 0) {
|
||||
EWARN("gpfs_fcntl free range hint failed.");
|
||||
EWARNF("gpfs_fcntl(fd, ...) free range hint failed.", fd);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -260,14 +262,14 @@ bool beegfs_createFilePath(char* filepath, mode_t mode, int numTargets, int chun
|
|||
char* dir = dirname(dirTmp);
|
||||
DIR* parentDirS = opendir(dir);
|
||||
if (!parentDirS) {
|
||||
ERR("Failed to get directory");
|
||||
ERRF("Failed to get directory: %s", dir);
|
||||
}
|
||||
else
|
||||
{
|
||||
int parentDirFd = dirfd(parentDirS);
|
||||
if (parentDirFd < 0)
|
||||
{
|
||||
ERR("Failed to get directory descriptor");
|
||||
ERRF("Failed to get directory descriptor: %s", dir);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -319,6 +321,7 @@ bool beegfs_createFilePath(char* filepath, mode_t mode, int numTargets, int chun
|
|||
void *POSIX_Create(char *testFileName, IOR_param_t * param)
|
||||
{
|
||||
int fd_oflag = O_BINARY;
|
||||
int mode = 0664;
|
||||
int *fd;
|
||||
|
||||
fd = (int *)malloc(sizeof(int));
|
||||
|
@ -346,9 +349,10 @@ void *POSIX_Create(char *testFileName, IOR_param_t * param)
|
|||
if (!param->filePerProc && rank != 0) {
|
||||
MPI_CHECK(MPI_Barrier(testComm), "barrier error");
|
||||
fd_oflag |= O_RDWR;
|
||||
*fd = open64(testFileName, fd_oflag, 0664);
|
||||
*fd = open64(testFileName, fd_oflag, mode);
|
||||
if (*fd < 0)
|
||||
ERR("open64() failed");
|
||||
ERRF("open64(\"%s\", %d, %#o) failed",
|
||||
testFileName, fd_oflag, mode);
|
||||
} else {
|
||||
struct lov_user_md opts = { 0 };
|
||||
|
||||
|
@ -363,7 +367,7 @@ void *POSIX_Create(char *testFileName, IOR_param_t * param)
|
|||
|
||||
fd_oflag |=
|
||||
O_CREAT | O_EXCL | O_RDWR | O_LOV_DELAY_CREATE;
|
||||
*fd = open64(testFileName, fd_oflag, 0664);
|
||||
*fd = open64(testFileName, fd_oflag, mode);
|
||||
if (*fd < 0) {
|
||||
fprintf(stdout, "\nUnable to open '%s': %s\n",
|
||||
testFileName, strerror(errno));
|
||||
|
@ -392,7 +396,7 @@ void *POSIX_Create(char *testFileName, IOR_param_t * param)
|
|||
if (beegfs_isOptionSet(param->beegfs_chunkSize)
|
||||
|| beegfs_isOptionSet(param->beegfs_numTargets)) {
|
||||
bool result = beegfs_createFilePath(testFileName,
|
||||
0664,
|
||||
mode,
|
||||
param->beegfs_numTargets,
|
||||
param->beegfs_chunkSize);
|
||||
if (result) {
|
||||
|
@ -403,9 +407,10 @@ void *POSIX_Create(char *testFileName, IOR_param_t * param)
|
|||
}
|
||||
#endif /* HAVE_BEEGFS_BEEGFS_H */
|
||||
|
||||
*fd = open64(testFileName, fd_oflag, 0664);
|
||||
*fd = open64(testFileName, fd_oflag, mode);
|
||||
if (*fd < 0)
|
||||
ERR("open64() failed");
|
||||
ERRF("open64(\"%s\", %d, %#o) failed",
|
||||
testFileName, fd_oflag, mode);
|
||||
|
||||
#ifdef HAVE_LUSTRE_LUSTRE_USER_H
|
||||
}
|
||||
|
@ -413,7 +418,7 @@ void *POSIX_Create(char *testFileName, IOR_param_t * param)
|
|||
if (param->lustre_ignore_locks) {
|
||||
int lustre_ioctl_flags = LL_FILE_IGNORE_LOCK;
|
||||
if (ioctl(*fd, LL_IOC_SETFLAGS, &lustre_ioctl_flags) == -1)
|
||||
ERR("ioctl(LL_IOC_SETFLAGS) failed");
|
||||
ERRF("ioctl(%d, LL_IOC_SETFLAGS, ...) failed", *fd);
|
||||
}
|
||||
#endif /* HAVE_LUSTRE_LUSTRE_USER_H */
|
||||
|
||||
|
@ -469,7 +474,7 @@ void *POSIX_Open(char *testFileName, IOR_param_t * param)
|
|||
|
||||
*fd = open64(testFileName, fd_oflag);
|
||||
if (*fd < 0)
|
||||
ERR("open64 failed");
|
||||
ERRF("open64(\"%s\", %d) failed", testFileName, fd_oflag);
|
||||
|
||||
#ifdef HAVE_LUSTRE_LUSTRE_USER_H
|
||||
if (param->lustre_ignore_locks) {
|
||||
|
@ -479,7 +484,7 @@ void *POSIX_Open(char *testFileName, IOR_param_t * param)
|
|||
"** Disabling lustre range locking **\n");
|
||||
}
|
||||
if (ioctl(*fd, LL_IOC_SETFLAGS, &lustre_ioctl_flags) == -1)
|
||||
ERR("ioctl(LL_IOC_SETFLAGS) failed");
|
||||
ERRF("ioctl(%d, LL_IOC_SETFLAGS, ...) failed", *fd);
|
||||
}
|
||||
#endif /* HAVE_LUSTRE_LUSTRE_USER_H */
|
||||
|
||||
|
@ -517,7 +522,7 @@ static IOR_offset_t POSIX_Xfer(int access, void *file, IOR_size_t * buffer,
|
|||
|
||||
/* seek to offset */
|
||||
if (lseek64(fd, param->offset, SEEK_SET) == -1)
|
||||
ERR("lseek64() failed");
|
||||
ERRF("lseek64(%d, %lld, SEEK_SET) failed", fd, param->offset);
|
||||
|
||||
while (remaining > 0) {
|
||||
/* write/read file */
|
||||
|
@ -530,7 +535,8 @@ static IOR_offset_t POSIX_Xfer(int access, void *file, IOR_size_t * buffer,
|
|||
}
|
||||
rc = write(fd, ptr, remaining);
|
||||
if (rc == -1)
|
||||
ERR("write() failed");
|
||||
ERRF("write(%d, %p, %lld) failed",
|
||||
fd, (void*)ptr, remaining);
|
||||
if (param->fsyncPerWrite == TRUE)
|
||||
POSIX_Fsync(&fd, param);
|
||||
} else { /* READ or CHECK */
|
||||
|
@ -542,9 +548,11 @@ static IOR_offset_t POSIX_Xfer(int access, void *file, IOR_size_t * buffer,
|
|||
}
|
||||
rc = read(fd, ptr, remaining);
|
||||
if (rc == 0)
|
||||
ERR("read() returned EOF prematurely");
|
||||
ERRF("read(%d, %p, %lld) returned EOF prematurely",
|
||||
fd, (void*)ptr, remaining);
|
||||
if (rc == -1)
|
||||
ERR("read() failed");
|
||||
ERRF("read(%d, %p, %lld) failed",
|
||||
fd, (void*)ptr, remaining);
|
||||
}
|
||||
if (rc < remaining) {
|
||||
fprintf(stdout,
|
||||
|
@ -579,9 +587,19 @@ static IOR_offset_t POSIX_Xfer(int access, void *file, IOR_size_t * buffer,
|
|||
static void POSIX_Fsync(void *fd, IOR_param_t * param)
|
||||
{
|
||||
if (fsync(*(int *)fd) != 0)
|
||||
EWARN("fsync() failed");
|
||||
EWARNF("fsync(%d) failed", *(int *)fd);
|
||||
}
|
||||
|
||||
|
||||
static void POSIX_Sync(IOR_param_t * param)
|
||||
{
|
||||
int ret = system("sync");
|
||||
if (ret != 0){
|
||||
FAIL("Error executing the sync command, ensure it exists.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Close a file through the POSIX interface.
|
||||
*/
|
||||
|
@ -590,7 +608,7 @@ void POSIX_Close(void *fd, IOR_param_t * param)
|
|||
if(param->dryRun)
|
||||
return;
|
||||
if (close(*(int *)fd) != 0)
|
||||
ERR("close() failed");
|
||||
ERRF("close(%d) failed", *(int *)fd);
|
||||
free(fd);
|
||||
}
|
||||
|
||||
|
@ -602,10 +620,8 @@ void POSIX_Delete(char *testFileName, IOR_param_t * param)
|
|||
if(param->dryRun)
|
||||
return;
|
||||
if (unlink(testFileName) != 0){
|
||||
char errmsg[256];
|
||||
sprintf(errmsg, "[RANK %03d]: unlink() of file \"%s\" failed\n",
|
||||
rank, testFileName);
|
||||
EWARN(errmsg);
|
||||
EWARNF("[RANK %03d]: unlink() of file \"%s\" failed\n",
|
||||
rank, testFileName);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -621,7 +637,7 @@ IOR_offset_t POSIX_GetFileSize(IOR_param_t * test, MPI_Comm testComm,
|
|||
IOR_offset_t aggFileSizeFromStat, tmpMin, tmpMax, tmpSum;
|
||||
|
||||
if (stat(testFileName, &stat_buf) != 0) {
|
||||
ERR("stat() failed");
|
||||
ERRF("stat(\"%s\", ...) failed", testFileName);
|
||||
}
|
||||
aggFileSizeFromStat = stat_buf.st_size;
|
||||
|
||||
|
|
|
@ -159,6 +159,8 @@ static void S3_Fsync(void*, IOR_param_t*);
|
|||
static IOR_offset_t S3_GetFileSize(IOR_param_t*, MPI_Comm, char*);
|
||||
static void S3_init();
|
||||
static void S3_finalize();
|
||||
static int S3_check_params(IOR_param_t *);
|
||||
|
||||
|
||||
/************************** D E C L A R A T I O N S ***************************/
|
||||
|
||||
|
@ -177,7 +179,8 @@ ior_aiori_t s3_aiori = {
|
|||
.fsync = S3_Fsync,
|
||||
.get_file_size = S3_GetFileSize,
|
||||
.initialize = S3_init,
|
||||
.finalize = S3_finalize
|
||||
.finalize = S3_finalize,
|
||||
.check_params = S3_check_params
|
||||
};
|
||||
|
||||
// "S3", plus EMC-extensions enabled
|
||||
|
@ -228,6 +231,22 @@ static void S3_finalize(){
|
|||
aws_cleanup();
|
||||
}
|
||||
|
||||
static int S3_check_params(IOR_param_t * test){
|
||||
/* N:1 and N:N */
|
||||
IOR_offset_t NtoN = test->filePerProc;
|
||||
IOR_offset_t Nto1 = ! NtoN;
|
||||
IOR_offset_t s = test->segmentCount;
|
||||
IOR_offset_t t = test->transferSize;
|
||||
IOR_offset_t b = test->blockSize;
|
||||
|
||||
if (Nto1 && (s != 1) && (b != t)) {
|
||||
ERR("N:1 (strided) requires xfer-size == block-size");
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* modelled on similar macros in iordef.h */
|
||||
#define CURL_ERR(MSG, CURL_ERRNO, PARAM) \
|
||||
do { \
|
||||
|
|
|
@ -41,6 +41,10 @@
|
|||
ior_aiori_t *available_aiori[] = {
|
||||
#ifdef USE_POSIX_AIORI
|
||||
&posix_aiori,
|
||||
#endif
|
||||
#ifdef USE_DAOS_AIORI
|
||||
&daos_aiori,
|
||||
&dfs_aiori,
|
||||
#endif
|
||||
& dummy_aiori,
|
||||
#ifdef USE_HDF5_AIORI
|
||||
|
@ -69,9 +73,8 @@ ior_aiori_t *available_aiori[] = {
|
|||
#ifdef USE_RADOS_AIORI
|
||||
&rados_aiori,
|
||||
#endif
|
||||
#ifdef USE_DAOS_AIORI
|
||||
&daos_aiori,
|
||||
&dfs_aiori,
|
||||
#ifdef USE_GFARM_AIORI
|
||||
&gfarm_aiori,
|
||||
#endif
|
||||
NULL
|
||||
};
|
||||
|
|
|
@ -86,6 +86,8 @@ typedef struct ior_aiori {
|
|||
void (*finalize)(); /* called once per program after MPI is shutdown */
|
||||
option_help * (*get_options)(void ** init_backend_options, void* init_values); /* initializes the backend options as well and returns the pointer to the option help structure */
|
||||
bool enable_mdtest;
|
||||
int (*check_params)(IOR_param_t *); /* check if the provided parameters for the given test and the module options are correct, if they aren't print a message and exit(1) or return 1*/
|
||||
void (*sync)(IOR_param_t * ); /* synchronize every pending operation for this storage */
|
||||
} ior_aiori_t;
|
||||
|
||||
enum bench_type {
|
||||
|
@ -94,6 +96,8 @@ enum bench_type {
|
|||
};
|
||||
|
||||
extern ior_aiori_t dummy_aiori;
|
||||
extern ior_aiori_t daos_aiori;
|
||||
extern ior_aiori_t dfs_aiori;
|
||||
extern ior_aiori_t hdf5_aiori;
|
||||
extern ior_aiori_t hdfs_aiori;
|
||||
extern ior_aiori_t ime_aiori;
|
||||
|
@ -105,8 +109,7 @@ extern ior_aiori_t s3_aiori;
|
|||
extern ior_aiori_t s3_plus_aiori;
|
||||
extern ior_aiori_t s3_emc_aiori;
|
||||
extern ior_aiori_t rados_aiori;
|
||||
extern ior_aiori_t daos_aiori;
|
||||
extern ior_aiori_t dfs_aiori;
|
||||
extern ior_aiori_t gfarm_aiori;
|
||||
|
||||
void aiori_initialize(IOR_test_t * tests);
|
||||
void aiori_finalize(IOR_test_t * tests);
|
||||
|
|
|
@ -18,8 +18,8 @@ static void PrintNextToken();
|
|||
void PrintTableHeader(){
|
||||
if (outputFormat == OUTPUT_DEFAULT){
|
||||
fprintf(out_resultfile, "\n");
|
||||
fprintf(out_resultfile, "access bw(MiB/s) block(KiB) xfer(KiB) open(s) wr/rd(s) close(s) total(s) iter\n");
|
||||
fprintf(out_resultfile, "------ --------- ---------- --------- -------- -------- -------- -------- ----\n");
|
||||
fprintf(out_resultfile, "access bw(MiB/s) block(KiB) xfer(KiB) open(s) wr/rd(s) close(s) total(s) iter\n");
|
||||
fprintf(out_resultfile, "------ --------- ---------- --------- -------- -------- -------- -------- ----\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -535,10 +535,14 @@ static void PrintLongSummaryOneOperation(IOR_test_t *test, const int access)
|
|||
reps = params->repetitions;
|
||||
|
||||
double * times = malloc(sizeof(double)* reps);
|
||||
long long stonewall_avg_data_accessed = 0;
|
||||
double stonewall_time = 0;
|
||||
for(int i=0; i < reps; i++){
|
||||
IOR_point_t *point = (access == WRITE) ? &results[i].write :
|
||||
&results[i].read;
|
||||
times[i] = point->time;
|
||||
stonewall_time += point->stonewall_time;
|
||||
stonewall_avg_data_accessed += point->stonewall_avg_data_accessed;
|
||||
}
|
||||
|
||||
bw = bw_values(reps, results, times, access);
|
||||
|
@ -559,6 +563,13 @@ static void PrintLongSummaryOneOperation(IOR_test_t *test, const int access)
|
|||
fprintf(out_resultfile, "%10.2f ", ops->mean);
|
||||
fprintf(out_resultfile, "%10.2f ", ops->sd);
|
||||
fprintf(out_resultfile, "%10.5f ", mean_of_array_of_doubles(times, reps));
|
||||
if(test->params.stoneWallingWearOut){
|
||||
fprintf(out_resultfile, "%10.2f ", stonewall_time / reps);
|
||||
fprintf(out_resultfile, "%13.2f ", stonewall_avg_data_accessed / stonewall_time / MEBIBYTE);
|
||||
}else{
|
||||
fprintf(out_resultfile, "%10s ", "NA");
|
||||
fprintf(out_resultfile, "%13s ", "NA");
|
||||
}
|
||||
fprintf(out_resultfile, "%5d ", params->id);
|
||||
fprintf(out_resultfile, "%6d ", params->numTasks);
|
||||
fprintf(out_resultfile, "%3d ", params->tasksPerNode);
|
||||
|
@ -604,6 +615,10 @@ static void PrintLongSummaryOneOperation(IOR_test_t *test, const int access)
|
|||
PrintKeyValDouble("OPsMean", ops->mean);
|
||||
PrintKeyValDouble("OPsSD", ops->sd);
|
||||
PrintKeyValDouble("MeanTime", mean_of_array_of_doubles(times, reps));
|
||||
if(test->params.stoneWallingWearOut){
|
||||
PrintKeyValDouble("StoneWallTime", stonewall_time / reps);
|
||||
PrintKeyValDouble("StoneWallbwMeanMIB", stonewall_avg_data_accessed / stonewall_time / MEBIBYTE);
|
||||
}
|
||||
PrintKeyValDouble("xsizeMiB", (double) point->aggFileSizeForBW / MEBIBYTE);
|
||||
PrintEndSection();
|
||||
}else if (outputFormat == OUTPUT_CSV){
|
||||
|
@ -636,10 +651,10 @@ void PrintLongSummaryHeader()
|
|||
}
|
||||
|
||||
fprintf(out_resultfile, "\n");
|
||||
fprintf(out_resultfile, "%-9s %10s %10s %10s %10s %10s %10s %10s %10s %10s",
|
||||
fprintf(out_resultfile, "%-9s %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s %13s",
|
||||
"Operation", "Max(MiB)", "Min(MiB)", "Mean(MiB)", "StdDev",
|
||||
"Max(OPs)", "Min(OPs)", "Mean(OPs)", "StdDev",
|
||||
"Mean(s)");
|
||||
"Mean(s)", "Stonewall(s)", "Stonewall(MiB)");
|
||||
fprintf(out_resultfile, " Test# #Tasks tPN reps fPP reord reordoff reordrand seed"
|
||||
" segcnt ");
|
||||
fprintf(out_resultfile, "%8s %8s %9s %5s", " blksiz", "xsize","aggs(MiB)", "API");
|
||||
|
|
74
src/ior.c
74
src/ior.c
|
@ -787,8 +787,7 @@ void GetTestFileName(char *testFileName, IOR_param_t * test)
|
|||
static char *PrependDir(IOR_param_t * test, char *rootDir)
|
||||
{
|
||||
char *dir;
|
||||
char fname[MAX_STR + 1];
|
||||
char *p;
|
||||
char *fname;
|
||||
int i;
|
||||
|
||||
dir = (char *)malloc(MAX_STR + 1);
|
||||
|
@ -808,35 +807,27 @@ static char *PrependDir(IOR_param_t * test, char *rootDir)
|
|||
}
|
||||
|
||||
/* get file name */
|
||||
strcpy(fname, rootDir);
|
||||
p = fname;
|
||||
while (i > 0) {
|
||||
if (fname[i] == '\0' || fname[i] == '/') {
|
||||
p = fname + (i + 1);
|
||||
break;
|
||||
}
|
||||
i--;
|
||||
}
|
||||
fname = rootDir + i + 1;
|
||||
|
||||
/* create directory with rank as subdirectory */
|
||||
sprintf(dir, "%s%d", dir, (rank + rankOffset) % test->numTasks);
|
||||
sprintf(dir + i + 1, "%d", (rank + rankOffset) % test->numTasks);
|
||||
|
||||
/* dir doesn't exist, so create */
|
||||
if (backend->access(dir, F_OK, test) != 0) {
|
||||
if (backend->mkdir(dir, S_IRWXU, test) < 0) {
|
||||
ERR("cannot create directory");
|
||||
ERRF("cannot create directory: %s", dir);
|
||||
}
|
||||
|
||||
/* check if correct permissions */
|
||||
} else if (backend->access(dir, R_OK, test) != 0 ||
|
||||
backend->access(dir, W_OK, test) != 0 ||
|
||||
backend->access(dir, X_OK, test) != 0) {
|
||||
ERR("invalid directory permissions");
|
||||
ERRF("invalid directory permissions: %s", dir);
|
||||
}
|
||||
|
||||
/* concatenate dir and file names */
|
||||
strcat(dir, "/");
|
||||
strcat(dir, p);
|
||||
strcat(dir, fname);
|
||||
|
||||
return dir;
|
||||
}
|
||||
|
@ -902,6 +893,10 @@ static void RemoveFile(char *testFileName, int filePerProc, IOR_param_t * test)
|
|||
GetTestFileName(testFileName, test);
|
||||
}
|
||||
if (backend->access(testFileName, F_OK, test) == 0) {
|
||||
if (verbose >= VERBOSE_3) {
|
||||
fprintf(out_logfile, "task %d removing %s\n", rank,
|
||||
testFileName);
|
||||
}
|
||||
backend->delete(testFileName, test);
|
||||
}
|
||||
if (test->reorderTasksRandom == TRUE) {
|
||||
|
@ -909,7 +904,11 @@ static void RemoveFile(char *testFileName, int filePerProc, IOR_param_t * test)
|
|||
GetTestFileName(testFileName, test);
|
||||
}
|
||||
} else {
|
||||
if (rank == 0 && backend->access(testFileName, F_OK, test) == 0) {
|
||||
if ((rank == 0) && (backend->access(testFileName, F_OK, test) == 0)) {
|
||||
if (verbose >= VERBOSE_3) {
|
||||
fprintf(out_logfile, "task %d removing %s\n", rank,
|
||||
testFileName);
|
||||
}
|
||||
backend->delete(testFileName, test);
|
||||
}
|
||||
}
|
||||
|
@ -941,6 +940,7 @@ static void InitTests(IOR_test_t *tests, MPI_Comm com)
|
|||
params->testComm = com;
|
||||
params->nodes = params->numTasks / tasksPerNode;
|
||||
params->tasksPerNode = tasksPerNode;
|
||||
params->tasksBlockMapping = QueryNodeMapping(com,false);
|
||||
if (params->numTasks == 0) {
|
||||
params->numTasks = size;
|
||||
}
|
||||
|
@ -1224,7 +1224,7 @@ static void TestIoSys(IOR_test_t *test)
|
|||
}
|
||||
if (rank == 0 && params->reorderTasks == TRUE && verbose >= VERBOSE_1) {
|
||||
fprintf(out_logfile,
|
||||
"Using reorderTasks '-C' (expecting block, not cyclic, task assignment)\n");
|
||||
"Using reorderTasks '-C' (useful to avoid read cache in client)\n");
|
||||
fflush(out_logfile);
|
||||
}
|
||||
params->tasksPerNode = CountTasksPerNode(testComm);
|
||||
|
@ -1362,7 +1362,11 @@ static void TestIoSys(IOR_test_t *test)
|
|||
}
|
||||
if (params->reorderTasks) {
|
||||
/* move two nodes away from writing node */
|
||||
rankOffset = (2 * params->tasksPerNode) % params->numTasks;
|
||||
int shift = 1; /* assume a by-node (round-robin) mapping of tasks to nodes */
|
||||
if (params->tasksBlockMapping) {
|
||||
shift = params->tasksPerNode; /* switch to by-slot (contiguous block) mapping */
|
||||
}
|
||||
rankOffset = (2 * shift) % params->numTasks;
|
||||
}
|
||||
|
||||
// update the check buffer
|
||||
|
@ -1397,9 +1401,12 @@ static void TestIoSys(IOR_test_t *test)
|
|||
/* Get rankOffset [file offset] for this process to read, based on -C,-Z,-Q,-X options */
|
||||
/* Constant process offset reading */
|
||||
if (params->reorderTasks) {
|
||||
/* move taskPerNodeOffset nodes[1==default] away from writing node */
|
||||
rankOffset = (params->taskPerNodeOffset *
|
||||
params->tasksPerNode) % params->numTasks;
|
||||
/* move one node away from writing node */
|
||||
int shift = 1; /* assume a by-node (round-robin) mapping of tasks to nodes */
|
||||
if (params->tasksBlockMapping) {
|
||||
shift=params->tasksPerNode; /* switch to a by-slot (contiguous block) mapping */
|
||||
}
|
||||
rankOffset = (params->taskPerNodeOffset * shift) % params->numTasks;
|
||||
}
|
||||
/* random process offset reading */
|
||||
if (params->reorderTasksRandom) {
|
||||
|
@ -1582,6 +1589,7 @@ static void ValidateTests(IOR_param_t * test)
|
|||
&& (strcasecmp(test->api, "MPIIO") != 0)
|
||||
&& (strcasecmp(test->api, "MMAP") != 0)
|
||||
&& (strcasecmp(test->api, "HDFS") != 0)
|
||||
&& (strcasecmp(test->api, "Gfarm") != 0)
|
||||
&& (strcasecmp(test->api, "RADOS") != 0)) && test->fsync)
|
||||
WARN_RESET("fsync() not supported in selected backend",
|
||||
test, &defaults, fsync);
|
||||
|
@ -1661,11 +1669,8 @@ static void ValidateTests(IOR_param_t * test)
|
|||
#if (H5_VERS_MAJOR > 0 && H5_VERS_MINOR > 5)
|
||||
;
|
||||
#else
|
||||
char errorString[MAX_STR];
|
||||
sprintf(errorString,
|
||||
"'no fill' option not available in %s",
|
||||
ERRF("'no fill' option not available in %s",
|
||||
test->apiVersion);
|
||||
ERR(errorString);
|
||||
#endif
|
||||
#else
|
||||
WARN("unable to determine HDF5 version for 'no fill' usage");
|
||||
|
@ -1675,15 +1680,12 @@ static void ValidateTests(IOR_param_t * test)
|
|||
if (test->useExistingTestFile && test->lustre_set_striping)
|
||||
ERR("Lustre stripe options are incompatible with useExistingTestFile");
|
||||
|
||||
/* N:1 and N:N */
|
||||
IOR_offset_t NtoN = test->filePerProc;
|
||||
IOR_offset_t Nto1 = ! NtoN;
|
||||
IOR_offset_t s = test->segmentCount;
|
||||
IOR_offset_t t = test->transferSize;
|
||||
IOR_offset_t b = test->blockSize;
|
||||
|
||||
if (Nto1 && (s != 1) && (b != t)) {
|
||||
ERR("N:1 (strided) requires xfer-size == block-size");
|
||||
/* allow the backend to validate the options */
|
||||
if(test->backend->check_params){
|
||||
int check = test->backend->check_params(test);
|
||||
if (check == 0){
|
||||
ERR("The backend returned that the test parameters are invalid.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1938,10 +1940,6 @@ static IOR_offset_t WriteOrRead(IOR_param_t *test, IOR_results_t *results,
|
|||
point->stonewall_min_data_accessed /1024.0 / 1024 / 1024, point->stonewall_avg_data_accessed / 1024.0 / 1024 / 1024 / test->numTasks , point->stonewall_time);
|
||||
point->stonewall_min_data_accessed *= test->numTasks;
|
||||
}
|
||||
if(pairs_accessed_min == pairCnt){
|
||||
point->stonewall_min_data_accessed = 0;
|
||||
point->stonewall_avg_data_accessed = 0;
|
||||
}
|
||||
if(pairCnt != point->pairs_accessed){
|
||||
// some work needs still to be done !
|
||||
for(; pairCnt < point->pairs_accessed; pairCnt++ ) {
|
||||
|
|
|
@ -100,6 +100,7 @@ typedef struct
|
|||
int numTasks; /* number of tasks for test */
|
||||
int nodes; /* number of nodes for test */
|
||||
int tasksPerNode; /* number of tasks per node */
|
||||
int tasksBlockMapping; /* are the tasks in contiguous blocks across nodes or round-robin */
|
||||
int repetitions; /* number of repetitions of test */
|
||||
int repCounter; /* rep counter */
|
||||
int multiFile; /* multiple files */
|
||||
|
|
52
src/iordef.h
52
src/iordef.h
|
@ -151,28 +151,41 @@ typedef long long int IOR_size_t;
|
|||
fflush(stdout); \
|
||||
} while (0)
|
||||
|
||||
/* warning with errno printed */
|
||||
#define EWARN(MSG) do { \
|
||||
|
||||
/* warning with format string and errno printed */
|
||||
#define EWARNF(FORMAT, ...) do { \
|
||||
if (verbose > VERBOSE_2) { \
|
||||
fprintf(stdout, "ior WARNING: %s, errno %d, %s (%s:%d).\n", \
|
||||
MSG, errno, strerror(errno), __FILE__, __LINE__); \
|
||||
fprintf(stdout, "ior WARNING: " FORMAT ", errno %d, %s (%s:%d).\n", \
|
||||
__VA_ARGS__, errno, strerror(errno), __FILE__, __LINE__); \
|
||||
} else { \
|
||||
fprintf(stdout, "ior WARNING: %s, errno %d, %s \n", \
|
||||
MSG, errno, strerror(errno)); \
|
||||
fprintf(stdout, "ior WARNING: " FORMAT ", errno %d, %s \n", \
|
||||
__VA_ARGS__, errno, strerror(errno)); \
|
||||
} \
|
||||
fflush(stdout); \
|
||||
} while (0)
|
||||
|
||||
|
||||
/* display error message and terminate execution */
|
||||
#define ERR(MSG) do { \
|
||||
fprintf(stdout, "ior ERROR: %s, errno %d, %s (%s:%d)\n", \
|
||||
MSG, errno, strerror(errno), __FILE__, __LINE__); \
|
||||
/* warning with errno printed */
|
||||
#define EWARN(MSG) do { \
|
||||
EWARNF("%s", MSG); \
|
||||
} while (0)
|
||||
|
||||
|
||||
/* display error message with format string and terminate execution */
|
||||
#define ERRF(FORMAT, ...) do { \
|
||||
fprintf(stdout, "ior ERROR: " FORMAT ", errno %d, %s (%s:%d)\n", \
|
||||
__VA_ARGS__, errno, strerror(errno), __FILE__, __LINE__); \
|
||||
fflush(stdout); \
|
||||
MPI_Abort(MPI_COMM_WORLD, -1); \
|
||||
} while (0)
|
||||
|
||||
|
||||
/* display error message and terminate execution */
|
||||
#define ERR(MSG) do { \
|
||||
ERRF("%s", MSG); \
|
||||
} while (0)
|
||||
|
||||
|
||||
/* display a simple error message (i.e. errno is not set) and terminate execution */
|
||||
#define ERR_SIMPLE(MSG) do { \
|
||||
fprintf(stdout, "ior ERROR: %s, (%s:%d)\n", \
|
||||
|
@ -184,24 +197,35 @@ typedef long long int IOR_size_t;
|
|||
|
||||
/******************************************************************************/
|
||||
/*
|
||||
* MPI_CHECK will display a custom error message as well as an error string
|
||||
* MPI_CHECKF will display a custom format string as well as an error string
|
||||
* from the MPI_STATUS and then exit the program
|
||||
*/
|
||||
|
||||
#define MPI_CHECK(MPI_STATUS, MSG) do { \
|
||||
#define MPI_CHECKF(MPI_STATUS, FORMAT, ...) do { \
|
||||
char resultString[MPI_MAX_ERROR_STRING]; \
|
||||
int resultLength; \
|
||||
\
|
||||
if (MPI_STATUS != MPI_SUCCESS) { \
|
||||
MPI_Error_string(MPI_STATUS, resultString, &resultLength); \
|
||||
fprintf(stdout, "ior ERROR: %s, MPI %s, (%s:%d)\n", \
|
||||
MSG, resultString, __FILE__, __LINE__); \
|
||||
fprintf(stdout, "ior ERROR: " FORMAT ", MPI %s, (%s:%d)\n", \
|
||||
__VA_ARGS__, resultString, __FILE__, __LINE__); \
|
||||
fflush(stdout); \
|
||||
MPI_Abort(MPI_COMM_WORLD, -1); \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
/*
|
||||
* MPI_CHECK will display a custom error message as well as an error string
|
||||
* from the MPI_STATUS and then exit the program
|
||||
*/
|
||||
|
||||
#define MPI_CHECK(MPI_STATUS, MSG) do { \
|
||||
MPI_CHECKF(MPI_STATUS, "%s", MSG); \
|
||||
} while(0)
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
/*
|
||||
* System info for Windows.
|
||||
|
|
1042
src/mdtest.c
1042
src/mdtest.c
File diff suppressed because it is too large
Load Diff
|
@ -390,9 +390,15 @@ int option_parse(int argc, char ** argv, options_all_t * opt_all){
|
|||
}
|
||||
}
|
||||
|
||||
if( requiredArgsSeen != requiredArgsNeeded ){
|
||||
printf("Seen = %d, needed = %d\n", requiredArgsSeen, requiredArgsNeeded);
|
||||
printf("Error: Missing some required arguments\n\n");
|
||||
printhelp = 1;
|
||||
}
|
||||
|
||||
if(error != 0){
|
||||
printf("Invalid options\n");
|
||||
printhelp = -1;
|
||||
printhelp = 1;
|
||||
}
|
||||
|
||||
if(printhelp == 1){
|
||||
|
|
|
@ -471,13 +471,13 @@ option_help * createGlobalOptions(IOR_param_t * params){
|
|||
{'A', NULL, "refNum -- user supplied reference number to include in the summary", OPTION_OPTIONAL_ARGUMENT, 'd', & params->referenceNumber},
|
||||
{'b', NULL, "blockSize -- contiguous bytes to write per task (e.g.: 8, 4k, 2m, 1g)", OPTION_OPTIONAL_ARGUMENT, 'l', & params->blockSize},
|
||||
{'c', NULL, "collective -- collective I/O", OPTION_FLAG, 'd', & params->collective},
|
||||
{'C', NULL, "reorderTasks -- changes task ordering to n+1 ordering for readback", OPTION_FLAG, 'd', & params->reorderTasks},
|
||||
{'C', NULL, "reorderTasks -- changes task ordering for readback (useful to avoid client cache)", OPTION_FLAG, 'd', & params->reorderTasks},
|
||||
{'d', NULL, "interTestDelay -- delay between reps in seconds", OPTION_OPTIONAL_ARGUMENT, 'd', & params->interTestDelay},
|
||||
{'D', NULL, "deadlineForStonewalling -- seconds before stopping write or read phase", OPTION_OPTIONAL_ARGUMENT, 'd', & params->deadlineForStonewalling},
|
||||
{.help=" -O stoneWallingWearOut=1 -- once the stonewalling timout is over, all process finish to access the amount of data", .arg = OPTION_OPTIONAL_ARGUMENT},
|
||||
{.help=" -O stoneWallingWearOutIterations=N -- stop after processing this number of iterations, needed for reading data back written with stoneWallingWearOut", .arg = OPTION_OPTIONAL_ARGUMENT},
|
||||
{.help=" -O stoneWallingStatusFile=FILE -- this file keeps the number of iterations from stonewalling during write and allows to use them for read", .arg = OPTION_OPTIONAL_ARGUMENT},
|
||||
{'e', NULL, "fsync -- perform sync operation after each block write", OPTION_FLAG, 'd', & params->fsync},
|
||||
{'e', NULL, "fsync -- perform a fsync() operation at the end of each read/write phase", OPTION_FLAG, 'd', & params->fsync},
|
||||
{'E', NULL, "useExistingTestFile -- do not remove test file before write access", OPTION_FLAG, 'd', & params->useExistingTestFile},
|
||||
{'f', NULL, "scriptFile -- test script name", OPTION_OPTIONAL_ARGUMENT, 's', & params->testscripts},
|
||||
{'F', NULL, "filePerProc -- file-per-process", OPTION_FLAG, 'd', & params->filePerProc},
|
||||
|
|
|
@ -16,6 +16,11 @@ int main(int argc, char ** argv){
|
|||
fprintf(stderr, "Could not run ior\n");
|
||||
ret = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
free(res->params.platform);
|
||||
free(res);
|
||||
}
|
||||
}
|
||||
if (rank == 0){
|
||||
char * param[] = {"./mdtest", "-a", "DUMMY"};
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
# define _GNU_SOURCE /* Needed for O_DIRECT in fcntl */
|
||||
#endif /* __linux__ */
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
|
@ -75,6 +76,17 @@ void* safeMalloc(uint64_t size){
|
|||
return d;
|
||||
}
|
||||
|
||||
void FailMessage(int rank, const char *location, char *format, ...) {
|
||||
char msg[4096];
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
vsnprintf(msg, 4096, format, args);
|
||||
va_end(args);
|
||||
fprintf(out_logfile, "%s: Process %d: FAILED in %s, %s: %s\n",
|
||||
PrintTimestamp(), rank, location, msg, strerror(errno));
|
||||
fflush(out_logfile);
|
||||
MPI_Abort(testComm, 1);
|
||||
}
|
||||
|
||||
size_t NodeMemoryStringToBytes(char *size_str)
|
||||
{
|
||||
|
@ -213,12 +225,53 @@ void DumpBuffer(void *buffer,
|
|||
return;
|
||||
} /* DumpBuffer() */
|
||||
|
||||
/* a function that prints an int array where each index corresponds to a rank
|
||||
and the value is whether that rank is on the same host as root.
|
||||
Also returns 1 if rank 1 is on same host and 0 otherwise
|
||||
*/
|
||||
int QueryNodeMapping(MPI_Comm comm, int print_nodemap) {
|
||||
char localhost[MAX_PATHLEN], roothost[MAX_PATHLEN];
|
||||
int num_ranks;
|
||||
MPI_Comm_size(comm, &num_ranks);
|
||||
int *node_map = (int*)malloc(sizeof(int) * num_ranks);
|
||||
if ( ! node_map ) {
|
||||
FAIL("malloc");
|
||||
}
|
||||
if (gethostname(localhost, MAX_PATHLEN) != 0) {
|
||||
FAIL("gethostname()");
|
||||
}
|
||||
if (rank==0) {
|
||||
strncpy(roothost,localhost,MAX_PATHLEN);
|
||||
}
|
||||
|
||||
/* have rank 0 broadcast out its hostname */
|
||||
MPI_Bcast(roothost, MAX_PATHLEN, MPI_CHAR, 0, comm);
|
||||
//printf("Rank %d received root host as %s\n", rank, roothost);
|
||||
/* then every rank figures out whether it is same host as root and then gathers that */
|
||||
int same_as_root = strcmp(roothost,localhost) == 0;
|
||||
MPI_Gather( &same_as_root, 1, MPI_INT, node_map, 1, MPI_INT, 0, comm);
|
||||
if ( print_nodemap && rank==0) {
|
||||
fprintf( out_logfile, "Nodemap: " );
|
||||
for ( int i = 0; i < num_ranks; i++ ) {
|
||||
fprintf( out_logfile, "%d", node_map[i] );
|
||||
}
|
||||
fprintf( out_logfile, "\n" );
|
||||
}
|
||||
int ret = 1;
|
||||
if(num_ranks>1)
|
||||
ret = node_map[1] == 1;
|
||||
MPI_Bcast(&ret, 1, MPI_INT, 0, comm);
|
||||
free(node_map);
|
||||
return ret;
|
||||
}
|
||||
|
||||
#if MPI_VERSION >= 3
|
||||
int CountTasksPerNode(MPI_Comm comm) {
|
||||
/* modern MPI provides a simple way to get the local process count */
|
||||
MPI_Comm shared_comm;
|
||||
int count;
|
||||
|
||||
|
||||
MPI_Comm_split_type (comm, MPI_COMM_TYPE_SHARED, 0, MPI_INFO_NULL, &shared_comm);
|
||||
MPI_Comm_size (shared_comm, &count);
|
||||
MPI_Comm_free (&shared_comm);
|
||||
|
|
|
@ -36,23 +36,14 @@ extern enum OutputFormat_t outputFormat; /* format of the output */
|
|||
|
||||
|
||||
#ifdef __linux__
|
||||
#define FAIL(msg) do { \
|
||||
fprintf(out_logfile, "%s: Process %d: FAILED in %s, %s: %s\n", \
|
||||
PrintTimestamp(), rank, __func__, \
|
||||
msg, strerror(errno)); \
|
||||
fflush(out_logfile); \
|
||||
MPI_Abort(testComm, 1); \
|
||||
} while(0)
|
||||
#define ERROR_LOCATION __func__
|
||||
#else
|
||||
#define FAIL(msg) do { \
|
||||
fprintf(out_logfile, "%s: Process %d: FAILED at %d, %s: %s\n", \
|
||||
PrintTimestamp(), rank, __LINE__, \
|
||||
msg, strerror(errno)); \
|
||||
fflush(out_logfile); \
|
||||
MPI_Abort(testComm, 1); \
|
||||
} while(0)
|
||||
#define ERROR_LOCATION __LINE__
|
||||
#endif
|
||||
|
||||
#define FAIL(...) FailMessage(rank, ERROR_LOCATION, __VA_ARGS__)
|
||||
void FailMessage(int rank, const char *location, char *format, ...);
|
||||
|
||||
void* safeMalloc(uint64_t size);
|
||||
void set_o_direct_flag(int *fd);
|
||||
|
||||
|
@ -65,6 +56,7 @@ void SetHints (MPI_Info *, char *);
|
|||
void ShowHints (MPI_Info *);
|
||||
char *HumanReadable(IOR_offset_t value, int base);
|
||||
int CountTasksPerNode(MPI_Comm comm);
|
||||
int QueryNodeMapping(MPI_Comm comm, int print_nodemap);
|
||||
void DelaySecs(int delay);
|
||||
void updateParsedOptions(IOR_param_t * options, options_all_t * global_options);
|
||||
size_t NodeMemoryStringToBytes(char *size_str);
|
||||
|
|
|
@ -1,93 +1,95 @@
|
|||
V-3: main (before display_freespace): testdirpath is "/dev/shm/mdest"
|
||||
V-3: testdirpath is "/dev/shm/mdest"
|
||||
V-3: Before show_file_system_size, dirpath is "/dev/shm"
|
||||
V-3: After show_file_system_size, dirpath is "/dev/shm"
|
||||
V-3: main (after display_freespace): testdirpath is "/dev/shm/mdest"
|
||||
V-3: main (create hierarchical directory loop-!unque_dir_per_task): Calling create_remove_directory_tree with "/dev/shm/mdest/#test-dir.0-0"
|
||||
V-3: main: Using unique_mk_dir, "mdtest_tree.0"
|
||||
V-3: main: Copied unique_mk_dir, "mdtest_tree.0", to topdir
|
||||
V-3: directory_test: create path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.0"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.1"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.2"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.3"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.4"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.5"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.6"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.7"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.8"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.9"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.10"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.11"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.12"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.13"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.14"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.15"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.16"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.17"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.18"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.19"
|
||||
V-3: file_test: create path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.0"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.1"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.2"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.3"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.4"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.5"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.6"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.7"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.8"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.9"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.10"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.11"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.12"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.13"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.14"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.15"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.16"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.17"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.18"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.19"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: main: Using testdir, "/dev/shm/mdest/#test-dir.0-0"
|
||||
V-3: Rank 0 Line 2082 main (before display_freespace): testdirpath is '/dev/shm/mdest'
|
||||
V-3: Rank 0 Line 1506 Entering display_freespace on /dev/shm/mdest...
|
||||
V-3: Rank 0 Line 1525 Before show_file_system_size, dirpath is '/dev/shm'
|
||||
V-3: Rank 0 Line 1527 After show_file_system_size, dirpath is '/dev/shm'
|
||||
V-3: Rank 0 Line 2097 main (after display_freespace): testdirpath is '/dev/shm/mdest'
|
||||
V-3: Rank 0 Line 1656 main (create hierarchical directory loop-!unque_dir_per_task): Calling create_remove_directory_tree with '/dev/shm/mdest/test-dir.0-0'
|
||||
V-3: Rank 0 Line 1683 V-3: main: Using unique_mk_dir, 'mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1704 V-3: main: Copied unique_mk_dir, 'mdtest_tree.0', to topdir
|
||||
V-3: Rank 0 Line 801 directory_test: create path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.0'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.1'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.2'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.3'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.4'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.5'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.6'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.7'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.8'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.9'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.10'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.11'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.12'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.13'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.14'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.15'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.16'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.17'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.18'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.19'
|
||||
V-3: Rank 0 Line 1716 will file_test on mdtest_tree.0
|
||||
V-3: Rank 0 Line 990 Entering file_test on mdtest_tree.0
|
||||
V-3: Rank 0 Line 1012 file_test: create path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.0'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.1'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.2'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.3'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.4'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.5'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.6'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.7'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.8'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.9'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.10'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.11'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.12'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.13'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.14'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.15'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.16'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.17'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.18'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.19'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 1723 main: Using testdir, '/dev/shm/mdest/test-dir.0-0'
|
||||
|
|
|
@ -1,50 +1,52 @@
|
|||
V-3: main (before display_freespace): testdirpath is "/dev/shm/mdest"
|
||||
V-3: testdirpath is "/dev/shm/mdest"
|
||||
V-3: Before show_file_system_size, dirpath is "/dev/shm"
|
||||
V-3: After show_file_system_size, dirpath is "/dev/shm"
|
||||
V-3: main (after display_freespace): testdirpath is "/dev/shm/mdest"
|
||||
V-3: main: Using unique_mk_dir, "mdtest_tree.0"
|
||||
V-3: main: Copied unique_mk_dir, "mdtest_tree.0", to topdir
|
||||
V-3: directory_test: stat path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.0
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.1
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.2
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.3
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.4
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.5
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.6
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.7
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.8
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.9
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.10
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.11
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.12
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.13
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.14
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.15
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.16
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.17
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.18
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.19
|
||||
V-3: file_test: stat path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.0
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.1
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.2
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.3
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.4
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.5
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.6
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.7
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.8
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.9
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.10
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.11
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.12
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.13
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.14
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.15
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.16
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.17
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.18
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/file.mdtest.0.19
|
||||
V-3: main: Using testdir, "/dev/shm/mdest/#test-dir.0-0"
|
||||
V-3: Rank 0 Line 2082 main (before display_freespace): testdirpath is '/dev/shm/mdest'
|
||||
V-3: Rank 0 Line 1506 Entering display_freespace on /dev/shm/mdest...
|
||||
V-3: Rank 0 Line 1525 Before show_file_system_size, dirpath is '/dev/shm'
|
||||
V-3: Rank 0 Line 1527 After show_file_system_size, dirpath is '/dev/shm'
|
||||
V-3: Rank 0 Line 2097 main (after display_freespace): testdirpath is '/dev/shm/mdest'
|
||||
V-3: Rank 0 Line 1683 V-3: main: Using unique_mk_dir, 'mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1704 V-3: main: Copied unique_mk_dir, 'mdtest_tree.0', to topdir
|
||||
V-3: Rank 0 Line 833 stat path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.0
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.1
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.2
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.3
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.4
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.5
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.6
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.7
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.8
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.9
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.10
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.11
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.12
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.13
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.14
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.15
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.16
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.17
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.18
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.19
|
||||
V-3: Rank 0 Line 1716 will file_test on mdtest_tree.0
|
||||
V-3: Rank 0 Line 990 Entering file_test on mdtest_tree.0
|
||||
V-3: Rank 0 Line 1079 file_test: stat path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.0
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.1
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.2
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.3
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.4
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.5
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.6
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.7
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.8
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.9
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.10
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.11
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.12
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.13
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.14
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.15
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.16
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.17
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.18
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/file.mdtest.0.19
|
||||
V-3: Rank 0 Line 1723 main: Using testdir, '/dev/shm/mdest/test-dir.0-0'
|
||||
|
|
|
@ -1,77 +1,77 @@
|
|||
V-3: main (before display_freespace): testdirpath is "/dev/shm/mdest"
|
||||
V-3: testdirpath is "/dev/shm/mdest"
|
||||
V-3: Before show_file_system_size, dirpath is "/dev/shm"
|
||||
V-3: After show_file_system_size, dirpath is "/dev/shm"
|
||||
V-3: main (after display_freespace): testdirpath is "/dev/shm/mdest"
|
||||
V-3: main (create hierarchical directory loop-!unque_dir_per_task): Calling create_remove_directory_tree with "/dev/shm/mdest/#test-dir.0-0"
|
||||
V-3: main: Using unique_mk_dir, "mdtest_tree.0"
|
||||
V-3: main: Copied unique_mk_dir, "mdtest_tree.0", to topdir
|
||||
V-3: directory_test: create path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.0"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.1"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.2"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.3"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.4"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.5"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.6"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.7"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.8"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.9"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.10"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.11"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.12"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.13"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.14"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.15"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.16"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.17"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.18"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.19"
|
||||
V-3: directory_test: stat path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.0
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.1
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.2
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.3
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.4
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.5
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.6
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.7
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.8
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.9
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.10
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.11
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.12
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.13
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.14
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.15
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.16
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.17
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.18
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.19
|
||||
V-3: directory_test: read path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: directory_test: remove directories path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.0"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.1"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.2"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.3"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.4"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.5"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.6"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.7"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.8"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.9"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.10"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.11"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.12"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.13"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.14"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.15"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.16"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.17"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.18"
|
||||
V-3: create_remove_items_helper (dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0/dir.mdtest.0.19"
|
||||
V-3: directory_test: remove unique directories path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: main: Using testdir, "/dev/shm/mdest/#test-dir.0-0"
|
||||
V-3: main (remove hierarchical directory loop-!unique_dir_per_task): Calling create_remove_directory_tree with "/dev/shm/mdest/#test-dir.0-0"
|
||||
V-3: Rank 0 Line 2082 main (before display_freespace): testdirpath is '/dev/shm/mdest'
|
||||
V-3: Rank 0 Line 1506 Entering display_freespace on /dev/shm/mdest...
|
||||
V-3: Rank 0 Line 1525 Before show_file_system_size, dirpath is '/dev/shm'
|
||||
V-3: Rank 0 Line 1527 After show_file_system_size, dirpath is '/dev/shm'
|
||||
V-3: Rank 0 Line 2097 main (after display_freespace): testdirpath is '/dev/shm/mdest'
|
||||
V-3: Rank 0 Line 1656 main (create hierarchical directory loop-!unque_dir_per_task): Calling create_remove_directory_tree with '/dev/shm/mdest/test-dir.0-0'
|
||||
V-3: Rank 0 Line 1683 V-3: main: Using unique_mk_dir, 'mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1704 V-3: main: Copied unique_mk_dir, 'mdtest_tree.0', to topdir
|
||||
V-3: Rank 0 Line 801 directory_test: create path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.0'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.1'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.2'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.3'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.4'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.5'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.6'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.7'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.8'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.9'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.10'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.11'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.12'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.13'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.14'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.15'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.16'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.17'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.18'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.19'
|
||||
V-3: Rank 0 Line 833 stat path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.0
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.1
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.2
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.3
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.4
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.5
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.6
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.7
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.8
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.9
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.10
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.11
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.12
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.13
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.14
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.15
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.16
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.17
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.18
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.19
|
||||
V-3: Rank 0 Line 862 directory_test: read path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 890 directory_test: remove directories path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.0'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.1'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.2'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.3'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.4'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.5'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.6'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.7'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.8'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.9'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.10'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.11'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.12'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.13'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.14'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.15'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.16'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.17'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.18'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0/dir.mdtest.0.19'
|
||||
V-3: Rank 0 Line 915 directory_test: remove unique directories path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1723 main: Using testdir, '/dev/shm/mdest/test-dir.0-0'
|
||||
V-3: Rank 0 Line 1764 V-3: main (remove hierarchical directory loop-!unique_dir_per_task): Calling create_remove_directory_tree with '/dev/shm/mdest/test-dir.0-0'
|
||||
|
|
|
@ -1,24 +1,27 @@
|
|||
V-3: main (before display_freespace): testdirpath is "/dev/shm/mdest"
|
||||
V-3: testdirpath is "/dev/shm/mdest"
|
||||
V-3: Before show_file_system_size, dirpath is "/dev/shm"
|
||||
V-3: After show_file_system_size, dirpath is "/dev/shm"
|
||||
V-3: main (after display_freespace): testdirpath is "/dev/shm/mdest"
|
||||
V-3: main (create hierarchical directory loop-!unque_dir_per_task): Calling create_remove_directory_tree with "/dev/shm/mdest/#test-dir.0-0"
|
||||
V-3: main: Using unique_mk_dir, "mdtest_tree.0"
|
||||
V-3: main: Copied unique_mk_dir, "mdtest_tree.0", to topdir
|
||||
V-3: directory_test: create path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: directory_test: stat path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: directory_test: read path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: directory_test: remove directories path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: directory_test: remove unique directories path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: file_test: create path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: file_test: stat path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: file_test: read path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: file_test: rm directories path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: file_test: rm unique directories path is "mdtest_tree.0"
|
||||
V-3: main: Using testdir, "/dev/shm/mdest/#test-dir.0-0"
|
||||
V-3: main (remove hierarchical directory loop-!unique_dir_per_task): Calling create_remove_directory_tree with "/dev/shm/mdest/#test-dir.0-0"
|
||||
V-3: Rank 0 Line 2082 main (before display_freespace): testdirpath is '/dev/shm/mdest'
|
||||
V-3: Rank 0 Line 1506 Entering display_freespace on /dev/shm/mdest...
|
||||
V-3: Rank 0 Line 1525 Before show_file_system_size, dirpath is '/dev/shm'
|
||||
V-3: Rank 0 Line 1527 After show_file_system_size, dirpath is '/dev/shm'
|
||||
V-3: Rank 0 Line 2097 main (after display_freespace): testdirpath is '/dev/shm/mdest'
|
||||
V-3: Rank 0 Line 1656 main (create hierarchical directory loop-!unque_dir_per_task): Calling create_remove_directory_tree with '/dev/shm/mdest/test-dir.0-0'
|
||||
V-3: Rank 0 Line 1683 V-3: main: Using unique_mk_dir, 'mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1704 V-3: main: Copied unique_mk_dir, 'mdtest_tree.0', to topdir
|
||||
V-3: Rank 0 Line 801 directory_test: create path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 833 stat path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 862 directory_test: read path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 890 directory_test: remove directories path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 915 directory_test: remove unique directories path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1716 will file_test on mdtest_tree.0
|
||||
V-3: Rank 0 Line 990 Entering file_test on mdtest_tree.0
|
||||
V-3: Rank 0 Line 1012 file_test: create path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1079 file_test: stat path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1104 file_test: read path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1134 file_test: rm directories path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1141 gonna create /dev/shm/mdest/test-dir.0-0/mdtest_tree.0
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1158 file_test: rm unique directories path is 'mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1723 main: Using testdir, '/dev/shm/mdest/test-dir.0-0'
|
||||
V-3: Rank 0 Line 1764 V-3: main (remove hierarchical directory loop-!unique_dir_per_task): Calling create_remove_directory_tree with '/dev/shm/mdest/test-dir.0-0'
|
||||
|
|
|
@ -1,24 +1,27 @@
|
|||
V-3: main (before display_freespace): testdirpath is "/dev/shm/mdest"
|
||||
V-3: testdirpath is "/dev/shm/mdest"
|
||||
V-3: Before show_file_system_size, dirpath is "/dev/shm"
|
||||
V-3: After show_file_system_size, dirpath is "/dev/shm"
|
||||
V-3: main (after display_freespace): testdirpath is "/dev/shm/mdest"
|
||||
V-3: main (create hierarchical directory loop-!unque_dir_per_task): Calling create_remove_directory_tree with "/dev/shm/mdest/#test-dir.0-0"
|
||||
V-3: main: Using unique_mk_dir, "mdtest_tree.0"
|
||||
V-3: main: Copied unique_mk_dir, "mdtest_tree.0", to topdir
|
||||
V-3: directory_test: create path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: directory_test: stat path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: directory_test: read path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: directory_test: remove directories path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: directory_test: remove unique directories path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: file_test: create path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: file_test: stat path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: file_test: read path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: file_test: rm directories path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0"
|
||||
V-3: file_test: rm unique directories path is "mdtest_tree.0"
|
||||
V-3: main: Using testdir, "/dev/shm/mdest/#test-dir.0-0"
|
||||
V-3: main (remove hierarchical directory loop-!unique_dir_per_task): Calling create_remove_directory_tree with "/dev/shm/mdest/#test-dir.0-0"
|
||||
V-3: Rank 0 Line 2082 main (before display_freespace): testdirpath is '/dev/shm/mdest'
|
||||
V-3: Rank 0 Line 1506 Entering display_freespace on /dev/shm/mdest...
|
||||
V-3: Rank 0 Line 1525 Before show_file_system_size, dirpath is '/dev/shm'
|
||||
V-3: Rank 0 Line 1527 After show_file_system_size, dirpath is '/dev/shm'
|
||||
V-3: Rank 0 Line 2097 main (after display_freespace): testdirpath is '/dev/shm/mdest'
|
||||
V-3: Rank 0 Line 1656 main (create hierarchical directory loop-!unque_dir_per_task): Calling create_remove_directory_tree with '/dev/shm/mdest/test-dir.0-0'
|
||||
V-3: Rank 0 Line 1683 V-3: main: Using unique_mk_dir, 'mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1704 V-3: main: Copied unique_mk_dir, 'mdtest_tree.0', to topdir
|
||||
V-3: Rank 0 Line 801 directory_test: create path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 833 stat path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 862 directory_test: read path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 890 directory_test: remove directories path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 915 directory_test: remove unique directories path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1716 will file_test on mdtest_tree.0
|
||||
V-3: Rank 0 Line 990 Entering file_test on mdtest_tree.0
|
||||
V-3: Rank 0 Line 1012 file_test: create path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1079 file_test: stat path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1104 file_test: read path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1134 file_test: rm directories path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1141 gonna create /dev/shm/mdest/test-dir.0-0/mdtest_tree.0
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1158 file_test: rm unique directories path is 'mdtest_tree.0'
|
||||
V-3: Rank 0 Line 1723 main: Using testdir, '/dev/shm/mdest/test-dir.0-0'
|
||||
V-3: Rank 0 Line 1764 V-3: main (remove hierarchical directory loop-!unique_dir_per_task): Calling create_remove_directory_tree with '/dev/shm/mdest/test-dir.0-0'
|
||||
|
|
|
@ -1,25 +1,29 @@
|
|||
V-3: main (before display_freespace): testdirpath is "/dev/shm/mdest"
|
||||
V-3: testdirpath is "/dev/shm/mdest"
|
||||
V-3: Before show_file_system_size, dirpath is "/dev/shm"
|
||||
V-3: After show_file_system_size, dirpath is "/dev/shm"
|
||||
V-3: main (after display_freespace): testdirpath is "/dev/shm/mdest"
|
||||
V-3: main (create hierarchical directory loop-!collective_creates): Calling create_remove_directory_tree with "/dev/shm/mdest/#test-dir.0-0"
|
||||
V-3: main: Copied unique_mk_dir, "mdtest_tree.0.0", to topdir
|
||||
V-3: file_test: create path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0"
|
||||
V-3: create_remove_items (for loop): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/"
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1//file.mdtest.0.1"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/"
|
||||
V-3: file_test: stat path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0"
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/file.mdtest.0.1
|
||||
V-3: file_test: rm directories path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0"
|
||||
V-3: create_remove_items (for loop): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/"
|
||||
V-3: create_remove_items_helper (non-dirs remove): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1//file.mdtest.0.1"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/"
|
||||
V-3: file_test: rm unique directories path is "/dev/shm/mdest/#test-dir.0-0/"
|
||||
V-3: main (remove hierarchical directory loop-!collective): Calling create_remove_directory_tree with "/dev/shm/mdest/#test-dir.0-0"
|
||||
V-3: Rank 0 Line 2082 main (before display_freespace): testdirpath is '/dev/shm/mdest'
|
||||
V-3: Rank 0 Line 1506 Entering display_freespace on /dev/shm/mdest...
|
||||
V-3: Rank 0 Line 1525 Before show_file_system_size, dirpath is '/dev/shm'
|
||||
V-3: Rank 0 Line 1527 After show_file_system_size, dirpath is '/dev/shm'
|
||||
V-3: Rank 0 Line 2097 main (after display_freespace): testdirpath is '/dev/shm/mdest'
|
||||
V-3: Rank 0 Line 1647 main (create hierarchical directory loop-!collective_creates): Calling create_remove_directory_tree with '/dev/shm/mdest/test-dir.0-0'
|
||||
V-3: Rank 0 Line 1694 i 1 nstride 0
|
||||
V-3: Rank 0 Line 1704 V-3: main: Copied unique_mk_dir, 'mdtest_tree.0.0', to topdir
|
||||
V-3: Rank 0 Line 1716 will file_test on mdtest_tree.0.0
|
||||
V-3: Rank 0 Line 990 Entering file_test on mdtest_tree.0.0
|
||||
V-3: Rank 0 Line 1012 file_test: create path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0'
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0'
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0'
|
||||
V-3: Rank 0 Line 483 create_remove_items (for loop): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/'
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1//file.mdtest.0.1'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/'
|
||||
V-3: Rank 0 Line 1079 file_test: stat path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0'
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/file.mdtest.0.1
|
||||
V-3: Rank 0 Line 1134 file_test: rm directories path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0'
|
||||
V-3: Rank 0 Line 1141 gonna create /dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0'
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0'
|
||||
V-3: Rank 0 Line 483 create_remove_items (for loop): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/'
|
||||
V-3: Rank 0 Line 310 create_remove_items_helper (non-dirs remove): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1//file.mdtest.0.1'
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/'
|
||||
V-3: Rank 0 Line 1158 file_test: rm unique directories path is '/dev/shm/mdest/test-dir.0-0/'
|
||||
V-3: Rank 0 Line 1754 main (remove hierarchical directory loop-!collective): Calling create_remove_directory_tree with '/dev/shm/mdest/test-dir.0-0'
|
||||
|
|
|
@ -1,31 +1,34 @@
|
|||
V-3: main (before display_freespace): testdirpath is "/dev/shm/mdest"
|
||||
V-3: testdirpath is "/dev/shm/mdest"
|
||||
V-3: Before show_file_system_size, dirpath is "/dev/shm"
|
||||
V-3: After show_file_system_size, dirpath is "/dev/shm"
|
||||
V-3: main (after display_freespace): testdirpath is "/dev/shm/mdest"
|
||||
V-3: main (create hierarchical directory loop-!collective_creates): Calling create_remove_directory_tree with "/dev/shm/mdest/#test-dir.0-0"
|
||||
V-3: main: Copied unique_mk_dir, "mdtest_tree.0.0", to topdir
|
||||
V-3: directory_test: create path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0/dir.mdtest.0.0"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0"
|
||||
V-3: create_remove_items (for loop): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/"
|
||||
V-3: create_remove_items_helper (dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1//dir.mdtest.0.1"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/"
|
||||
V-3: directory_test: stat path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0"
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0/dir.mdtest.0.0
|
||||
V-3: mdtest_stat dir : /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/dir.mdtest.0.1
|
||||
V-3: file_test: create path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0"
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0"
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0/file.mdtest.0.0"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0"
|
||||
V-3: create_remove_items (for loop): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/"
|
||||
V-3: create_remove_items_helper (non-dirs create): curr_item is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1//file.mdtest.0.1"
|
||||
V-3: create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: create_remove_items_helper: close...
|
||||
V-3: create_remove_items (start): temp_path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/"
|
||||
V-3: file_test: stat path is "/dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0"
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0/file.mdtest.0.0
|
||||
V-3: mdtest_stat file: /dev/shm/mdest/#test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/file.mdtest.0.1
|
||||
V-3: Rank 0 Line 2082 main (before display_freespace): testdirpath is '/dev/shm/mdest'
|
||||
V-3: Rank 0 Line 1506 Entering display_freespace on /dev/shm/mdest...
|
||||
V-3: Rank 0 Line 1525 Before show_file_system_size, dirpath is '/dev/shm'
|
||||
V-3: Rank 0 Line 1527 After show_file_system_size, dirpath is '/dev/shm'
|
||||
V-3: Rank 0 Line 2097 main (after display_freespace): testdirpath is '/dev/shm/mdest'
|
||||
V-3: Rank 0 Line 1647 main (create hierarchical directory loop-!collective_creates): Calling create_remove_directory_tree with '/dev/shm/mdest/test-dir.0-0'
|
||||
V-3: Rank 0 Line 1694 i 1 nstride 0
|
||||
V-3: Rank 0 Line 1704 V-3: main: Copied unique_mk_dir, 'mdtest_tree.0.0', to topdir
|
||||
V-3: Rank 0 Line 801 directory_test: create path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0'
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0/dir.mdtest.0.0'
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0'
|
||||
V-3: Rank 0 Line 483 create_remove_items (for loop): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/'
|
||||
V-3: Rank 0 Line 288 create_remove_items_helper (dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1//dir.mdtest.0.1'
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/'
|
||||
V-3: Rank 0 Line 833 stat path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0'
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0/dir.mdtest.0.0
|
||||
V-3: Rank 0 Line 588 mdtest_stat dir: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/dir.mdtest.0.1
|
||||
V-3: Rank 0 Line 1716 will file_test on mdtest_tree.0.0
|
||||
V-3: Rank 0 Line 990 Entering file_test on mdtest_tree.0.0
|
||||
V-3: Rank 0 Line 1012 file_test: create path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0'
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0'
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0/file.mdtest.0.0'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0'
|
||||
V-3: Rank 0 Line 483 create_remove_items (for loop): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/'
|
||||
V-3: Rank 0 Line 326 create_remove_items_helper (non-dirs create): curr_item is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1//file.mdtest.0.1'
|
||||
V-3: Rank 0 Line 348 create_remove_items_helper (non-collective, shared): open...
|
||||
V-3: Rank 0 Line 373 create_remove_items_helper: close...
|
||||
V-3: Rank 0 Line 457 create_remove_items (start): temp_path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/'
|
||||
V-3: Rank 0 Line 1079 file_test: stat path is '/dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0'
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0/file.mdtest.0.0
|
||||
V-3: Rank 0 Line 588 mdtest_stat file: /dev/shm/mdest/test-dir.0-0/mdtest_tree.0.0/mdtest_tree.0.1/file.mdtest.0.1
|
||||
|
|
Loading…
Reference in New Issue