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.master
parent
a50da47323
commit
37738dab26
@ -0,0 +1,82 @@
|
||||
[This is some help for building with experimental S3 support.]
|
||||
|
||||
|
||||
--- BUILDING
|
||||
|
||||
module load openmpi-gnu
|
||||
|
||||
./bootstrap
|
||||
|
||||
|
||||
# configure must be able to find libaws4c, libxml2, libcurl, libcrypto, etc.
|
||||
# On some machines, the libxml2 include files are in:
|
||||
#
|
||||
# /usr/include/libxml2
|
||||
#
|
||||
# which is not a standard include location, so we must define CPPFLAGS
|
||||
# to put that path in the include path. Do this:
|
||||
#
|
||||
# setenv CPPFLAGS -I/usr/include/libxml2
|
||||
# [or add "CPPFLAGS=-I/usr/include/libxml2" to the end of the configure command]
|
||||
#
|
||||
# Use the --with-aws4c=DIR to point to the path where your libaws4c library
|
||||
# sits.
|
||||
#
|
||||
# Use the --prefix=iorInstallDir to point to the path where you want IOR
|
||||
# to install all the files it builds during the "make" process.
|
||||
|
||||
./configure --prefix=iorInstallDir --with-S3 [ --with-aws4c=DIR ]
|
||||
|
||||
|
||||
# Here is an example configure-command invocation, for building with the
|
||||
# S3-targeting extensions, which require access to additional libraries
|
||||
# mentioned above. This will probably not work verbatim on your
|
||||
# installation, because libraries will be installed in different locations,
|
||||
# but it could help you to understand what is needed.
|
||||
|
||||
./configure --prefix=`pwd`/installed \
|
||||
--with-S3 \
|
||||
--with-aws4c=`pwd`/aws4c \
|
||||
LDFLAGS="-L/usr/lib64 -L`pwd`/libxml2-2.9.1/installed/lib" \
|
||||
CFLAGS="-I`pwd`/libxml2-2.9.1/installed/include/libxml2"
|
||||
|
||||
|
||||
# 14-May-2015:
|
||||
# To change the target of the experiment, there is an #if block from line
|
||||
# 284-309. The "if" portion is activated by putting a 1 as the argument
|
||||
# instead of a 0. In that case, the experiment will use the four ECS nodes
|
||||
# directly, splitting the load up between all four.
|
||||
#
|
||||
# If the #if argument is 0, then the "#else" portion is executed. In this
|
||||
# case you can use the load balancer, haproxy.ccstar.lanl.gov, by using
|
||||
# the IP 10.143.0.1:80. If you want to use one of the ECS nodes directly
|
||||
# us the IP 10.140.0.[15-17]:9020.
|
||||
#
|
||||
# To specify the bucket where the experiment file(s) will go, you need
|
||||
# to set that with the "const char* bucket_name declaration. There are
|
||||
# a couple options at lines 207-208.
|
||||
|
||||
|
||||
make
|
||||
make install
|
||||
|
||||
|
||||
-- RUNNING (various options ...)
|
||||
|
||||
# llogin -np 4
|
||||
msub -IX -l nodes=4:ppn=4,walltime=11:00:00
|
||||
|
||||
|
||||
|
||||
# For debugging, run on 1 node, -vvvv turns on detailed curl debugging
|
||||
mpirun -np 1 MY_INSTALL_DIR/bin/ior -a S3 -o test_`date +"%Y%m%d_%H%M%S"` -vvvv -t1k -b1k
|
||||
|
||||
# this defaults the number of processors
|
||||
mpirun MY_INSTALL_DIRbin/ior -a S3 -C -o test_`date +"%Y%m%d_%H%M%S"`
|
||||
|
||||
# this does one parallel run, putting a heavy load on the server [assumes bash]
|
||||
mpirun -npernode 8 MY_INSTALL_DIR/bin/ior -a S3_EMC -C -o test_`date +"%Y%m%d_%H%M%S"` \
|
||||
-b $(( 128 * 1024 * 1024 )) \
|
||||
-t $(( 128 * 1024 * 1024 )) \
|
||||
-i 1
|
||||
|
@ -1,90 +0,0 @@
|
||||
-- fix indentation in all source files
|
||||
|
||||
Do not use some fixed-width spacing. Use tabs. Someday, editors will
|
||||
distinguish between "indentation" (which should be done with tabs), and
|
||||
"alignment" which should be done with spaces. That way, you choose your
|
||||
own indentation, and everything just works.
|
||||
|
||||
|
||||
-- change "HDFS" everywhere to "HDFs" (or something)
|
||||
|
||||
for easier distinction from "HDF5"
|
||||
|
||||
|
||||
-- maybe parse_options.c should just parse options, not create tests.
|
||||
|
||||
The latter brings an ugly mix of calls across files. Fixing involves
|
||||
having parse routines just set flags in params, then, in ior.c, someone
|
||||
checks flags and calls test-creation stuff. Should also move
|
||||
test-creation to ior.c [Results creation, too.]
|
||||
|
||||
|
||||
-- collect various special-purpose parameter-fixing into one place.
|
||||
|
||||
see e.g. CheckRunSettings(). Should each aiori have a "fix the
|
||||
parameters" generic function, as well? This could be called at a known
|
||||
time, allowing incompatibilities to be handled in a regular way.
|
||||
|
||||
|
||||
-- does MPIIO_GetFileSize() have to be in aiori.h?
|
||||
|
||||
|
||||
-- change integers to 0x'..', in aiori.h
|
||||
|
||||
|
||||
-- add hdfs-related command-line options
|
||||
|
||||
(e.g. HDFS user-name, replica-count, etc.)
|
||||
see ior.h
|
||||
see init_IOR_Param_t(), in ior.c
|
||||
|
||||
|
||||
-- is the getenv() I added to ior.c a problem for Win support?
|
||||
|
||||
|
||||
-- see "TBD" notes in src/Makefile.am
|
||||
|
||||
(1) for HDFS:
|
||||
|
||||
# TBD: figure out how to find this from the corresponding bin/ dir in $PATH
|
||||
# or pick an environment var to use (and set it in modulefiles)
|
||||
# or provide a config-flag, to set a variable we use here
|
||||
|
||||
|
||||
(2) for PLFS:
|
||||
|
||||
# TBD: modulefiles don't add PLFS_VER to env, but you can find it embedded in
|
||||
# $PLFS_HOME. configure.ac should extract this for us. Then we should
|
||||
# add -D... to ior_CPPFLAGS, here. Then aiori-PLFS.c can conditionalize
|
||||
# compilation of calls that vary according to PLFS version.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
S3
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
|
||||
-- RemoveFile (ior.c) calls POSIX "access" to see whether file exists
|
||||
|
||||
This is called between iterations, when iterations > 1. Should use
|
||||
backend->GetFileSize(), or something, and catch errors. Or the aiori
|
||||
struct could be extended to include a lower-level "stat" that could
|
||||
return 0 for non-existent files.
|
||||
|
||||
|
||||
-- add 'init' and 'exit' functions to aiori struct
|
||||
|
||||
This would allow HDFS/S3/etc to do their one-time initializations and
|
||||
cleanups. Call from top-level in ior.c
|
||||
|
||||
Something also needed in AioriBind().
|
||||
|
||||
|
||||
-- ior should assert the IOR_TRUNC flag in params, when opening?
|
||||
|
||||
The CREAT flag does not reset a file, if it already exists, when opening
|
||||
for write. [But ... wait. If you're opening for WRITE, you should be
|
||||
resetting it anyhow. D'oh.]
|
Binary file not shown.
Loading…
Reference in New Issue