ior - POSIX文件系统测试工具

IOR(Interleaved or Random)是一种常用的文件系统基准测试程序,特别适用于评估并行文件系统的性能。

IOR可用于测试各种接口和访问模式(POSIX兼容)的并行文件系统的性能。它适用于比较不同文件系统的性能。

IOR使用MPI进行进程同步(也可以使用srun或其他工具) - 通常在HPC(High Performance Computing)集群中的多个节点上并行运行IOR进程,在安装目标文件系统的每个客户机节点上运行一个IOR进程。

 

  1. 下载ior到待测客户机的 /usr/bin/ 目录下, 执行chmod 755 /usr/bin/ior
  2. CentOS export PATH=$PATH:/usr/lib64/openmpi/bin/
  3. Kylin - 下载openmpi压缩包到客户机的/usr/local下,解压缩。
  4. Kylin - 在$HOME/.bashrc 中添加如下两行之后,source $HOME/.bashrc
		export PATH="$PATH:/usr/local/openmpi/bin"
		export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/openmpi/lib/"

如果安装最新版本或重新编译,请参考Quick Start部分内容。

Quick Start

下载并编译IOR

  • 安装依赖包。
    CentOS , 执行如下命令即可。

sudo yum -y install openmpi-devel git automake

  Ubuntu , 执行如下命令

sudo apt install git automake

openmpi官网下载最新的压缩包

wget https://download.open-mpi.org/release/open-mpi/v3.1/openmpi-3.1.1.tar.gz

tar -xzvf openmpi-3.1.1.tar.gz

cd openmpi-3.1.1.tar.gz

./configure --prefix="/usr/local/openmpi"

make                                            # 可以在make后加参数-j8, 表示用8核编译

sudo make install

sudo ldconfig                                   # 打开新的终端,使环境变量生效

mpirun                                          # 测试安装是否成功

--------------------------------------------------------------------------

mpirun could not find anything to do.

 

It is possible that you forgot to specify how many processes to run

via the "-np" argument.

--------------------------------------------------------------------------

  • 将openmpi的bin目录加到测试账户的PATH中,如在 $HOME/.bashrc文件中增加一行:

# CentOS

export PATH=$PATH:/usr/lib64/openmpi/bin/

# Ubuntu,如果按照上面的示例,我们指定了openmpi的安装目录是/usr/local/openmpi

export PATH="$PATH:/usr/local/openmpi/bin"

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/openmpi/lib/"

git clone https://github.com/hpc/ior.git

  • 编译IOR

cd ior

./bootstrap

./configure

make clean && make

  • 执行命令,快速校验安装

./src/ior

  • 将ior命令复制到将用于运行测试的所有客户机节点上。或者,复制到文件系统本身,以便ior程序自动在所有节点上可用(待验证)。例如:

sudo mkdir -p /c15000/bin/

sudo cp ./src/ior /c15000/demo/bin/.

准备运行环境

  • 推荐在所有待测客户端机器上创建一个非root的测试账户,如ioruser。在服务器端建议不要创建该同名账户,以免误登陆影响。
  • 为客户机之间创建互信,方便测试从任一客户机执行。使用ioruser登陆客户机(需要在所有机器执行)之后,执行以下命令:

    ssh-keygen                          # 回车、设置空密码

    ssh-copy-id   <username>@<host_n>   # 将public key 拷贝到目标机器  

  • 修改StrictHostKeyChecking SSH 选项,使得ssh的hosts自动加入 $HOME/ssh/known_hosts, 而不是弹出提示。

    cat >>$HOME/.ssh/config <<\__EOF

    Host *

      StrictHostKeyChecking no

    __EOF

    chmod 0600 $HOME/.ssh/config

  • 安装openmpi,并将openmpi的bin目录加到PATH中(按照前述步骤已经安装的可忽略)

  • 准备hostfile,如 $HOME/hfile,内容参考如下:

    192.168.231.215 slots=2  

    192.168.231.216 slots=2

    192.168.231.217 slots=2

    slots默认可以等于CPU的核数,但是mpirun分配任务的时候,会优先第一个node安排,第一个node的slots安排满了之后才会安排到第二个node。如果想要平均分配任务,可以将slots设置为比较小的值。

  还有一种方法是增加参数 --map-by node,使得任务会被平均分配到hosts结点上执行。

 mpirun有其他的配置(rankfile等)去支持负载均衡地分发任务。详参官方文档。 https://www.open-mpi.org/doc/v1.6/man1/mpirun.1.php

  • 快速执行测试命令,校验测试环境是否准备完备,命令如下:

    mpirun [--allow-run-as-root] [--map-by node] -hostfile /root/hfile -np `cat /root/hfile|wc -l` hostname

    # 如果使用了root用户,需要加 --allow-run-as-root 参数。

