Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Build the IO-500 the same way as indicated in the parent page here.

    • Note that updating the prepare and makefile is not really required but preferred, just to provide the option of running using either APIs (POSIX and DFS) to compare performance while the same io500 binary.

  2. Create the pool the same way, but change the default oclass on the container:

Code Block
breakoutModewide
languagebash
dmg pool create -z=100% --label io500_pool
daos container create --type POSIX --pool io500_pool --label=io500_cont --file-oclass=S1 --dir-oclass=SX io500_pool io500_cont
  • When creating the container with different redundancy factors than RF:0 (e.g. by specifying --properties rd_fac:2 with daos cont create), change the file-oclass to RPnG1 and dir-oclass to RPnGX; where n depends on the redundancy factor you need: (RF:1, n=2 ; RF:2, n=3);

...

Code Block
breakoutModewide
clush --hostfile ~/path/to/cli_hosts "mkdir -p /tmp/dfuse; dfuse --pool=io500_pool --container=io500_cont -mdisable-caching /tmp/dfuse/ --disable-cachingio500_pool io500_cont"
  1. Update the io500.sh script:

    1. Change the MPI run command to add LD_PRELOAD for using the interception library and the DAOS env variables for the pfind app (make sure to update the pool, container, and dfuse mount for the DAOS_PREFIX, as well as the path for the pil4dfs interception library) (Note: the options to the mpirun command are specific to mpich, and other MPI implementation have different ways to pass environment variables; like -x for open-mpi for example):

    2. Code Block
      io500_mpirun="mpirun -genv LD_PRELOAD=/scratchbox/daos/mschaara/install/daos/lib64/libpil4dfs.so -genv DAOS_POOL=io500_pool -genv DAOS_CONT=io500_cont -genv DAOS_PREFIX=/tmp/dfuse"
    3. Pre-create the ior-easy and ior-hard directories in the setup() function to change the oclass of those to be different than the container default (need to be widely striped for better BW). Change the oclass below to an EC oclass with GX if you are using rf > 0:

    4. Code Block
      function setup(){
        local workdir="$1"
        local resultdir="$2"
        mkdir -p $workdir $resultdir
      
        mkdir $workdir/ior-easy $workdir/ior-hard
        mkdir $workdir/mdtest-easy $workdir/mdtest-hard
        daos fs set-attr --path=$workdir/ior-easy --oclass=SX
        daos fs set-attr --path=$workdir/ior-hard --oclass=SX
  2. Use an io500 ini file with the POSIX API. An example is provided below.

    1. Update the nproc for find to be the same number of procs you used in the the io500.sh script.

    2. Update resultdir to where you want to store the result tarball.

    3. For ior-easy you can always change the file-per-proc and transfer size to something that suits better your configuration.

...