Commit Graph

822 Commits (master)

Author SHA1 Message Date
Nathan Hjelm 77590f4e50 modernize configure
This commit modernizes the configury and ensures make dist
works.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2017-10-19 15:18:39 -06:00
Alfred Torrez 2541bfea7b Merge pull request #10 from ThinkParQ/master
add support for tuning BeeGFS parameters
2017-10-19 13:40:41 -06:00
Alfred Torrez 09a61163a7 Merge pull request #9 from VI4IO/master
Changed the semantics of -R to compare the data with the expected dat…
2017-10-19 13:38:05 -06:00
Oliver Steffen 738190bd79 add support for tuning BeeGFS parameters 2017-10-04 14:14:36 +02:00
Julian Kunkel 2ce37ae90a Changed the semantics of -R to compare the data with the expected data buffer.
Previously -R did run another read phase and compared if the output of both reads is identical.
-R now checks if the data matches the expected signature (as set using -G <NUMBER>), so reads data once and then
directly compares the read data with the expected buffer.
This allows to first run IOR with a write only phase, then later with a read phase that checks if the data still is correct.
Since the read can be repeated multiple times, there is no need for the old -R semantics.
2017-09-27 18:45:47 +02:00
Glenn K. Lockwood 9eac84d50a prep for tagging 3.1.0 2017-08-23 16:36:29 -07:00
Brett Kettering 4dc989d062 Merge pull request #6 from glennklockwood/master
explicitly disable O_CREAT and O_EXCL when doing read-only test
2017-04-28 14:35:19 -06:00
Glenn K. Lockwood 9457bb958b explicitly disable O_CREAT and O_EXCL when doing read-only test 2017-04-28 13:01:30 -07:00
Brett Kettering c5bbe9e996 Merge pull request #5 from glennklockwood/master
add an explicit --without-gpfs
2017-04-28 10:33:40 -06:00
Glenn K. Lockwood 86c9ab7d1c add an explicit --without-gpfs for environments with incomplete libgpfs support 2017-04-28 09:12:41 -07:00
Brett Kettering 9593c46c5d Merge pull request #4 from roblatham00/housekeeping
Housekeeping
2015-12-07 15:07:28 -07:00
Rob Latham a4a5576858 housekeeping: remove unused array
the "report an error" macros defined an array that was not used.
2015-12-07 15:40:43 -06:00
Rob Latham e371f0c605 more tolerant of whitepace in hintfile
If a hintfile contains e.g. cb_buffer_size = 1234, IOR will try to set
the hint "cb_buffer_size " (note trailing space), a hint that no MPI
implementation actually supports.
2015-12-07 15:40:01 -06:00
Brett Kettering 253d262307 Merge pull request #3 from roblatham00/add_gpfs_libs
Add gpfs libraries if needed
2015-12-07 14:39:31 -07:00
Rob Latham efac1520c3 Add gpfs libraries if needed
Commit aa604c1d38 introduced gpfs_fcntl
operations, depending if gpfs.h and gpfs_fcntl.h were found.  These
routines need the GPFS client library.  This configure check will bring
in libgpfs -- you will still need to set LDFLAGS and CPPFLAGS if gpfs is
installed in some non-default locaiton (as it is on Blue Gene).