示例及解析

mprirun的详细参数见官方文档, https://www.open-mpi.org/doc/v1.6/man1/mpirun.1.php

ior的常用参数可以执行 ior -h获得,也可参考 http://wiki.lustre.org/IOR#Commonly_Used_Options

更多ior的user guide,可在source code的doc目录下找。

示例:流式(streaming)读写

mpirun -np {NP} -wd {Working Dir} -hostfile {Machine File} {IOR Pathname}/IOR -v -a POSIX -i5 -g -e -w -r -b {FileSize}g -T 10 -F -C -t 4m

# 如 mpirun --allow-run-as-root -np 3 -wd /root/iobench -hostfile /root/hfile ior -v -a POSIX -i5 -g -e -w -r -b 100m -T 10 -F -C -t 4m

-np {NP} :测试中进程总数
-wd {Working Dir}:文件生成的目录(指定挂载存储服务的目录)
-hostfile {Machine File}:待测客户机列表
{IOR Pathname}: 可执行的ior的全路径,如果已经将ior的path加到PATH中,则直接调用ior即可
-b {FileSize}:每个线程生成文件的大小。应该比客户机的内存要大,以防cache影响测试结果。

示例:随机(random)读写

mpirun -np {NP} -wd {Working Dir} -hostfile {Machine File} {IOR Pathname}/IOR -v -a POSIX -i5 -g -e -w -r -b {FileSize}g -T 10 -F -z -t 4k

# 如 mpirun --allow-run-as-root -np 3 -wd /root/iobench -hostfile /root/hfile ior -v -a POSIX -i5 -g -e -w -r -b 1g -T 10 -F -z -t 4k

示例:IOR 读写测试, 单一文件, 多客户端

DS=`date +"%F_%H:%M:%S"`

mpirun [--allow-run-as-root] -np 3 [--map-by node] -hostfile /root/hfile \

  ior -v -w -r -i 4 \

  -o /root/iobench/ior-test.file \

  -t 1m -b 8g | tee $HOME/IOR-RW-Single_File-c_3-s_1_${DS}

示例:IOR 读写测试, 每进程多文件, 多客户端

比之前的命令增加了-F参数,确保IOR为每个进程创建独立唯一的文件。

mpirun [--allow-run-as-root] -np 3 [--map-by node] -hostfile $HOME/hfile \

  ior -v -w -r -i 4 -F \

  -o $HOME/iobench/ior-test.file \

  -t 1m -b 8g  | tee ${HOME}/IOR-RW-Multiple_Files-Common_Dir-c_3-s_1_${DS}

示例:客户机多网卡多IP情况下,指定tcp连接的网卡

mpirun [--allow-run-as-root] [--map-by node] -wd /root/iobench -hostfile /root/hfile --mca btl_tcp_if_include ens9f0 -np 3 ior -v -a POSIX -i5 -g -e -w -r -b 1g -T 10 -F -z -t 4k

使用参数 --mca btl_tcp_if_include ens9f0 指定tcp连接的网卡ens9f0。避免tcp连接访问vr0。mpirun是用给定字串ens9f0通配查询网卡设备的,如果是CG20环境,则避免指定配置了虚拟IP的网卡。

示例:打印详细日志,定位问题

#当mpirun执行异常时候,可以尝试加上strace命令,使之打印详细的日志

strace -f -e 'trace=!poll' mpirun --allow-run-as-root -wd /root/iobench --map-by core -hostfile /root/hfile --mca btl_tcp_if_include enp9s0f0 -np 3 ior > strace_content 2>&1

配置测试脚本

可以为ior准备测试配置脚本,并用-f参数指定测试脚本。内容如下:

===============> start script <===============

IOR START

 api=POSIX

 testFile=testFile

 repetitions=4

 readFile=1

 writeFile=1

 filePerProc=1

 checkWrite=0

 checkRead=0

 keepFile=0

 segmentCount=1

 blockSize=1g

 transferSize=1m

 reorderTasks=0

 deadlineForStonewalling=100

 useExistingTestFile=0

RUN

IOR STOP

===============> stop script <===============

目前指定配置文件执行ior会报错,尚未解决。

[root@host1 iobench]# ior -f tmp
Writing output to /root/iobench/summary.log
*** Error in `ior': free(): invalid next size (fast): 0x0000000001b29c70 ***

 

参考:

http://wiki.lustre.org/IOR

IOR_summary_v1.0.pdf

http://wiki.opensfs.org/IOR_Tests 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值