diff --git a/README_DAOS b/README_DAOS index ba4fc3e..409923d 100644 --- a/README_DAOS +++ b/README_DAOS @@ -1,25 +1,55 @@ -Building with DAOS API +Building ---------------------- -At step 1 above, one must specify "--with-daos". If the DAOS -headers and libraries are not installed at respective system -default locations, then one may also needs to set CPPFLAGS and -LDFLAGS accordingly. +The DAOS library must be installed on the system. + +./bootsrap +./configure --prefix=iorInstallDir --with-daos=DIR + +One must specify "--with-daos=/path/to/daos/install". When that is specified +the DAOS and DFS driver will be built. + +The DAOS driver uses the DAOS API to create a container (file) and update/fetch +an object to the container using the daos object API. The DAOS driver works with +IOR only (no mdtest support yet). + +The DFS (DAOS File System) driver creates an encapsulated namespace and emulates +the POSIX driver using the DFS API directly on top of DAOS. The DFS driver works +with both IOR and mdtest. Running with DAOS API --------------------- -One must specify an existing pool using "-O -daospool=". IOR must be launched in a way that -attaches the IOR process group to the DAOS server process group. +Driver specific options are specified at the end after "--". For example: -One must also specify a container UUID using "-o -". If the "-E" option is given, then this UUID +ior -a DAOS [ior_options] -- [daos_options] + +In the IOR options, the file name should be specified as a container uuid using +"-o ". If the "-E" option is given, then this UUID shall denote an existing container created by a "matching" IOR run. Otherwise, IOR will create a new container with this UUID. In the latter case, one may use uuidgen(1) to generate the UUID of the new container. +The DAOS options include: + +Required Options: +-p : pool uuid to connect to (has to be created beforehand) +-v : pool svcl list (: separated) + +Optional Options: +-g : group name of servers with the pool +-r : object record size for IO +-s +-c +-m +-a : number of concurrent async IOs +-w : Flag to indicate no commit, just update +-e +-t : wait for specific epoch before read +-k : flag to kill a rank during IO +-o : specific object class + When benchmarking write performance, one likely do not want "-W", which causes the write phase to do one additional memory copy for every I/O. This is due to IOR's assumption that when a @@ -32,17 +62,47 @@ all combinations of options are supported. Examples that should work include: - - "ior -a DAOS -w -W -o -O - daospool=,daospoolsvc=" writes into a new container - and verifies the data, using default daosRecordSize, transferSize, - daosStripeSize, blockSize, daosAios, etc. + - "ior -a DAOS -w -W -o -- -p -v " + writes into a new container and verifies the data, using default + daosRecordSize, transferSize, daosStripeSize, blockSize, daosAios, etc. - - "ior -a DAOS -w -W -r -R -o -b 1g -t 4m -C -O - daospool=,daospoolsvc=,daosrecordsize=1m, - daosstripesize=4m, daosstripecount=256,daosaios=8" does all IOR tests and - shifts ranks during checkWrite and checkRead. + - "ior -a DAOS -w -W -r -R -o -b 1g -t 4m -C -- + -p -v -r 1m -s 4m -c 256 -a 8" + does all IOR tests and shifts ranks during checkWrite and checkRead. - - "ior -a DAOS -w -r -o -b 8g -t 1m -C -O - daospool=,daospoolsvc=,daosrecordsize=1m,daosstripesize=4m, - daosstripecount=256,daosaios=8" may be a base to be tuned for performance - benchmarking. + - "ior -a DAOS -w -r -o -b 8g -t 1m -C -- + -p -v -r 1m -s 4m -c 256 -a 8" + may be a base to be tuned for performance benchmarking. + + +Running with DFS API +--------------------- + +Driver specific options are specified at the end after "--". For example: + +ior -a DFS [ior_options] -- [dfs_options] +mdtest -a DFS [mdtest_options] -- [dfs_options] + +Required Options: +-p : pool uuid to connect to (has to be created beforehand) +-v : pool svcl list (: separated) +-c : container uuid that will hold the encapsulated namespace + +Optional Options: +-g : group name of servers with the pool + +In the IOR options, the file name should be specified on the root dir directly +since ior does not create directories and the DFS container representing the +encapsulated namespace is not the same as the system namespace the user is +executing from. + +Examples that should work include: + - "ior -a DFS -w -W -o /test1 -- -p -v -c " + - "ior -a DFS -w -W -r -R -o /test2 -b 1g -t 4m -C -- -p -v -c " + - "ior -a DFS -w -r -o /test3 -b 8g -t 1m -C -- -p -v -c " + +Running mdtest, the user needs to specify a directory with -d where the test +tree will be created. Some examples: + - "mdtest -a DFS -n 100 -F -D -d /bla -- -p -v -c " + - "mdtest -a DFS -n 1000 -F -C -d /bla -- -p -v -c " + - "mdtest -a DFS -I 10 -z 5 -b 2 -L -d /bla -- -p -v -c " diff --git a/src/aiori-DAOS.c b/src/aiori-DAOS.c index 3aadba9..e3830d9 100644 --- a/src/aiori-DAOS.c +++ b/src/aiori-DAOS.c @@ -77,10 +77,10 @@ static option_help options [] = { {'c', "daosStripeCount", "Stripe Count", OPTION_OPTIONAL_ARGUMENT, 'u', &o.daosStripeCount}, {'m', "daosStripeMax", "Max Stripe",OPTION_OPTIONAL_ARGUMENT, 'u', &o.daosStripeMax}, {'a', "daosAios", "Concurrent Async IOs",OPTION_OPTIONAL_ARGUMENT, 'd', &o.daosAios}, - {'w', "daosWriteOnly", "Write Only, no commit",OPTION_OPTIONAL_ARGUMENT, 'd', &o.daosWriteOnly}, + {'w', "daosWriteOnly", "Write Only, no commit",OPTION_FLAG, 'd', &o.daosWriteOnly}, {'e', "daosEpoch", "Epoch Number to Access",OPTION_OPTIONAL_ARGUMENT, 'u', &o.daosEpoch}, {'t', "daosWait", "Epoch to wait for before read",OPTION_OPTIONAL_ARGUMENT, 'u', &o.daosWait}, - {'k', "daosKill", "Kill target while running",OPTION_OPTIONAL_ARGUMENT, 'd', &o.daosKill}, + {'k', "daosKill", "Kill target while running",OPTION_FLAG, 'd', &o.daosKill}, {'o', "daosObjectClass", "object class", OPTION_OPTIONAL_ARGUMENT, 's', &o.daosObjectClass}, LAST_OPTION }; diff --git a/src/aiori-DFS.c b/src/aiori-DFS.c index f33ed94..aead758 100755 --- a/src/aiori-DFS.c +++ b/src/aiori-DFS.c @@ -63,7 +63,7 @@ static struct dfs_options o = { static option_help options [] = { {'p', "pool", "DAOS pool uuid", OPTION_REQUIRED_ARGUMENT, 's', & o.pool}, - {'s', "svcl", "DAOS pool SVCL", OPTION_REQUIRED_ARGUMENT, 's', & o.svcl}, + {'v', "svcl", "DAOS pool SVCL", OPTION_REQUIRED_ARGUMENT, 's', & o.svcl}, {'g', "group", "DAOS server group", OPTION_OPTIONAL_ARGUMENT, 's', & o.group}, {'c', "cont", "DFS container uuid", OPTION_REQUIRED_ARGUMENT, 's', & o.cont}, LAST_OPTION