fixes https://github.com/chaos/ior/issues/15
2015-12-07 15:30:58 -06:00
Brett Kettering 73c1183d8c Merge pull request #2 from roblatham00/memory_cleanup
assorted memory leak cleanups
2015-12-07 14:20:43 -07:00
Brett Kettering 0a450fd0a6 Merge pull request #1 from roblatham00/mpi_resource_cleanup
clean up MPI resources
2015-12-07 14:19:02 -07:00
Rob Latham d2a8aa0d2d assorted memory leak cleanups
tidy up a few stray memory allocations.  Note: these changes make
HumanReadable no longer re-entrant.
2015-12-07 15:10:30 -06:00
Rob Latham 343ad076a3 clean up MPI resources
IOR was leaking a hint structure in MPI-IO case, two groups in
common code, and when we get the info member from the file we were
losing our reference to the hints we just passed in.
2015-12-07 14:54:22 -06:00
Brett M. Kettering 18d6ed753a Added documenation for HDFS, S3, and S3_EMC APIs. 2015-09-04 12:46:35 -06:00
blair-crossman 2e09718059 Merge branch 'S3_MPU' into incompressible 2015-05-29 10:54:58 -06:00
blair-crossman fc1101e450 Added in the validation I did for incompressible. Edited the USER_GUIDE
with a section about the pitfalls of the incompressible flag.
2015-05-29 10:48:54 -06:00
blair-crossman 43ec99208b Added in the validation I did for incompressible. Edited the USER_GUIDE
with a section about the pitfalls of the incompressible flag.
2015-05-29 10:46:46 -06:00
Blair Crossman f297c7b0d5 Moved the calls to XferBuffersSetup() and XferBuffersFree to TestIoSys()
This makes it so that the buffers are only allocated once per test instead
of once per transfer.  This also removes initial buffer set-up from the
timing window.

Added a new struct into ior.h IOR_io_buffers for the buffer, checkbuffer, and readcheckbuffer
so only one pointer needed to be passed to XferBuffersSetup(), XferBuffersFree(),
and WriteOrRead().

Changed the logic in XferBuffersSetup() and XferBuffersFree() to not be transfer
dependent.  If a test includes a write check or read check the checkBuffer
 and readcheckBuffer will be created once per test in TestIoSys().  The
argument now taken by both function has changed from the access type to
a pointer to IOR_param_t.

Changed WriteOrRead to take as an additional  parameter
the IOR_io_buffers struct, since it was no longer creating those
buffers.
2015-05-27 10:24:52 -06:00
Blair Crossman 08d14e986d Added an uncompressible data packet to IOR.
Changed how the -l option works.  Now you choose the type of datapacket
-l i  			incompressible data packets
-l incompressible  	incompressible data packets
-l timestamp 		timestamped data packets
-l t			timestamped data packets
-l offset		offset data packets
-l o			offset data packets

-G option now is either the seed for the incompressible random packets
   or the timestamp, depending on the input to the -l option.

-G will no long timestamp packets on its own without the additon of -l timestamp or -l t

I kept shorter versions of the options for the sake of typing sanity.
2015-05-21 12:05:56 -06:00
Jeff Inman 37738dab26 Numerous changes to file-modes, small build-tweaks, and a tweak to aiori-S3.c
(Only rank-0 should create the bucket, if it doesn't already exist.)

Prepping this for a push (as an experimental S3 build) to github.
2015-05-19 09:36:28 -06:00
Jeffrey Thornton Inman a50da47323 Added aws-0.5.1.tgz with LANL-extensions to open-source tool-kit, for S3-related interactions.
We'll pass our changes to the maintainers of aws4c (current released rev is
0.5).  Thus, this library should eventually be available by other means.
But, until then, I'm adding it to IOR, so the S3 module will have support.
S3 also needs libxml2, but this is publicly available.
2014-12-02 11:11:02 -07:00
Jeffrey Thornton Inman 4368cc2dc4 Fixed striding/segmentation in N:N and N:1 cases, for multi-part-upload.
All ranks locally capture and accumulate Etags for the parts they are
writing.  In the N:1 cases, these are ethen collected by rank 0, via
MPI_Gather.  This is effectively an organization matching the "segmented"
layout.  If data was written segmented, then rank0 assigns part-numbers to
with appropriate offsets to correspond to what would've been used by each
rank when writing a given etag.  If data was written strided, then etags
must also be accessed in strided order, to build the XML that will be sent.

TBD: Once the total volume of etag data exceeds the size of memory at rank
0, we'll need to impose a more-sophisticated technique.  One idea is to
thread the MPI comms differently from the libcurl comms, so that multiple
gathers can be staged incrementally, while sending a single stream of XML
data tot he servers.  For example, the libcurl write-function could
interact with the MPI prog to allow the appearance of a single stream of
data.
2014-12-02 09:10:32 -07:00
Jeffrey Thornton Inman b26f308191 Algorithms 'S3', 'S3_plus', and 'S3_EMC' all available.
These are variants on S3.  S3 uses the "pure" S3 interface, e.g. using
Multi-Part-Upload.  The "plus" variant enables EMC-extensions in the aws4c
library.  This allows the N:N case to use "append", in the case where
"transfer_size" != "block_size" for IOR.  In pure S3, the N:N case will
fail, because the EMC-extensions won't be enabled, and appending (which
attempts to use the EMC byte-range tricks to do this) will throw an error.

