运行HPL、iPerf和FIO以测试集群性能

更新时间:
复制 MD 格式

E-HPC客户端提供了可视化的页面来配置HPL、iPerfFIO应用,可以快速提交相关作业,测试集群benchmark性能,包括浮点计算能力、带宽性能和读写能力。

背景信息

测试集群benchmark性能主要使用以下几个软件:

  • HPL:一个测试高性能计算集群系统浮点性能的基准程序。HPL通过对高性能计算集群采用高斯消元法求解一元N次稠密线性代数方程组的测试,评价高性能计算集群的浮点计算能力。

  • iPerf:一个网络性能测试工具,支持设置协议、时间等相关参数,可以报告带宽、数据包丢失等。

  • FIO:一个开源的I/O压力测试工具,主要用于测试磁盘的IO性能,支持多引擎和多场景测试。

准备工作

使用客户端运行HPL、iPerfFIO测试集群性能,请确保已在集群中安装HPL、iPerfFIO软件及其依赖。需安装的软件及其相关依赖如下:

  • HPL:需安装intel-mpi 2018、linpack 2018、 openmpi 3.0.0。

  • iPerf:需安装iPerf、intel-mpi 2018。

  • FIO:需安装fio 3.1、intel-mpi 2018。

其中,iPerf需要在每个节点上执行yum install -y iperf命令安装;其他软件可以通过控制台安装,具体操作,请参见安装软件

操作步骤

  1. 打开并登录客户端。

  2. 在左侧导航栏,单击应用中心

  3. 测试算力。

    1. 单击hpl应用。

    2. 在弹出面板配置相关参数,单击提交

      参数类型

      参数

      示例值

      描述

      基础参数

      作业名称

      hpltest

      自定义设置。

      作业队列

      workq

      运行该作业的队列。

      CPU核数

      2

      单个节点的CPU核数。

      节点数

      1

      运行该作业所需的计算节点数。

      输出日志

      hpl_test.log

      作业运行日志的输出路径。

      应用参数

      求解规模

      10000

      求解的矩阵规模(N)。规模越大,有效计算所占的比例越大,则系统浮点处理性能越高。但矩阵规模越大会导致内存消耗量越多,如果系统实际内存空间不足,使用缓存、性能会大幅度降低。矩阵占用系统总内存的80%左右为最佳,即N×N×8=系统总内存×80%(其中总内存的单位为字节)。

      分块大小

      192 256

      求解矩阵过程中矩阵分块的大小(NB)。NB值的选择主要是通过实际测试得出最优值。

  4. 测试带宽。

    1. 单击iperf应用。

    2. 在弹出面板配置相关参数,单击提交

      参数类型

      参数

      示例值

      描述

      基础参数

      作业名称

      iperftest

      自定义设置。

      作业队列

      workq

      运行该作业的队列。

      CPU核数

      2

      单个节点的CPU核数。

      节点数

      1

      运行该作业所需的计算节点数。

      输出日志

      iperf_test.log

      作业运行日志的输出路径。

      应用参数

      HostName

      login0

      要测试的节点主机名称。

      主机网卡

      eth0

      要测试的节点主机网卡。

  5. 测试读写能力。

    1. 单击fio应用。

    2. 在弹出面板配置相关参数,单击提交

      参数类型

      参数

      示例值

      描述

      基础参数

      作业名称

      fiotest

      自定义设置。

      作业队列

      workq

      运行该作业的队列。

      CPU核数

      2

      单个节点的CPU核数。

      节点数

      1

      运行该作业所需的计算节点数。

      输出日志

      fio_test.log

      作业运行日志的输出路径。

      应用参数

      ioengine

      psync

      I/O引擎使用的测试方式。可选项:

      • psync

      • libaio

      读写方式

      rw

      测试的读写方式。可选项:

      • read:顺序读

      • write:顺序写

      • rw:顺序读写

      • randread:随机读

      • randwrite:随机写

      • randrw:随机读写

      IO块大小

      4K

      单次I/O测试的块文件大小,可配置为4K16K。

      线程数

      1

      测试线程数。

      测试时间

      100s

      测试时间。

      读写数据量

      1024M

      要测试的数据量。

      测试文件

      /home/username

      存放系统生成的测试文件的路径。

