快速开始
-
本工具基于pdsh和getopt,需要先安装这两个包,并保证测试的节点间均已设置免密,以及正确配置 IB驱动
Pdsh安装: wget https://mirrors.qiql.net/pkgs/pdsh-2.29.tar.bz2 tar jxvf pdsh-2.29.tar.bz2 cd pdsh-2.29 ./configure --with-ssh --with-rsh --with-mrsh --with-mqshell --with-qshell --with-dshgroups make && make install
-
下载 batchIB 并添加命令到环境变量 PATH 中
curl -o batchIB https://mirrors.qiql.net/script/batchIB-0.5.0.sh && chmod +x batchIB export PATH=$(pwd):$PATH
-
创建需要测试的主机名hostfile文件
echo "bn100 bn101 bn102 bn103 bn104 bn105" > hostfile
-
测试示例
batchIB --host-x=./hostfile --cmd=ib_write_bw --size=8388608 --jobs=3
该命令将对 hostfile 文件中指定的节点进行批量 ib_write_bw 测试,相当于分别在所有节点上依次执行 ib_write_bw --size=8388608
参数解析
可以通过 batchIB --help 查看工具的使用方式:
Usage: batchIB [options] parameter …
命令行参数选项
- -h, --help 打印帮助页面
- -v, --version 打印版本信息页面
- –jobs=<N> 设置进程数,通过设置多个进程,可以加速测试过程
- –output=<filename> 设置输出文件名,默认为 out_batchIB+ 测试命令(如ib_write_bw)+测试时间(细分到秒).txt
- –cmd=<ib_write_bw/ib_read_bw/ib_send_lat> 测试命令,默认为 ib_write_bw,也可以是ib_read_bw 或 ib_send_lat
- –size=<value> 设置测试的消息大小 ,如果测试命令为 ib_write_bw,建议设置为 8388608(8MB),如果是 ib_send_lat,建议设置为32(32字节)
- –host-x=</to/your/path/nodelist.txt> 通过主机名文件的方式设置要测试的主机名(客户端)
- –host-y=</to/your/path/nodelist.txt> 通过主机名文件的方式设置要测试的主机名(服务端)
- –device=<value> 设置IB设备名,默认一般为mlx5_0,可以使用ibstat命令进行查询
并行策略
在介绍本工具的并行策略之前,先简要介绍下ib_write_bw测试
-
首先,需要在node01节点上执行ib_write_bw,此时,node01节点上的18515端口会被占用,node01节点会作为服务端等待测试
-
然后,在node02节点上执行ib_write_bw node01, 此时,node02节点上的18515端口也会被占用,node02节点将主动对打node01节点,node02节点为客户端节点
-
最后,收集结果。由于在测试期间,两个节点的18515端口均被占用,且测试为一对一,所以不能中断。
基于这样的测试模式,导致只能对通过划分块的方式以进行并行化,如果有十个节点,使用三个进程,那么将会将十个节点分为3组,每组大小依次为4节点,4节点,2节点。将会进行三次循环。保证每次循环中,各个块的节点没有交集,如图所示:
每次循环中,各个块必须要全部运行完才能进入到下一个循环,程序中,通过轮询的方式验证当前块是否已执行完毕。如果不指定–jobs参数,那么将会按顺序,依次进行点对点测试,不会再分块
进程数的设置需要谨慎选择!如果进程数过多,交换机压力将会较大,可能会存在部分结果较低的情况!
评论区