In the S3_EMC alg, N:1 uses EMCs other byte-range tricks to write different
parts of an N:1 file, and also uses append to write the parts of an N:N
file.  Preliminary tests show these EMC extensions look to improve BW by
~20%.

I put all three algs in aiori-S3.c, because it seemed some code was getting
reused.  Not sure if that's still going to make sense after the TBD, below.

TBD: Recently realized that the "pure' S3 shouldn't be trying to use
appends for anything.  In the N:N case, it should just use MPU, within each
file.  Then, there's no need for S3_plus.  We just have S3, which does MPU
for all writes where transfer_size != block_size, and uses (standard)
byte-range reads for reading.  Then S3_EMC uses "appends for N:N writes,
and byte-range writes for N:1 writes.  This separates the code for the two
algs a little more, but we might still want them in the same file.
2014-10-29 16:04:30 -06:00
Jeffrey Thornton Inman 2f066624f0 S3 with Multi-Part Upload for N:1 is working.
Testing on our EMC ViPR installation.  Therefore, we also have available
some EMC extensions.  For example, EMC supports a special "byte-range"
header-option ("Range: bytes=-1-") which allows appending to an object.
This is not needed for N:1 (where every write creates an independent part),
but is vital for N:N (where every write is considered an append, unless
"transfer-size" is the same as "block-size").

We also use a LANL-extended implementation of aws4c 0.5, which provides
some special features, and allows greater efficiency.  That is included in
this commit as a tarball.  Untar it somewhere else and build it, to produce
a library, which is linked with IOR.  (configure with --with-S3).

TBD: EMC also supports a simpler alternative to Multi-Part Upload, which
appears to have several advantages.  We'll add that in next, but wanted to
capture this as is, before I break it.
2014-10-27 13:29:44 -06:00
Jeffrey Thornton Inman ca801fe0ec First-cut at PLFS support, integrating Brett K's code.
Builds, but not running yet.  Requires 'configure ... --with-plfs', so it seems okay to leave this in as an optional build, pending further work.
2014-09-18 11:20:37 -06:00
Jeff Inman 28c94f8875 Fixed bug in aiori-HDFS.c where it was calling "free(fd);", which is bad.
Along the way, added a bunch of diagnostic output in the HDFS calls, which
only shows up at verbosity >= 4.  I'll probably remove this stuff before
merging with master.  Also, there's an #ifdef'ed-out sleep() in place,
which I used to attach gdb to a running MPI task.  I'll get rid of that
later, too.

