IO500安装

IO500 由一系列 Benchmark 和工具组成:

Benchmarks 说明 下载地址
mdtest 测试元数据的并行读写性能 https://github.com/hpc/ior
IOR 测试数据的并行读写性能 https://github.com/hpc/ior
pfind parallel find,find命令的并行版本 https://github.com/VI4IO/pfind
shema-tools https://github.com/VI4IO/cdcl-schema-tools

下载 IO500

git clone https://github.com/IO500/io500

cd io500

git checkout io500-sc22

也可以使用源码包:

wget https://github.com/IO500/io500/archive/refs/tags/io500-sc22.tar.gz

由于需要使用 openmpi,因此安装 openmpi,最新版本可查询:https://www.open-mpi.org/software/ 或者 https://github.com/open-mpi/ompi,Rocky9 源中已自带

dnf install -y openmpi openmpi-devel

修改 /etc/profile 或者 ${USER}/.bash_profile,追加如下内容:

if [ -z "$OPENMPI_ADDED" ]; then
    export PATH=/usr/lib64/openmpi/bin${PATH:+:${PATH}}
    export OPENMPI_ADDED=yes
    export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    export MPI_CC=mpicc
fi

安装准备

./prepare.sh

会在 build 目录中下载依赖的包

> ls build

cdcl-schema-tools  pfind              phase_ior_easy.o        phase_ior_rnd1MB.o        phase_mdtest.o              phase_mdtest_hard_delete.o  phase_mdworkbench_create.o
ini-parse.o        phase_dbg.o        phase_ior_easy_read.o   phase_ior_rnd4K.o         phase_mdtest_easy.o         phase_mdtest_hard_read.o    phase_mdworkbench_delete.o
ini-test.exe       phase_find.o       phase_ior_easy_write.o  phase_ior_rnd_read1MB.o   phase_mdtest_easy_delete.o  phase_mdtest_hard_stat.o    phase_opt.o
io500.a            phase_find_easy.o  phase_ior_hard.o        phase_ior_rnd_read4K.o    phase_mdtest_easy_stat.o    phase_mdtest_hard_write.o   phase_timestamp.o
ior                phase_find_hard.o  phase_ior_hard_read.o   phase_ior_rnd_write1MB.o  phase_mdtest_easy_write.o   phase_mdworkbench.o         util.o
main.o             phase_ior.o        phase_ior_hard_write.o  phase_ior_rnd_write4K.o   phase_mdtest_hard.o         phase_mdworkbench_bench.o   verifier.o

运行 io500

mpiexec --allow-run-as-root -np 2 ./io500 config-minimal.ini

测试结果如下

--------------------------------------------------------------------------
WARNING: There was an error initializing an OpenFabrics device.

  Local host:   devmaster
  Local device: mlx4_0
--------------------------------------------------------------------------
IO500 version io500-sc21-scc_v1 (standard)
[devmaster:162973] 1 more process has sent help message help-mpi-btl-openib.txt / error in device init
[devmaster:162973] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages
[RESULT]       ior-easy-write        0.389289 GiB/s : time 333.302 seconds
ERROR INVALID (src/main.c:403) Runtime of phase (189.365385) is below stonewall time. This shouldn't happen!
ERROR INVALID (src/main.c:409) Runtime is smaller than expected minimum runtime
[RESULT]    mdtest-easy-write       10.617934 kIOPS : time 189.365 seconds [INVALID]
[      ]            timestamp        0.000000 kIOPS : time 0.000 seconds
[RESULT]       ior-hard-write        0.172364 GiB/s : time 396.569 seconds
[RESULT]    mdtest-hard-write        5.995354 kIOPS : time 303.955 seconds
[RESULT]                 find      148.721174 kIOPS : time 25.660 seconds
[RESULT]        ior-easy-read        0.387569 GiB/s : time 334.780 seconds
[RESULT]     mdtest-easy-stat       38.624554 kIOPS : time 52.781 seconds
[RESULT]        ior-hard-read        0.121433 GiB/s : time 562.893 seconds
[RESULT]     mdtest-hard-stat       53.299805 kIOPS : time 35.076 seconds
[RESULT]   mdtest-easy-delete       17.859243 kIOPS : time 115.229 seconds
[RESULT]     mdtest-hard-read        2.952076 kIOPS : time 616.235 seconds
[RESULT]   mdtest-hard-delete        9.121340 kIOPS : time 202.016 seconds
[SCORE ] Bandwidth 0.237056 GiB/s : IOPS 17.639377 kiops : TOTAL 2.044876 [INVALID]

The result files are stored in the directory: ./results/2023.02.16-14.35.23
[1676532491.165669] [devmaster:162977:0]       tag_match.c:62   UCX  WARN  unexpected tag-receive descriptor 0x1df2400 was not matched

多节点测试方式:

mpiexec -n 9 -H 10.244.244.201:3,10.244.244.211:3,10.244.244.212:3 --allow-run-as-root /data/nfs/io500/io500 /data/nfs/io500/config-beegfs.ini