- io500
-
#!/bin/bash
#
# INSTRUCTIONS:
# Edit this file as needed for your machine.
# This simplified version is just for running on a single node.
# It is a simplified version of the site-configs/sandia/startup.sh which include SLURM directives.
# Most of the variables set in here are needed for io500_fixed.sh which gets sourced at the end of this.
# Please also edit 'extra_description' function.
set -euo pipefail # better error handling
# turn these to True successively while you debug and tune this benchmark.
# for each one that you turn to true, go and edit the appropriate function.
# to find the function name, see the 'main' function.
# These are listed in the order that they run.
io500_run_ior_easy="True" # does the write phase and enables the subsequent read
io500_run_md_easy="True" # does the creat phase and enables the subsequent stat
io500_run_ior_hard="True" # does the write phase and enables the subsequent read
io500_run_md_hard="True" # does the creat phase and enables the subsequent read
io500_run_find="True"
io500_run_ior_easy_read="True"
io500_run_md_easy_stat="True"
io500_run_ior_hard_read="True"
io500_run_md_hard_stat="True"
io500_run_md_hard_read="True"
io500_run_md_easy_delete="True" # turn this off if you want to just run find by itself
io500_run_md_hard_delete="True" # turn this off if you want to just run find by itself
io500_run_mdreal="False" # this one is optional
io500_cleanup_workdir="False" # this flag is currently ignored. You'll need to clean up your data files manually if you want to.
# to run this benchmark, find and edit each of these functions.
# please also edit 'extra_description' function to help us collect the required data.
function main {
setup_directories
setup_paths
setup_ior_easy # required if you want a complete score
setup_ior_hard # required if you want a complete score
setup_mdt_easy # required if you want a complete score
setup_mdt_hard # required if you want a complete score
setup_find # required if you want a complete score
setup_mdreal # optional
run_benchmarks
}
function setup_directories {
# set directories for where the benchmark files are created and where the results will go.
# If you want to set up stripe tuning on your output directories or anything similar, then this is good place to do it.
timestamp=`date +%Y.%m.%d-%H.%M.%S` # create a uniquifier
io500_workdir=$PWD/datafiles/ # directory where the data will be stored
io500_result_dir=$PWD/results/$timestamp # the directory where the output results will be kept
rm -rf $io500_workdir
mkdir -p $io500_workdir $io500_result_dir
mkdir -p $io500_workdir/ior_hard/
lfs setstripe --stripe-count 124 $io500_workdir/ior_hard/IOR_file || true
# Lustre 01
}
function setup_paths {
# Set the paths to the binaries. If you ran ./utilities/prepare.sh successfully, then binaries are in ./bin/
io500_ior_cmd=$PWD/bin/ior
io500_mdtest_cmd=$PWD/bin/mdtest
io500_mdreal_cmd=$PWD/bin/md-real-io
io500_mpirun="srun"
io500_mpiargs="--ntasks-per-node=12 --distribution=block"
}
function setup_ior_easy {
io500_ior_easy_params="-t 2048k -b 20g -F -a MPIIO" # 2M writes, 2 GB per proc, file per proc
}
function setup_mdt_easy {
io500_mdtest_easy_params="-u -L" # unique dir per thread, files only at leaves
io500_mdtest_easy_files_per_proc=3300
}
function setup_ior_hard {
io500_ior_hard_writes_per_proc="6000 -a MPIIO -E"
}
function setup_mdt_hard {
io500_mdtest_hard_files_per_proc=3300
}
function setup_find {
#
# setup the find command. This is an area where innovation is allowed.
# There are three default options provided. One is a serial find, one is python
# parallel version, one is C parallel version. Current default is to use serial.
# But it is very slow. We recommend to either customize or use the C parallel version.
# For GPFS, we recommend to use the provided mmfind wrapper described below.
# Instructions below.
# If a custom approach is used, please provide enough info so others can reproduce.
# the serial version that should run (SLOWLY) without modification
io500_find_mpi="True"
io500_find_cmd="$PWD/bin/pfind"
io500_find_cmd_args="-s 3 -r $io500_result_dir/pfind_results"
# a parallel version in C, the -s adds a stonewall
# for a real run, turn -s (stonewall) off or set it at 300 or more
# to prepare this (assuming you've run ./utilities/prepare.sh already):
# > cd build/pfind
# > ./prepare.sh
# > ./compile.sh
# > cp pfind ../../bin/
# If you use io500_find_mpi="True", then this will run with the same
# number of MPI nodes and ranks as the other phases.
# If you prefer another number, and fewer might be better here,
# Then you can set io500_find_mpi to be "False" and write a wrapper
# script for this which sets up MPI as you would like. Then change
# io500_find_cmd to point to your wrapper script.
#io500_find_mpi="True"
#io500_find_cmd="$PWD/bin/pfind"
#io500_find_cmd_args="-s 3 -r $io500_result_dir/pfind_results"
# for GPFS systems, you should probably use the provided mmfind wrapper
# if you used ./utilities/prepare.sh, you'll find this wrapper in ./bin/mmfind.sh
#io500_find_mpi="False"
#io500_find_cmd="$PWD/bin/mmfind.sh"
#io500_find_cmd_args=""
}
function setup_mdreal {
io500_mdreal_params="-P=5000 -I=1000"
}
function run_benchmarks {
# Important: source the io500_fixed.sh script. Do not change it. If you discover
# a need to change it, please email the mailing list to discuss
source ./utilities/io500_fixed.sh 2>&1 | tee $io500_result_dir/io-500-summary.$timestamp.txt
}
# Add key/value pairs defining your system
# Feel free to add extra ones if you'd like
function extra_description {
io500_info_system_name='btlogin1' # e.g. Oakforest-PACS
io500_info_institute_name='DKRZ' # e.g. JCAHPC
io500_info_modules="module add intel mxm/3.4.3082 fca/2.5.2431 bullxmpi_mlx/bullxmpi_mlx-1.2.9.2"
}
main
- ior_easy_read
-
IOR-3.1.0: MPI Coordinated Test of Parallel I/O
ior WARNING: fsync() only available in POSIX/MMAP. Using value of 0.
Began: Sat May 12 14:23:30 2018
Command line used: /home/dkrz/k202079/work/io-500/io-500-dev/bin/ior -r -R -C -Q 1 -g -G 27 -k -e -t 2048k -b 20g -F -a MPIIO -o /home/dkrz/k202079/work/io-500/io-500-dev/datafiles//ior_easy/ior_file_easy
Machine: Linux m20036
Test 0 started: Sat May 12 14:23:30 2018
Summary:
api = MPIIO (version=2, subversion=1)
test filename = /home/dkrz/k202079/work/io-500/io-500-dev/datafiles//ior_easy/ior_file_easy
access = file-per-process
ordering in a file = sequential offsets
ordering inter file= constant task offsets = 1
clients = 1200 (12 per node)
repetitions = 1
xfersize = 2 MiB
blocksize = 20 GiB
aggregate filesize = 24000 GiB
access bw(MiB/s) block(KiB) xfer(KiB) open(s) wr/rd(s) close(s) total(s) iter
------ --------- ---------- --------- -------- -------- -------- -------- ----
read 126356 20971520 2048.00 0.154707 194.08 0.407477 194.50 0
Max Read: 126355.61 MiB/sec (132493.46 MB/sec)
Summary of all tests:
Operation Max(MiB) Min(MiB) Mean(MiB) StdDev Max(OPs) Min(OPs) Mean(OPs) StdDev Mean(s) Test# #Tasks tPN reps fPP reord reordoff reordrand seed segcnt blksiz xsize aggsize API RefNum
read 126355.61 126355.61 126355.61 0.00 63177.81 63177.81 63177.81 0.00 194.49868 0 1200 12 1 1 1 1 0 0 1 21474836480 2097152 25769803776000 MPIIO 0
Finished: Sat May 12 14:26:48 2018
- ior_easy_write
-
IOR-3.1.0: MPI Coordinated Test of Parallel I/O
ior WARNING: fsync() only available in POSIX/MMAP. Using value of 0.
Began: Sat May 12 13:55:22 2018
Command line used: /home/dkrz/k202079/work/io-500/io-500-dev/bin/ior -w -C -Q 1 -g -G 27 -k -e -t 2048k -b 20g -F -a MPIIO -o /home/dkrz/k202079/work/io-500/io-500-dev/datafiles//ior_easy/ior_file_easy
Machine: Linux m20036
Test 0 started: Sat May 12 13:55:22 2018
Summary:
api = MPIIO (version=2, subversion=1)
test filename = /home/dkrz/k202079/work/io-500/io-500-dev/datafiles//ior_easy/ior_file_easy
access = file-per-process
ordering in a file = sequential offsets
ordering inter file= constant task offsets = 1
clients = 1200 (12 per node)
repetitions = 1
xfersize = 2 MiB
blocksize = 20 GiB
aggregate filesize = 24000 GiB
access bw(MiB/s) block(KiB) xfer(KiB) open(s) wr/rd(s) close(s) total(s) iter
------ --------- ---------- --------- -------- -------- -------- -------- ----
write 41897 20971520 2048.00 0.362494 586.15 0.174346 586.58 0
Max Write: 41897.31 MiB/sec (43932.52 MB/sec)
Summary of all tests:
Operation Max(MiB) Min(MiB) Mean(MiB) StdDev Max(OPs) Min(OPs) Mean(OPs) StdDev Mean(s) Test# #Tasks tPN reps fPP reord reordoff reordrand seed segcnt blksiz xsize aggsize API RefNum
write 41897.31 41897.31 41897.31 0.00 20948.66 20948.66 20948.66 0.00 586.57700 0 1200 12 1 1 1 1 0 0 1 21474836480 2097152 25769803776000 MPIIO 0
Finished: Sat May 12 14:05:24 2018
- ior_hard_read
-
IOR-3.1.0: MPI Coordinated Test of Parallel I/O
ior WARNING: fsync() only available in POSIX/MMAP. Using value of 0.
Began: Sat May 12 14:28:34 2018
Command line used: /home/dkrz/k202079/work/io-500/io-500-dev/bin/ior -r -R -C -Q 1 -g -G 27 -k -e -t 47008 -b 47008 -s 6000 -a MPIIO -E -o /home/dkrz/k202079/work/io-500/io-500-dev/datafiles//ior_hard/IOR_file
Machine: Linux m20036
Test 0 started: Sat May 12 14:28:34 2018
Summary:
api = MPIIO (version=2, subversion=1)
test filename = /home/dkrz/k202079/work/io-500/io-500-dev/datafiles//ior_hard/IOR_file
access = single-shared-file
ordering in a file = sequential offsets
ordering inter file= constant task offsets = 1
clients = 1200 (12 per node)
repetitions = 1
xfersize = 47008 bytes
blocksize = 47008 bytes
aggregate filesize = 315.21 GiB
access bw(MiB/s) block(KiB) xfer(KiB) open(s) wr/rd(s) close(s) total(s) iter
------ --------- ---------- --------- -------- -------- -------- -------- ----
read 5249 45.91 45.91 15.35 46.22 0.084992 61.49 0
Max Read: 5249.23 MiB/sec (5504.21 MB/sec)
Summary of all tests:
Operation Max(MiB) Min(MiB) Mean(MiB) StdDev Max(OPs) Min(OPs) Mean(OPs) StdDev Mean(s) Test# #Tasks tPN reps fPP reord reordoff reordrand seed segcnt blksiz xsize aggsize API RefNum
read 5249.23 5249.23 5249.23 0.00 117090.98 117090.98 117090.98 0.00 61.49065 0 1200 12 1 0 1 1 0 0 6000 47008 47008 338457600000 MPIIO 0
Finished: Sat May 12 14:29:35 2018
- ior_hard_write
-
IOR-3.1.0: MPI Coordinated Test of Parallel I/O
ior WARNING: fsync() only available in POSIX/MMAP. Using value of 0.
Began: Sat May 12 14:11:20 2018
Command line used: /home/dkrz/k202079/work/io-500/io-500-dev/bin/ior -w -C -Q 1 -g -G 27 -k -e -t 47008 -b 47008 -s 6000 -a MPIIO -E -o /home/dkrz/k202079/work/io-500/io-500-dev/datafiles//ior_hard/IOR_file
Machine: Linux m20036
Test 0 started: Sat May 12 14:11:20 2018
Summary:
api = MPIIO (version=2, subversion=1)
test filename = /home/dkrz/k202079/work/io-500/io-500-dev/datafiles//ior_hard/IOR_file
access = single-shared-file
ordering in a file = sequential offsets
ordering inter file= constant task offsets = 1
clients = 1200 (12 per node)
repetitions = 1
xfersize = 47008 bytes
blocksize = 47008 bytes
aggregate filesize = 315.21 GiB
access bw(MiB/s) block(KiB) xfer(KiB) open(s) wr/rd(s) close(s) total(s) iter
------ --------- ---------- --------- -------- -------- -------- -------- ----
write 1022.05 45.91 45.91 3.32 312.53 0.081773 315.82 0
Max Write: 1022.05 MiB/sec (1071.69 MB/sec)
Summary of all tests:
Operation Max(MiB) Min(MiB) Mean(MiB) StdDev Max(OPs) Min(OPs) Mean(OPs) StdDev Mean(s) Test# #Tasks tPN reps fPP reord reordoff reordrand seed segcnt blksiz xsize aggsize API RefNum
write 1022.05 1022.05 1022.05 0.00 22798.09 22798.09 22798.09 0.00 315.81591 0 1200 12 1 0 1 1 0 0 6000 47008 47008 338457600000 MPIIO 0
Finished: Sat May 12 14:16:36 2018
- mdtest_easy_delete
-
-- started at 05/12/2018 14:31:30 --
mdtest-1.9.3 was launched with 1200 total task(s) on 100 node(s)
Command line used: /home/dkrz/k202079/work/io-500/io-500-dev/bin/mdtest -r -F -d /home/dkrz/k202079/work/io-500/io-500-dev/datafiles//mdt_easy -n 3300 -u -L
Path: /mnt/lustre01/work/k20200/k202079/io-500/io-500-dev/datafiles
FS: 20999.6 TiB Used FS: 93.0% Inodes: 5974.4 Mi Used Inodes: 6.1%
1200 tasks, 3960000 files
SUMMARY: (of 1 iterations)
Operation Max Min Mean Std Dev
--------- --- --- ---- -------
File creation : 0.000 0.000 0.000 0.000
File stat : 0.000 0.000 0.000 0.000
File read : 0.000 0.000 0.000 0.000
File removal : 5252.307 5252.307 5252.307 0.000
Tree creation : 0.000 0.000 0.000 0.000
Tree removal : 3.674 3.674 3.674 0.000
-- finished at 05/12/2018 14:44:05 --
- mdtest_easy_stat
-
-- started at 05/12/2018 14:26:59 --
mdtest-1.9.3 was launched with 1200 total task(s) on 100 node(s)
Command line used: /home/dkrz/k202079/work/io-500/io-500-dev/bin/mdtest -T -F -d /home/dkrz/k202079/work/io-500/io-500-dev/datafiles//mdt_easy -n 3300 -u -L
Path: /mnt/lustre01/work/k20200/k202079/io-500/io-500-dev/datafiles
FS: 20999.6 TiB Used FS: 93.0% Inodes: 5974.4 Mi Used Inodes: 6.1%
1200 tasks, 3960000 files
SUMMARY: (of 1 iterations)
Operation Max Min Mean Std Dev
--------- --- --- ---- -------
File creation : 0.000 0.000 0.000 0.000
File stat : 46838.808 46838.808 46838.808 0.000
File read : 0.000 0.000 0.000 0.000
File removal : 0.000 0.000 0.000 0.000
Tree creation : 0.000 0.000 0.000 0.000
Tree removal : 0.000 0.000 0.000 0.000
-- finished at 05/12/2018 14:28:24 --
- mdtest_easy_write
-
-- started at 05/12/2018 14:05:34 --
mdtest-1.9.3 was launched with 1200 total task(s) on 100 node(s)
Command line used: /home/dkrz/k202079/work/io-500/io-500-dev/bin/mdtest -C -F -d /home/dkrz/k202079/work/io-500/io-500-dev/datafiles//mdt_easy -n 3300 -u -L
Path: /mnt/lustre01/work/k20200/k202079/io-500/io-500-dev/datafiles
FS: 20999.6 TiB Used FS: 93.0% Inodes: 5974.4 Mi Used Inodes: 6.0%
1200 tasks, 3960000 files
SUMMARY: (of 1 iterations)
Operation Max Min Mean Std Dev
--------- --- --- ---- -------
File creation : 11770.644 11770.644 11770.644 0.000
File stat : 0.000 0.000 0.000 0.000
File read : 0.000 0.000 0.000 0.000
File removal : 0.000 0.000 0.000 0.000
Tree creation : 15.782 15.782 15.782 0.000
Tree removal : 0.000 0.000 0.000 0.000
-- finished at 05/12/2018 14:11:11 --
- mdtest_hard_delete
-
-- started at 05/12/2018 14:47:55 --
mdtest-1.9.3 was launched with 1200 total task(s) on 100 node(s)
Command line used: /home/dkrz/k202079/work/io-500/io-500-dev/bin/mdtest -r -t -F -w 3901 -e 3901 -d /home/dkrz/k202079/work/io-500/io-500-dev/datafiles//mdt_hard -n 3300
Path: /mnt/lustre01/work/k20200/k202079/io-500/io-500-dev/datafiles
FS: 20999.6 TiB Used FS: 93.0% Inodes: 5974.4 Mi Used Inodes: 6.0%
1200 tasks, 3960000 files
SUMMARY: (of 1 iterations)
Operation Max Min Mean Std Dev
--------- --- --- ---- -------
File creation : 0.000 0.000 0.000 0.000
File stat : 0.000 0.000 0.000 0.000
File read : 0.000 0.000 0.000 0.000
File removal : 6334.661 6334.661 6334.661 0.000
Tree creation : 0.000 0.000 0.000 0.000
Tree removal : 5.843 5.843 5.843 0.000
-- finished at 05/12/2018 14:58:21 --
- mdtest_hard_read
-
-- started at 05/12/2018 14:44:16 --
mdtest-1.9.3 was launched with 1200 total task(s) on 100 node(s)
Command line used: /home/dkrz/k202079/work/io-500/io-500-dev/bin/mdtest -E -t -F -w 3901 -e 3901 -d /home/dkrz/k202079/work/io-500/io-500-dev/datafiles//mdt_hard -n 3300
Path: /mnt/lustre01/work/k20200/k202079/io-500/io-500-dev/datafiles
FS: 20999.6 TiB Used FS: 93.0% Inodes: 5974.4 Mi Used Inodes: 6.0%
1200 tasks, 3960000 files
SUMMARY: (of 1 iterations)
Operation Max Min Mean Std Dev
--------- --- --- ---- -------
File creation : 0.000 0.000 0.000 0.000
File stat : 0.000 0.000 0.000 0.000
File read : 19001.604 19001.604 19001.604 0.000
File removal : 0.000 0.000 0.000 0.000
Tree creation : 0.000 0.000 0.000 0.000
Tree removal : 0.000 0.000 0.000 0.000
-- finished at 05/12/2018 14:47:45 --
- mdtest_hard_stat
-
-- started at 05/12/2018 14:29:47 --
mdtest-1.9.3 was launched with 1200 total task(s) on 100 node(s)
Command line used: /home/dkrz/k202079/work/io-500/io-500-dev/bin/mdtest -T -t -F -w 3901 -e 3901 -d /home/dkrz/k202079/work/io-500/io-500-dev/datafiles//mdt_hard -n 3300
Path: /mnt/lustre01/work/k20200/k202079/io-500/io-500-dev/datafiles
FS: 20999.6 TiB Used FS: 93.0% Inodes: 5974.4 Mi Used Inodes: 6.1%
1200 tasks, 3960000 files
SUMMARY: (of 1 iterations)
Operation Max Min Mean Std Dev
--------- --- --- ---- -------
File creation : 0.000 0.000 0.000 0.000
File stat : 43548.165 43548.165 43548.165 0.000
File read : 0.000 0.000 0.000 0.000
File removal : 0.000 0.000 0.000 0.000
Tree creation : 0.000 0.000 0.000 0.000
Tree removal : 0.000 0.000 0.000 0.000
-- finished at 05/12/2018 14:31:19 --
- mdtest_hard_write
-
-- started at 05/12/2018 14:16:47 --
mdtest-1.9.3 was launched with 1200 total task(s) on 100 node(s)
Command line used: /home/dkrz/k202079/work/io-500/io-500-dev/bin/mdtest -C -t -F -w 3901 -e 3901 -d /home/dkrz/k202079/work/io-500/io-500-dev/datafiles//mdt_hard -n 3300
Path: /mnt/lustre01/work/k20200/k202079/io-500/io-500-dev/datafiles
FS: 20999.6 TiB Used FS: 93.0% Inodes: 5974.4 Mi Used Inodes: 6.0%
1200 tasks, 3960000 files
SUMMARY: (of 1 iterations)
Operation Max Min Mean Std Dev
--------- --- --- ---- -------
File creation : 10756.924 10756.924 10756.924 0.000
File stat : 0.000 0.000 0.000 0.000
File read : 0.000 0.000 0.000 0.000
File removal : 0.000 0.000 0.000 0.000
Tree creation : 1834.779 1834.779 1834.779 0.000
Tree removal : 0.000 0.000 0.000 0.000
-- finished at 05/12/2018 14:22:56 --
- result_summary
-
[RESULT] BW phase 1 ior_easy_write 40.915 GB/s : time 586.58 seconds
[RESULT] IOPS phase 1 mdtest_easy_write 11.771 kiops : time 347.53 seconds
[RESULT] BW phase 2 ior_hard_write 0.998 GB/s : time 315.82 seconds
[RESULT] IOPS phase 2 mdtest_hard_write 10.757 kiops : time 379.67 seconds
[RESULT] IOPS phase 3 find 98.860 kiops : time 26.43 seconds
[RESULT] BW phase 3 ior_easy_read 123.395 GB/s : time 194.50 seconds
[RESULT] IOPS phase 4 mdtest_easy_stat 46.839 kiops : time 95.95 seconds
[RESULT] BW phase 4 ior_hard_read 5.126 GB/s : time 61.49 seconds
[RESULT] IOPS phase 5 mdtest_hard_stat 43.548 kiops : time 103.68 seconds
[RESULT] IOPS phase 6 mdtest_easy_delete 5.252 kiops : time 766.03 seconds
[RESULT] IOPS phase 7 mdtest_hard_read 19.002 kiops : time 219.82 seconds
[RESULT] IOPS phase 8 mdtest_hard_delete 6.335 kiops : time 635.81 seconds
[SCORE] Bandwidth 12.6775 GB/s : IOPS 18.8796 kiops : TOTAL 15.4708