Skip to content

Commit 2a17f3e

Browse files
authored
Merge pull request #231 from hpc/master
Merging master back into RC
2 parents 5271198 + d483e3b commit 2a17f3e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+5620
-2212
lines changed

.gitignore

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1+
tags
12
Makefile
23
Makefile.in
34
aclocal.m4
45
config.log
56
config.status
7+
COPYING
8+
INSTALL
69
config/compile
710
config/config.guess
811
config/config.sub
@@ -12,24 +15,35 @@ config/missing
1215
config/test-driver
1316
configure
1417
contrib/.deps/
18+
contrib/cbif
1519
contrib/Makefile
1620
contrib/Makefile.in
21+
contrib/cbif
1722
doc/Makefile
1823
doc/Makefile.in
1924
src/.deps/
25+
src/mdtest
2026
src/Makefile
2127
src/Makefile.in
2228
src/config.h
2329
src/config.h.in
2430
src/stamp-h1
31+
*[-.]mod
2532
*~
2633
NOTES.txt
2734
autom4te.cache
2835
contrib/cbif.o
2936
src/*.o
3037
src/*.i
3138
src/*.s
39+
src/*.a
3240
src/ior
41+
src/mdtest
42+
src/testlib
43+
src/test/.deps/
44+
src/test/.dirstamp
45+
src/test/lib.o
46+
build/
3347

3448
doc/doxygen/build
3549
doc/sphinx/_*/

META

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
Package: ior
2-
Version: 3.2.0
2+
Version: 3.3.0+dev
33
Release: 0