Also, added another hdfs-related parameter to the IOR_param_t structure;
hdfs_user_name gets the value of the USER environment-variable as the
default HDFS user for connections.  Does this cause portability problems?
2014-08-28 15:39:44 -06:00
Jeff Inman 0743eaf3fd Changed constants in aiori.h from decimal to hex
This makes for easier comparison with flags observed at runtime via gdb.
Also, it's just more ledgible this way.
2014-08-28 15:35:51 -06:00
Jeff Inman 02b6287167 Switched from ctime() to ctime_r(), for thread-safety.
I saw run in which I caught an MPI task hanging in ctime() here.  Swiching
to ctime_r() fixes that.  This function is only called form rank==0, but it
hangs anyway.
2014-08-28 15:24:58 -06:00
Jeff Inman 8a33dfb84b Don't have IOR_RDWR in open-flags, if only opening for reading or writing.
This is not a problem for most backends, but HDFS doesn't support opening
RDWR.  If you use only write-oriented or read-oriented flags on the
command-line, CheckRunSettings() will undo the default IOR_RDWR flag and
install the appropriate IOR_WRONLY or IO_RDONLY open-flags, respectively.
2014-08-25 15:51:28 -06:00
Jeff Inman 0be8973c0e Initial commit of the new aiori-HDFS module.
This provides an HDFS back-end, allowing IOR to exercise a Hadoop
Distributed File-System, plus corresponding changes throughout, to
integrate the new module into the build.  The commit compiles at LANL, but
hasn't been run yet.  We're currently waiting for some configuration on
machines that will eventually provide HDFS.  By default, configure ignores
the HDFS module.  You have to explicitly add --with-hdfs.
2014-08-13 17:02:43 -06:00
Jeff Inman b7fcafc9ec changes while trying to build on a Mac 2014-07-30 17:17:21 -06:00
Jeff Inman 894caf8f12 This is the default checkout, plus a .gitignore that includes all the files
that were created during ./bootstrap, ./configure, and make.
2014-07-28 13:31:45 -06:00
Rob Latham aa604c1d38 Teach IOR about GPFS hints (gpfs_fcntl)
GPFS supports a "gpfs_fcntl" method for hinting various things,
including "i'm about to write this block of data".  Let's see if, for
the cost of a few system calls, we can wrangle the GPFS locking system
into allowing concurrent access with less overhead. (new IOR parameter
gpfsHintAccess)

Also, drop all locks on a file immediately after open/creation in the
shared file case, since we know all processes will touch unique regions
of the file.  It may or may not be a good idea to release all file locks
after opening.  Processes will then have to re-acquire locks already
held.   (new IOR parameter gpfsReleaseToken)
2013-10-03 18:07:49 -07:00
Rob Latham 6a7ddfe60c Define H5_USER_16_API to enable HDF5 backwards compatibility
Since aiori-HDF5 uses old 1.6-style function calls (create, open, etc),
turn on the backwards compatiblity here (the one place HDF5 calls are
made).
2013-07-18 15:01:15 -07:00
Christopher J. Morrone ecf2ba5eb7 Prep for tagging 3.0.1 2012-11-21 10:15:06 -08:00
derics b33ff9d65c Fix use of uninitialized variable - localhost. 2012-11-21 10:10:30 -08:00
Robert Latham c0c1f38a51 Remove archaic Parallel-NetCDF 2 GiB limit
Parallel-NetCDF has not had a 2 GiB file size limitation for quite some time,
so we can remove this check.

fixes #6
2012-09-12 14:44:22 -07:00
Robert Latham b76238bbd5 Remove bad "static static" function declaration
Fix some obvious compile errors for IOR hdf5 driver.

fixes #5
2012-09-12 14:43:24 -07:00
Christopher J. Morrone 86df5878f6 Improve scalability of CountTasksPerNode().
Improve the scalabilit of CountTasksPerNode() by using
a Broadcast and AllReduce, rather than flooding task zero
with MPI_Send() messages.

Also change the hostname lookup function from MPI_Get_processor_name
to gethostname(), which should work on most systems that I know of,
including BlueGene/Q.
2012-09-12 14:43:24 -07:00
Christopher J. Morrone 84264657fb Remove AC_FUNC_MALLOC from configure.ac
Removing AC_FUNC_MALLOC from configure.ac, to allow compilation
on BG/P systems.  This check can fail in cross-compilation environments,
which unnecessarily forces autoconf to require an rpl_malloc()
replacement for malloc().  We could implement the conditional addition
of rpl_malloc(), but removing AC_FUNC_MALLOC is a quite work-around.

fixes #4
2012-09-12 14:43:16 -07:00
Christopher J. Morrone 15e5f648a8 Print first message earlier, so we know that MPI_Init completed 2012-09-10 10:50:18 -07:00
Christopher J. Morrone e3d1a774fa Prep for tagging 3.0.0. 2012-01-13 16:59:26 -08:00
Christopher J. Morrone 0a39cced3c Only mention Lustre parameters if lustre options were used. 2012-01-13 16:57:21 -08:00
Christopher J. Morrone f3c0c73dfd Prep for tagging 2.999.5 2012-01-13 16:03:20 -08:00