Commit Graph

135 Commits (9c4bf51d8245ede4bf1411be36cfa6922b8442cd)

Author SHA1 Message Date
VinsonLeung 9c4bf51d82
Update cbif.c
fix a bug when compiling IOR in MacOS will cause error "Undefined symbols for _lseek64 and _open64"
2017-11-19 15:27:34 -06:00
Glenn K. Lockwood 3aa1f4c9b7
Merge pull request #11 from VI4IO/master
StoneWalling with WearOutPhase
2017-11-15 00:09:22 -07:00
John Bent 34cb63c1b7 Fixed the bug in the read check code 2017-10-25 07:57:50 -06:00
John Bent 53113536e4 Update README 2017-10-23 14:40:59 -06:00
Glenn K. Lockwood e1968cd4ad Merge pull request #7 from hjelmn/master
Add mdtest to IOR repo and update backends to support mdtest
2017-10-23 12:03:48 -07:00
Julian M. Kunkel 0916d432cd Removed short option parsing. 2017-10-21 12:02:03 +02:00
Julian M. Kunkel 072eb452fd Stonewalling wear-out only with long options. 2017-10-21 11:59:09 +02:00
Julian Kunkel 96e75cc832 stoneWallingWearOutIterations allows to read data back using the same number of iterations as used for the write with stoneWallingWearOut. 2017-10-20 18:14:06 +02:00
Julian Kunkel aa0b8c92d2 New stonewalling option to create a wear out phase.
Once a process hits the stonewall (timelimit), they all figure out the maximum pair read/written.
Each proces continues to read/write until the maximum number of pairs is reached, this simulates the wear out.
2017-10-20 18:02:24 +02:00
Nathan Hjelm 6ba323bb69 aiori: accept any case when selecting backend
Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2017-10-19 15:29:27 -06:00
Nathan Hjelm 0c9921dc0d aiori: remove support for plfs
Remove support for plfs by recommendation of its original author.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2017-10-19 15:29:18 -06:00
Nathan Hjelm 4dc0081628 First cut at using the IOR backends for mdtest
This commit makes changes to the AIORI backends to add support for
abstacting statfs, mkdir, rmdir, stat, and access. These new
abstractions are used by a modified mdtest. Some changes:

 - Require C99. Its 2017 and most compilers now support C11. The
   benefits of using C99 include subobject naming (for aiori backend
   structs), and fixed size integers (uint64_t). There is no reason to
   use the non-standard long long type.

 - Moved some of the aiori code into aiori.c so it can be used by both
   mdtest and ior.

 - Code cleanup of mdtest. This is mostly due to the usage of the IOR
   backends rather than a mess of #if code.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2017-10-19 15:29:12 -06:00
Nathan Hjelm aa3fb396ea Add mdtest to the ior repository
This version is from LLNL/mdtest@49f3f047c2

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2017-10-19 15:18:51 -06:00
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