NEWS

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,19 @@
1+
Version 3.3.0+dev
2+
--------------------------------------------------------------------------------
3+
4+
New major features:
5+
6+
New minor features:
7+
8+
Bugfixes:
9+
10+
Version 3.2.1
11+
--------------------------------------------------------------------------------
12+
13+
- Fixed a memory protection bug in mdtest (Julian Kunkel)
14+
- Fixed correctness bugs in mdtest leaf-only mode (#147) (rmn1)
15+
- Fixed bug where mdtest attempted to stat uncreated files (Julian Kunkel)
16+
117
Version 3.2.0
218
--------------------------------------------------------------------------------
319

@@ -104,7 +120,7 @@ Version 2.10.1
104120
- Corrected IOR_GetFileSize() function to point to HDF5 and NCMPI versions of
105121
IOR_GetFileSize() calls
106122
- Changed the netcdf dataset from 1D array to 4D array, where the 4 dimensions
107-
are: [segmentCount][numTasksWorld][numTransfers][transferSize]
123+
are: [segmentCount][numTasks][numTransfers][transferSize]
108124
This patch from Wei-keng Liao allows for file sizes > 4GB (provided no
109125
single dimension is > 4GB).
110126
- Finalized random-capability release

README.md

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
11
# HPC IO Benchmark Repository [![Build Status](https://travis-ci.org/hpc/ior.svg?branch=master)](https://travis-ci.org/hpc/ior)
22

3-
This repo now contains both IOR and mdtest.
4-
See also NOTES.txt
3+
This repository contains the IOR and mdtest parallel I/O benchmarks. The
4+
[official IOR/mdtest documention][] can be found in the `docs/` subdirectory or
5+
on Read the Docs.
56

6-
# Building
7+
## Building
78

8-
0. If "configure" is missing from the top level directory, you
9-
probably retrieved this code directly from the repository.
10-
Run "./bootstrap".
9+
1. If `configure` is missing from the top level directory, you probably
10+
retrieved this code directly from the repository. Run `./bootstrap`
11+
to generate the configure script. Alternatively, download an
12+
[official IOR release][] which includes the configure script.
1113

12-
If your versions of the autotools are not new enough to run
13-
this script, download and official tarball in which the
14-
configure script is already provided.
14+
1. Run `./configure`. For a full list of configuration options, use
15+
`./configure --help`.
1516

16-
1. Run "./configure"
17+
2. Run `make`
1718

18-
See "./configure --help" for configuration options.
19+
3. Optionally, run `make install`. The installation prefix
20+
can be changed via `./configure --prefix=...`.
1921

20-
2. Run "make"
22+
## Testing
2123

22-
3. Optionally, run "make install". The installation prefix
23-
can be changed as an option to the "configure" script.
24+
* Run `make check` to invoke the unit tests.
25+
* More comprehensive functionality tests are included in `testing/`. These
26+
scripts will launch IOR and mdtest via MPI.
27+
* Docker scripts are also provided in `testing/docker/` to test various
28+
distributions at once.
2429

25-
# Testing
26-
27-
Run "make check" to invoke the unit test framework of Automake.
28-
29-
* To run basic functionality tests that we use for continuous integration, see ./testing/
30-
* There are docker scripts provided to test various distributions at once.
31-
* See ./testing/docker/
30+
[official IOR release]: https://github.com/hpc/ior/releases
31+
[official IOR/mdtest documention]: http://ior.readthedocs.org/

README_DAOS

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
Building
2+
----------------------
3+
4+
The DAOS library must be installed on the system.
5+
6+
./bootstrap
7+
./configure --prefix=iorInstallDir --with-daos=DIR --with-cart=DIR
8+
9+
One must specify "--with-daos=/path/to/daos/install and --with-cart". When that
10+
is specified the DAOS and DFS driver will be built.
11+
12+
The DAOS driver uses the DAOS API to open a container (or create it if it
13+
doesn't exist first) then create an array object in that container (file) and
14+
read/write to the array object using the daos Array API. The DAOS driver works
15+
with IOR only (no mdtest support yet). The file name used by IOR (passed by -o
16+
option) is hashed to an object ID that is used as the array oid.
17+
18+
The DFS (DAOS File System) driver creates an encapsulated namespace and emulates
19+
the POSIX driver using the DFS API directly on top of DAOS. The DFS driver works
20+
with both IOR and mdtest.
21+
22+
Running with DAOS API
23+
---------------------
24+
25+
ior -a DAOS [ior_options] [daos_options]
26+
27+
In the IOR options, the file name should be specified as a container uuid using
28+
"-o <container_uuid>". If the "-E" option is given, then this UUID shall denote
29+
an existing container created by a "matching" IOR run. Otherwise, IOR will
30+
create a new container with this UUID. In the latter case, one may use
31+
uuidgen(1) to generate the UUID of the new container.
32+
33+
The DAOS options include:
34+
35+
Required Options:
36+
--daos.pool <pool_uuid>: pool uuid to connect to (has to be created beforehand)
37+
--daos.svcl <pool_svcl>: pool svcl list (: separated)
38+
--daos.cont <cont_uuid>: container for the IOR files/objects (can use `uuidgen`)
39+
40+
Optional Options:
41+
--daos.group <group_name>: group name of servers with the pool
42+
--daos.chunk_size <chunk_size>: Chunk size of the array object controlling striping over DKEYs
43+
--daos.destroy flag to destory the container on finalize
44+
--daos.oclass <object_class>: specific object class for array object
45+
46+
Examples that should work include:
47+
48+
- "ior -a DAOS -w -W -o file_name --daos.pool <pool_uuid> --daos.svcl <svc_ranks>\
49+
--daos.cont <cont_uuid>"
50+
51+
- "ior -a DAOS -w -W -r -R -o file_name -b 1g -t 4m \
52+
--daos.pool <pool_uuid> --daos.svcl <svc_ranks> --daos.cont <cont_uuid>\
53+
--daos.chunk_size 1024 --daos.oclass R2"
54+
55+
Running with DFS API
56+
---------------------
57+
58+
ior -a DFS [ior_options] [dfs_options]
59+
mdtest -a DFS [mdtest_options] [dfs_options]
60+
61+
Required Options:
62+
--dfs.pool <pool_uuid>: pool uuid to connect to (has to be created beforehand)
63+
--dfs.svcl <pool_svcl>: pool svcl list (: separated)
64+
--dfs.cont <co_uuid>: container uuid that will hold the encapsulated namespace
65+
66+
Optional Options:
67+
--dfs.group <group_name>: group name of servers with the pool
68+
--dfs.chunk_size <chunk_size>: Chunk size of the files
69+
--dfs.destroy flag to destory the container on finalize
70+
--dfs.oclass <object_class>: specific object class for files
71+
72+
In the IOR options, the file name should be specified on the root dir directly
73+
since ior does not create directories and the DFS container representing the
74+
encapsulated namespace is not the same as the system namespace the user is
75+
executing from.
76+
77+
Examples that should work include:
78+
- "ior -a DFS -w -W -o /test1 --dfs.pool <pool_uuid> --dfs.svcl <svc_ranks> --dfs.cont <co_uuid>"
79+
- "ior -a DFS -w -W -r -R -o /test2 -b 1g -t 4m -C --dfs.pool <pool_uuid> --dfs.svcl <svc_ranks> --dfs.cont <co_uuid>"
80+
- "ior -a DFS -w -r -o /test3 -b 8g -t 1m -C --dfs.pool <pool_uuid> --dfs.svcl <svc_ranks> --dfs.cont <co_uuid>"
81+
82+
Running mdtest, the user needs to specify a directory with -d where the test
83+
tree will be created. Some examples:
84+
- "mdtest -a DFS -n 100 -F -D -d /bla --dfs.pool <pool_uuid> --dfs.svcl <svc_ranks> --dfs.cont <co_uuid>"
85+
- "mdtest -a DFS -n 1000 -F -C -d /bla --dfs.pool <pool_uuid> --dfs.svcl <svc_ranks> --dfs.cont <co_uuid>"
86+
- "mdtest -a DFS -I 10 -z 5 -b 2 -L -d /bla --dfs.pool <pool_uuid> --dfs.svcl <svc_ranks> --dfs.cont <co_uuid>"

configure.ac

Lines changed: 96 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,17 @@ AM_INIT_AUTOMAKE([check-news dist-bzip2 gnu no-define foreign subdir-objects])
1919
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
2020
AM_MAINTAINER_MODE
2121

22+
# Check for system-specific stuff
23+
case "${host_os}" in
24+
*linux*)
25+
;;
26+
*darwin*)
27+
CPPFLAGS="${CPPFLAGS} -D_DARWIN_C_SOURCE"
28+
;;
29+
*)
30+
;;
31+
esac
32+
2233
# Checks for programs
2334

