- io500
-
#!/bin/bash
#PJM -L rscgrp=regular-flat
#PJM -L node=256
#PJM --mpi proc=8192
#PJM -L elapse=2:00:00
#PJM -g xg17i000
#PJM -j
#
# 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.
set -euo pipefail # better error handling
DIR=/work/xg17i000/x10007/io-500-dev
export I_MPI_PIN_PROCESSOR_EXCLUDE_LIST=0,68,136,204
# 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.
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=$DIR/datafiles/io500.$timestamp # directory where the data will be stored
io500_result_dir=$DIR/results/$timestamp # the directory where the output results will be kept
mkdir -p $io500_workdir $io500_result_dir
mkdir -p $io500_workdir/ior_easy
lfs setstripe --stripe-count 2 ${io500_workdir}/ior_easy
mkdir -p $io500_workdir/ior_hard
lfs setstripe --stripe-count 100 ${io500_workdir}/ior_hard
}
function setup_paths {
# Set the paths to the binaries. If you ran ./utilities/prepare.sh successfully, then binaries are in ./bin/
io500_ior_cmd=$DIR/bin/ior
io500_mdtest_cmd=$DIR/bin/mdtest
io500_mdreal_cmd=$DIR/bin/md-real-io
io500_mpirun="mpiexec.hydra"
io500_mpiargs="-n ${PJM_MPI_PROC}"
}
function setup_ior_easy {
io500_ior_easy_params="-t 2048k -b 4g -F" # 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=2500
}
function setup_ior_hard {
io500_ior_hard_writes_per_proc=2200
}
function setup_mdt_hard {
io500_mdtest_hard_files_per_proc=1000
}
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.
# 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="False"
io500_find_cmd=$DIR/bin/sfind.sh
io500_find_cmd_args=""
# 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="$DIR/bin/pfind"
io500_find_cmd_args="-s 300 -r $io500_result_dir/pfind_results"
# a parallel version that might require some work, it is a python3 program
# if you used utilities/prepare.sh, it should already be there.
# change the stonewall to 300 to get a valid score
#set +u
#export PYTHONPATH=$PYTHONPATH:$PWD/bin/lib
#io500_find_mpi="True"
#io500_find_cmd="$PWD/bin/pfind -stonewall 1"
#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 ./bin/io500_fixed.sh 2>&1 | tee $io500_result_dir/io-500-summary.$timestamp.txt
}
# Add key/value pairs defining your system if you want
# This function needs to exist although it doesn't have to output anything if you don't want
function extra_description {
echo "System_name='JCAHPC Oakforest-PACS'"
}
main
rm -rf $io500_workdir
- ior_easy_read
-
IOR-3.1.0: MPI Coordinated Test of Parallel I/O
ior WARNING: fsync() only available in POSIX. Using value of 0.
Began: Thu Nov 23 19:35:07 2017
Command line used: /work/xg17i000/x10007/io-500-dev/bin/ior -r -R -C -Q 1 -g -G 27 -k -e -t 2048k -b 4g -F -o /work/xg17i000/x10007/io-500-dev/datafiles/io500.2017.11.23-19.12.08/ior_easy/ior_file_easy
Machine: Linux c1282.ofp
Test 0 started: Thu Nov 23 19:35:07 2017
Summary:
api = MPIIO (version=3, subversion=1)
test filename = /work/xg17i000/x10007/io-500-dev/datafiles/io500.2017.11.23-19.12.08/ior_easy/ior_file_easy
access = file-per-process
ordering in a file = sequential offsets
ordering inter file= constant task offsets = 1
clients = 8192 (32 per node)
repetitions = 1
xfersize = 2 MiB
blocksize = 4 GiB
aggregate filesize = 32768 GiB
access bw(MiB/s) block(KiB) xfer(KiB) open(s) wr/rd(s) close(s) total(s) iter
------ --------- ---------- --------- -------- -------- -------- -------- ----
read 115909 4194304 2048.00 0.249012 289.22 0.023074 289.49 0
Max Read: 115908.90 MiB/sec (121539.29 MB/sec)
Summary of all tests:
Operation Max(MiB) Min(MiB) Mean(MiB) StdDev Mean(s) Test# #Tasks tPN reps fPP reord reordoff reordrand seed segcnt blksiz xsize aggsize API RefNum
read 115908.90 115908.90 115908.90 0.00 289.48969 0 8192 32 1 1 1 1 0 0 1 4294967296 2097152 35184372088832 MPIIO 0
Finished: Thu Nov 23 19:39:57 2017
- ior_easy_write
-
IOR-3.1.0: MPI Coordinated Test of Parallel I/O
ior WARNING: fsync() only available in POSIX. Using value of 0.
Began: Thu Nov 23 19:12:17 2017
Command line used: /work/xg17i000/x10007/io-500-dev/bin/ior -w -C -Q 1 -g -G 27 -k -e -t 2048k -b 4g -F -o /work/xg17i000/x10007/io-500-dev/datafiles/io500.2017.11.23-19.12.08/ior_easy/ior_file_easy
Machine: Linux c1282.ofp
Test 0 started: Thu Nov 23 19:12:17 2017
Summary:
api = MPIIO (version=3, subversion=1)
test filename = /work/xg17i000/x10007/io-500-dev/datafiles/io500.2017.11.23-19.12.08/ior_easy/ior_file_easy
access = file-per-process
ordering in a file = sequential offsets
ordering inter file= constant task offsets = 1
clients = 8192 (32 per node)
repetitions = 1
xfersize = 2 MiB
blocksize = 4 GiB
aggregate filesize = 32768 GiB
access bw(MiB/s) block(KiB) xfer(KiB) open(s) wr/rd(s) close(s) total(s) iter
------ --------- ---------- --------- -------- -------- -------- -------- ----
write 89116 4194304 2048.00 0.423151 376.08 0.024756 376.52 0
Max Write: 89116.26 MiB/sec (93445.18 MB/sec)
Summary of all tests:
Operation Max(MiB) Min(MiB) Mean(MiB) StdDev Mean(s) Test# #Tasks tPN reps fPP reord reordoff reordrand seed segcnt blksiz xsize aggsize API RefNum
write 89116.26 89116.26 89116.26 0.00 376.52422 0 8192 32 1 1 1 1 0 0 1 4294967296 2097152 35184372088832 MPIIO 0
Finished: Thu Nov 23 19:18:34 2017
- ior_hard_read
-
IOR-3.1.0: MPI Coordinated Test of Parallel I/O
ior WARNING: fsync() only available in POSIX. Using value of 0.
Began: Thu Nov 23 19:42:24 2017
Command line used: /work/xg17i000/x10007/io-500-dev/bin/ior -r -R -C -Q 1 -g -G 27 -k -e -t 47008 -b 47008 -s 2200 -o /work/xg17i000/x10007/io-500-dev/datafiles/io500.2017.11.23-19.12.08/ior_hard/IOR_file
Machine: Linux c1282.ofp
Test 0 started: Thu Nov 23 19:42:24 2017
Summary:
api = MPIIO (version=3, subversion=1)
test filename = /work/xg17i000/x10007/io-500-dev/datafiles/io500.2017.11.23-19.12.08/ior_hard/IOR_file
access = single-shared-file
ordering in a file = sequential offsets
ordering inter file= constant task offsets = 1
clients = 8192 (32 per node)
repetitions = 1
xfersize = 47008 bytes
blocksize = 47008 bytes
aggregate filesize = 789.01 GiB
access bw(MiB/s) block(KiB) xfer(KiB) open(s) wr/rd(s) close(s) total(s) iter
------ --------- ---------- --------- -------- -------- -------- -------- ----
read 7119 45.91 45.91 0.873628 112.58 0.032957 113.49 0
Max Read: 7119.38 MiB/sec (7465.21 MB/sec)
Summary of all tests:
Operation Max(MiB) Min(MiB) Mean(MiB) StdDev Mean(s) Test# #Tasks tPN reps fPP reord reordoff reordrand seed segcnt blksiz xsize aggsize API RefNum
read 7119.38 7119.38 7119.38 0.00 113.48600 0 8192 32 1 0 1 1 0 0 2200 47008 47008 847196979200 MPIIO 0
Finished: Thu Nov 23 19:44:18 2017
- ior_hard_write
-
IOR-3.1.0: MPI Coordinated Test of Parallel I/O
ior WARNING: fsync() only available in POSIX. Using value of 0.
Began: Thu Nov 23 19:24:54 2017
Command line used: /work/xg17i000/x10007/io-500-dev/bin/ior -w -C -Q 1 -g -G 27 -k -e -t 47008 -b 47008 -s 2200 -o /work/xg17i000/x10007/io-500-dev/datafiles/io500.2017.11.23-19.12.08/ior_hard/IOR_file
Machine: Linux c1282.ofp
Test 0 started: Thu Nov 23 19:24:54 2017
Summary:
api = MPIIO (version=3, subversion=1)
test filename = /work/xg17i000/x10007/io-500-dev/datafiles/io500.2017.11.23-19.12.08/ior_hard/IOR_file
access = single-shared-file
ordering in a file = sequential offsets
ordering inter file= constant task offsets = 1
clients = 8192 (32 per node)
repetitions = 1
xfersize = 47008 bytes
blocksize = 47008 bytes
aggregate filesize = 789.01 GiB
access bw(MiB/s) block(KiB) xfer(KiB) open(s) wr/rd(s) close(s) total(s) iter
------ --------- ---------- --------- -------- -------- -------- -------- ----
write 2413.35 45.91 45.91 1.26 333.49 0.032164 334.78 0
Max Write: 2413.35 MiB/sec (2530.58 MB/sec)
Summary of all tests:
Operation Max(MiB) Min(MiB) Mean(MiB) StdDev Mean(s) Test# #Tasks tPN reps fPP reord reordoff reordrand seed segcnt blksiz xsize aggsize API RefNum
write 2413.35 2413.35 2413.35 0.00 334.78363 0 8192 32 1 0 1 1 0 0 2200 47008 47008 847196979200 MPIIO 0
Finished: Thu Nov 23 19:30:30 2017
- mdtest_easy_delete
-
-- started at 11/23/2017 19:45:56 --
mdtest-1.9.3 was launched with 8192 total task(s) on 256 node(s)
Command line used: /work/xg17i000/x10007/io-500-dev/bin/mdtest -r -F -d /work/xg17i000/x10007/io-500-dev/datafiles/io500.2017.11.23-19.12.08/mdt_easy -n 2500 -u -L
Path:
FS: 23597.0 TiB Used FS: 9.5% Inodes: 12312.0 Mi Used Inodes: 2.1%
8192 tasks, 20480000 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 : 36116.359 36116.359 36116.359 0.000
Tree creation : 0.000 0.000 0.000 0.000
Tree removal : 0.893 0.893 0.893 0.000
-- finished at 11/23/2017 19:55:25 --
- mdtest_easy_stat
-
-- started at 11/23/2017 19:40:05 --
mdtest-1.9.3 was launched with 8192 total task(s) on 256 node(s)
Command line used: /work/xg17i000/x10007/io-500-dev/bin/mdtest -T -F -d /work/xg17i000/x10007/io-500-dev/datafiles/io500.2017.11.23-19.12.08/mdt_easy -n 2500 -u -L
Path:
FS: 23597.0 TiB Used FS: 9.5% Inodes: 12312.0 Mi Used Inodes: 2.1%
8192 tasks, 20480000 files
SUMMARY: (of 1 iterations)
Operation Max Min Mean Std Dev
--------- --- --- ---- -------
File creation : 0.000 0.000 0.000 0.000
File stat : 157208.126 157208.126 157208.126 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 11/23/2017 19:42:16 --
- mdtest_easy_write
-
-- started at 11/23/2017 19:18:42 --
mdtest-1.9.3 was launched with 8192 total task(s) on 256 node(s)
Command line used: /work/xg17i000/x10007/io-500-dev/bin/mdtest -C -F -d /work/xg17i000/x10007/io-500-dev/datafiles/io500.2017.11.23-19.12.08/mdt_easy -n 2500 -u -L
Path:
FS: 23597.0 TiB Used FS: 9.5% Inodes: 12312.0 Mi Used Inodes: 1.9%
8192 tasks, 20480000 files
SUMMARY: (of 1 iterations)
Operation Max Min Mean Std Dev
--------- --- --- ---- -------
File creation : 56394.151 56394.151 56394.151 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 : 4.704 4.704 4.704 0.000
Tree removal : 0.000 0.000 0.000 0.000
-- finished at 11/23/2017 19:24:46 --
- mdtest_hard_delete
-
-- started at 11/23/2017 19:57:15 --
mdtest-1.9.3 was launched with 8192 total task(s) on 256 node(s)
Command line used: /work/xg17i000/x10007/io-500-dev/bin/mdtest -r -t -F -w 3901 -e 3901 -d /work/xg17i000/x10007/io-500-dev/datafiles/io500.2017.11.23-19.12.08/mdt_hard -n 1000
Path:
FS: 23597.0 TiB Used FS: 9.5% Inodes: 12312.0 Mi Used Inodes: 1.9%
8192 tasks, 8192000 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 : 63617.150 63617.150 63617.150 0.000
Tree creation : 0.000 0.000 0.000 0.000
Tree removal : 4.225 4.225 4.225 0.000
-- finished at 11/23/2017 19:59:24 --
- mdtest_hard_read
-
-- started at 11/23/2017 19:55:33 --
mdtest-1.9.3 was launched with 8192 total task(s) on 256 node(s)
Command line used: /work/xg17i000/x10007/io-500-dev/bin/mdtest -E -t -F -w 3901 -e 3901 -d /work/xg17i000/x10007/io-500-dev/datafiles/io500.2017.11.23-19.12.08/mdt_hard -n 1000
Path:
FS: 23597.0 TiB Used FS: 9.5% Inodes: 12312.0 Mi Used Inodes: 1.9%
8192 tasks, 8192000 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 : 87168.179 87168.179 87168.179 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 11/23/2017 19:57:07 --
- mdtest_hard_stat
-
-- started at 11/23/2017 19:44:26 --
mdtest-1.9.3 was launched with 8192 total task(s) on 256 node(s)
Command line used: /work/xg17i000/x10007/io-500-dev/bin/mdtest -T -t -F -w 3901 -e 3901 -d /work/xg17i000/x10007/io-500-dev/datafiles/io500.2017.11.23-19.12.08/mdt_hard -n 1000
Path:
FS: 23597.0 TiB Used FS: 9.5% Inodes: 12312.0 Mi Used Inodes: 2.1%
8192 tasks, 8192000 files
SUMMARY: (of 1 iterations)
Operation Max Min Mean Std Dev
--------- --- --- ---- -------
File creation : 0.000 0.000 0.000 0.000
File stat : 100467.989 100467.989 100467.989 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 11/23/2017 19:45:48 --
- mdtest_hard_write
-
-- started at 11/23/2017 19:30:38 --
mdtest-1.9.3 was launched with 8192 total task(s) on 256 node(s)
Command line used: /work/xg17i000/x10007/io-500-dev/bin/mdtest -C -t -F -w 3901 -e 3901 -d /work/xg17i000/x10007/io-500-dev/datafiles/io500.2017.11.23-19.12.08/mdt_hard -n 1000
Path:
FS: 23597.0 TiB Used FS: 9.5% Inodes: 12312.0 Mi Used Inodes: 2.0%
8192 tasks, 8192000 files
SUMMARY: (of 1 iterations)
Operation Max Min Mean Std Dev
--------- --- --- ---- -------
File creation : 39432.544 39432.544 39432.544 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 : 455.160 455.160 455.160 0.000
Tree removal : 0.000 0.000 0.000 0.000
-- finished at 11/23/2017 19:34:06 --
- result_summary
-
[RESULT] BW phase 1 ior_easy_write 87.027 GB/s : time 376.52 seconds
[RESULT] IOPS phase 1 mdtest_easy_write 56.394 kiops : time 371.57 seconds
[RESULT] BW phase 2 ior_hard_write 2.357 GB/s : time 334.78 seconds
[RESULT] IOPS phase 2 mdtest_hard_write 39.432 kiops : time 216.03 seconds
[RESULT] IOPS phase 3 find 548.670 kiops : time 52.27 seconds
[RESULT] BW phase 3 ior_easy_read 113.192 GB/s : time 289.49 seconds
[RESULT] IOPS phase 4 mdtest_easy_stat 157.208 kiops : time 138.49 seconds
[RESULT] BW phase 4 ior_hard_read 6.952 GB/s : time 113.49 seconds
[RESULT] IOPS phase 5 mdtest_hard_stat 100.468 kiops : time 89.83 seconds
[RESULT] IOPS phase 6 mdtest_easy_delete 36.116 kiops : time 576.52 seconds
[RESULT] IOPS phase 7 mdtest_hard_read 87.168 kiops : time 102.24 seconds
[RESULT] IOPS phase 8 mdtest_hard_delete 63.617 kiops : time 137.37 seconds
[SCORE] Bandwidth 20.0437 GB/s : IOPS 88.7805 kiops : TOTAL 1779.4897