查看结果

  1. 在客户端的左侧导航栏,单击作业查询

  2. 找到HPL、iPerfFIO作业,分别确认作业状态并获取结果。

    当作业状态变为FINISHED时,单击作业对应的详情,在作业详情页面单击作业输出文件与路径后的查看,即可查看结果。结果示例如下:

    • HPL

      - The matrix A is randomly generated for each test.
        - The following scaled residual check will be computed:
              ||Ax-b||_oo / ( eps * ( || x ||_oo * || A ||_oo + || b ||_oo ) * N )
        - The relative machine precision (eps) is taken to be            1.11022
        - Computational tests pass if scaled residuals are less than
        compute000    : Column=000192 Fraction=0.005 Kernel=     0.00 Mflops=15756
        ============================================================================
        T/V                N    NB     P     Q               Time                  G
        ----------------------------------------------------------------------------
        WC00C2R2         256   192     1     1               0.00              5.9646
        HPL_pdgesv() start time Fri Sep 30 10:23:44 2022
        HPL_pdgesv() end time   Fri Sep 30 10:23:44 2022
        ----------------------------------------------------------------------------
        ||Ax-b||_oo/(eps*(||A||_oo*||x||_oo+||b||_oo)*N)=        0.0110876 ...... P
        ============================================================================
        Finished      1 tests with the following results:
                      1 tests completed and passed residual checks,
                      0 tests completed and failed residual checks,
                      0 tests skipped because of illegal input values.
    • iPerf

      Client connecting to 192.xxx.xxx.xxx TCP port 5001
      TCP window size:  604 KByte (default)
      ------------------------------------------------------------
      [ 12] local 192.168.xxx.1 port 47930 connected with 192.168.1.xxx port 5001
      [  4] local 192.168.xxx port 5001 connected with 192.168.1.xxx port 47930
      [ ID] Interval       Transfer     Bandwidth
      [  4]  0.0- 1.0 sec  1.16 GBytes  9.94 Gbits/sec
      [ ID] Interval       Transfer     Bandwidth
      [ 12]  0.0- 1.0 sec  1.16 GBytes  9.95 Gbits/sec
      [ 12]  1.0- 2.0 sec   795 MBytes  6.67 Gbits/sec
      [  4]  1.0- 2.0 sec   797 MBytes  6.68 Gbits/sec
      [ 12]  2.0- 3.0 sec  1.10 GBytes  9.48 Gbits/sec
      [  4]  2.0- 3.0 sec  1.10 GBytes  9.47 Gbits/sec
      [ 12]  3.0- 4.0 sec  1.18 GBytes  10.1 Gbits/sec
      [  4]  3.0- 4.0 sec  1.17 GBytes  10.1 Gbits/sec
      [ 12]  4.0- 5.0 sec  1.00 GBytes  8.59 Gbits/sec
      [  4]  4.0- 5.0 sec  1022 MBytes  8.57 Gbits/sec
      [ 12]  5.0- 6.0 sec  1.22 GBytes  10.5 Gbits/sec
      [  4]  5.0- 6.0 sec  1.23 GBytes  10.5 Gbits/sec
      [  4]  6.0- 7.0 sec  1.04 GBytes  8.93 Gbits/sec
      [ 12]  6.0- 7.0 sec  1.04 GBytes  8.91 Gbits/sec
    • FIO

         clat percentiles (usec):
           | 99.99th=[11338]
         bw (  KiB/s): min=  479, max= 1608, per=100.00%, avg=1238.62, stdev=163.
         iops        : min=  119, max=  402, avg=309.64, stdev=40.98, samples=206
      write: IOPS=309, BW=1240KiB/s (1270kB/s)(121MiB/100001msec)
         clat (usec): min=1695, max=84691, avg=2203.84, stdev=1582.55
          lat (usec): min=1695, max=84691, avg=2203.97, stdev=1582.55
         clat percentiles (usec):
           |  1.00th=[ 1827],  5.00th=[ 1893], 10.00th=[ 1909], 20.00th=[ 1958],
           | 30.00th=[ 1975], 40.00th=[ 2008], 50.00th=[ 2040], 60.00th=[ 2073],
           | 70.00th=[ 2114], 80.00th=[ 2147], 90.00th=[ 2278], 95.00th=[ 2573],
           | 99.00th=[ 5866], 99.50th=[ 7832], 99.90th=[23725], 99.95th=[33424],
           | 99.99th=[63177]
         bw (  KiB/s): min=  472, max= 1448, per=100.00%, avg=1239.76, stdev=136.
         iops        : min=  118, max=  362, avg=309.93, stdev=34.15, samples=206
        lat (usec)   : 750=0.41%, 1000=36.82%
        lat (msec)   : 2=30.29%, 4=31.00%, 10=1.29%, 20=0.14%, 50=0.05%
        lat (msec)   : 100=0.01%
        cpu          : usr=0.16%, sys=0.49%, ctx=61973, majf=0, minf=30
        IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, >=64=0
           submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0
           complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0
           issued rwts: total=30969,30999,0,0 short=0,0,0,0 dropped=0,0,0,0
           latency   : target=0, window=0, percentile=100.00%, depth=1
      Run status group 0 (all jobs):
         READ: bw=1239KiB/s (1268kB/s), 1239KiB/s-1239KiB/s (1268kB/s-1268kB/s), io=121MiB (127MB), run=100001-100001msec
        WRITE: bw=1240KiB/s (1270kB/s), 1240KiB/s-1240KiB/s (1270kB/s-1270kB/s), io=121MiB (127MB), run=100001-100001msec