2435
# We can't do anything without a working MPI
@@ -39,7 +50,7 @@ AC_CHECK_HEADERS([fcntl.h libintl.h stdlib.h string.h strings.h sys/ioctl.h sys/
3950
AC_TYPE_SIZE_T
4051

4152
# Checks for library functions.
42-
AC_CHECK_FUNCS([getpagesize gettimeofday memset mkdir pow putenv realpath regcomp sqrt strcasecmp strchr strerror strncasecmp strstr uname statfs statvfs])
53+
AC_CHECK_FUNCS([sysconf gettimeofday memset mkdir pow putenv realpath regcomp sqrt strcasecmp strchr strerror strncasecmp strstr uname statfs statvfs])
4354
AC_SEARCH_LIBS([sqrt], [m], [],
4455
[AC_MSG_ERROR([Math library not found])])
4556

@@ -65,19 +76,33 @@ AS_IF([test "$ac_cv_header_gpfs_h" = "yes" -o "$ac_cv_header_gpfs_fcntl_h" = "ye
6576
# Check for system capabilities
6677
AC_SYS_LARGEFILE
6778

79+
AC_DEFINE([_XOPEN_SOURCE], [700], [C99 compatibility])
80+
6881
# Check for lustre availability
6982
AC_ARG_WITH([lustre],
7083
[AS_HELP_STRING([--with-lustre],
7184
[support configurable Lustre striping values @<:@default=check@:>@])],
7285
[], [with_lustre=check])
73-
AS_IF([test "x$with_lustre" != xno], [
86+
AS_IF([test "x$with_lustre" = xyes ], [
7487
AC_CHECK_HEADERS([linux/lustre/lustre_user.h lustre/lustre_user.h], break, [
7588
if test "x$with_lustre" != xcheck -a \
7689
"x$ac_cv_header_linux_lustre_lustre_user_h" = "xno" -a \
7790
"x$ac_cv_header_lustre_lustre_user_h" = "xno" ; then
7891
AC_MSG_FAILURE([--with-lustre was given, <lustre/lustre_user.h> not found])
7992
fi
8093
])
94+
AC_CHECK_HEADERS([linux/lustre/lustreapi.h lustre/lustreapi.h],
95+
[AC_DEFINE([HAVE_LUSTRE_LUSTREAPI], [], [Lustre user API available in some shape or form])], [
96+
if test "x$with_lustre" != xcheck -a \
97+
"x$ac_cv_header_linux_lustre_lustreapi_h" = "xno" -a \
98+
"x$ac_cv_header_lustre_lustreapi_h" = "xno" ; then
99+
AC_MSG_FAILURE([--with-lustre was given, <lustre/lustreapi.h> not found])
100+
fi
101+
])
102+
])
103+
AM_CONDITIONAL([WITH_LUSTRE], [test x$with_lustre = xyes])
104+
AM_COND_IF([WITH_LUSTRE],[
105+
AC_DEFINE([WITH_LUSTRE], [], [Build wth LUSTRE backend])
81106
])
82107

83108
# IME (DDN's Infinite Memory Engine) support
@@ -172,7 +197,75 @@ AM_COND_IF([USE_RADOS_AIORI],[
172197
AC_DEFINE([USE_RADOS_AIORI], [], [Build RADOS backend AIORI])
173198
])
174199

200+
# CEPHFS support
201+
AC_ARG_WITH([cephfs],
202+
[AS_HELP_STRING([--with-cephfs],
203+
[support IO with libcephfs backend @<:@default=no@:>@])],
204+
[],
205+
[with_cephfs=no])
206+
AS_IF([test "x$with_cephfs" != xno], [
207+
CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=64 -std=gnu11"
208+
])
209+
AM_CONDITIONAL([USE_CEPHFS_AIORI], [test x$with_cephfs = xyes])
210+
AM_COND_IF([USE_CEPHFS_AIORI],[
211+
AC_DEFINE([USE_CEPHFS_AIORI], [], [Build CEPHFS backend AIORI])
212+
])
175213

214+
# DAOS Backends (DAOS and DFS) IO support require DAOS and CART/GURT
215+
AC_ARG_WITH([cart],
216+
[AS_HELP_STRING([--with-cart],
217+
[support IO with DAOS backends @<:@default=no@:>@])],
218+
[], [with_daos=no])
219+
220+
AS_IF([test "x$with_cart" != xno], [
221+
CART="yes"
222+
LDFLAGS="$LDFLAGS -L$with_cart/lib64 -Wl,--enable-new-dtags -Wl,-rpath=$with_cart/lib64"
223+
LDFLAGS="$LDFLAGS -L$with_cart/lib -Wl,--enable-new-dtags -Wl,-rpath=$with_cart/lib"
224+
CPPFLAGS="$CPPFLAGS -I$with_cart/include/"
225+
AC_CHECK_HEADERS(gurt/common.h,, [unset CART])
226+
AC_CHECK_LIB([gurt], [d_hash_murmur64],, [unset CART])
227+
])
228+
229+
AC_ARG_WITH([daos],
230+
[AS_HELP_STRING([--with-daos],
231+
[support IO with DAOS backends @<:@default=no@:>@])],
232+
[], [with_daos=no])
233+
234+
AS_IF([test "x$with_daos" != xno], [
235+
DAOS="yes"
236+
LDFLAGS="$LDFLAGS -L$with_daos/lib64 -Wl,--enable-new-dtags -Wl,-rpath=$with_daos/lib64"
237+
CPPFLAGS="$CPPFLAGS -I$with_daos/include"
238+
AC_CHECK_HEADERS(daos_types.h,, [unset DAOS])
239+
AC_CHECK_LIB([uuid], [uuid_generate],, [unset DAOS])
240+
AC_CHECK_LIB([daos_common], [daos_sgl_init],, [unset DAOS])
241+
AC_CHECK_LIB([daos], [daos_init],, [unset DAOS])
242+
AC_CHECK_LIB([dfs], [dfs_mkdir],, [unset DAOS])
243+
])
244+
245+
AM_CONDITIONAL([USE_DAOS_AIORI], [test x$DAOS = xyes])
246+
AM_COND_IF([USE_DAOS_AIORI],[
247+
AC_DEFINE([USE_DAOS_AIORI], [], [Build DAOS backends AIORI])
248+
])
249+
250+
# Gfarm support
251+
AC_MSG_CHECKING([for Gfarm file system])
252+
AC_ARG_WITH([gfarm],
253+
[AS_HELP_STRING([--with-gfarm=GFARM_ROOT],
254+
[support IO with Gfarm backend @<:@default=no@:>@])],
255+
[], [with_gfarm=no])
256+
AC_MSG_RESULT([$with_gfarm])
257+
AM_CONDITIONAL([USE_GFARM_AIORI], [test x$with_gfarm != xno])
258+
if test x$with_gfarm != xno; then
259+
AC_DEFINE([USE_GFARM_AIORI], [], [Build Gfarm backend AIORI])
260+
case x$with_gfarm in
261+
xyes) ;;
262+
*)
263+
CPPFLAGS="$CPPFLAGS -I$with_gfarm/include"
264+
LDFLAGS="$LDFLAGS -L$with_gfarm/lib" ;;
265+
esac
266+
AC_CHECK_LIB([gfarm], [gfarm_initialize],, [AC_MSG_ERROR([libgfarm not found])])
267+
AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec])
268+
fi
176269

177270
# aws4c is needed for the S3 backend (see --with-S3, below).
178271
# Version 0.5.2 of aws4c is available at https://github.com/jti-lanl/aws4c.git
@@ -245,12 +338,6 @@ Consider --with-aws4c=, CPPFLAGS, LDFLAGS, etc])
245338
])
246339

247340

248-
249-
250-
251-
252-
253-
254341
# Enable building "IOR", in all capitals
255342
AC_ARG_ENABLE([caps],
256343
[AS_HELP_STRING([--enable-caps],
@@ -261,6 +348,7 @@ AM_CONDITIONAL([USE_CAPS], [test x$enable_caps = xyes])
261348

262349
AC_CONFIG_FILES([Makefile
263350
src/Makefile
351+
src/test/Makefile
264352
contrib/Makefile
265353
doc/Makefile])
266354
AC_OUTPUT

0 commit comments

Comments
 (0)