侧边栏壁纸
博主头像
qiql博主等级

水能载舟,亦可赛艇

  • 累计撰写 33 篇文章
  • 累计创建 28 个标签
  • 累计收到 20 条评论

目 录CONTENT

文章目录

batchIB -- 高性能集群IB网卡批量测试工具

qiql
2023-10-09 / 0 评论 / 1 点赞 / 1,620 阅读 / 931 字

快速开始

  1. 本工具基于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
    
  2. 下载 batchIB 并添加命令到环境变量 PATH 中

    curl -o batchIB https://mirrors.qiql.net/script/batchIB-0.5.0.sh && chmod +x batchIB
    export PATH=$(pwd):$PATH
    
  3. 创建需要测试的主机名hostfile文件

    echo "bn100 bn101 bn102 bn103 bn104 bn105" > hostfile
    
  4. 测试示例

    batchIB --host-x=./hostfile --cmd=ib_write_bw --size=8388608 --jobs=3
    

    该命令将对 hostfile 文件中指定的节点进行批量 ib_write_bw 测试,相当于分别在所有节点上依次执行 ib_write_bw --size=8388608image-20231009105326496

参数解析

可以通过 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测试

  1. 首先,需要在node01节点上执行ib_write_bw,此时,node01节点上的18515端口会被占用,node01节点会作为服务端等待测试

  2. 然后,在node02节点上执行ib_write_bw node01, 此时,node02节点上的18515端口也会被占用,node02节点将主动对打node01节点,node02节点为客户端节点

  3. 最后,收集结果。由于在测试期间,两个节点的18515端口均被占用,且测试为一对一,所以不能中断。

基于这样的测试模式,导致只能对通过划分块的方式以进行并行化,如果有十个节点,使用三个进程,那么将会将十个节点分为3组,每组大小依次为4节点,4节点,2节点。将会进行三次循环。保证每次循环中,各个块的节点没有交集,如图所示:

image-20231009115547464

每次循环中,各个块必须要全部运行完才能进入到下一个循环,程序中,通过轮询的方式验证当前块是否已执行完毕。如果不指定–jobs参数,那么将会按顺序,依次进行点对点测试,不会再分块

进程数的设置需要谨慎选择!如果进程数过多,交换机压力将会较大,可能会存在部分结果较低的情况!

1

评论区