Test cluster performance with HPL, iPerf, and FIO

Updated at:
Copy as MD

The E-HPC client provides a graphical interface for configuring benchmark applications such as High-Performance Linpack (HPL), iPerf, and Flexible I/O Tester (FIO). Use the client to quickly submit jobs and test your cluster's floating-point computing power, network bandwidth, and I/O performance.

Background information

The following industry-standard tools are used to benchmark cluster performance:

  • High-Performance Linpack (HPL): A benchmark program that measures the floating-point computing power of a high-performance computing (HPC) cluster. It evaluates the cluster's performance by solving a dense system of linear equations using Gaussian elimination.

  • iPerf: A network performance testing tool that measures metrics like bandwidth and packet loss. You can configure various parameters, such as the protocol and test duration.

  • Flexible I/O Tester (FIO): An open-source I/O stress testing tool used to benchmark disk performance. It supports multiple I/O engines and testing scenarios.

Prerequisites

Before running HPL, iPerf, and FIO tests with the E-HPC client, ensure the following software and dependencies are installed on your cluster:

  • HPL: Requires intel-mpi 2018, linpack 2018, and openmpi 3.0.0.

  • iPerf: Requires iPerf and intel-mpi 2018.

  • FIO: Requires fio 3.1 and intel-mpi 2018.

To install iPerf, run theyum install -y iperf command on each node. You can install the other software from the console. For more information, see Install software.

Procedure

  1. Log in to the E-HPC client.

  2. In the left navigation pane, click Application Center.

  3. Test the computing power.

    1. Click the hpl application.

    2. In the panel, configure the parameters and click Submit.

      Section

      Parameter

      Example

      Description

      Basic Parameters

      Job Name

      hpltest

      A custom name for the job.

      Queue

      workq

      The queue where the job runs.

      Number of Cores

      2

      The number of CPU cores per node.

      Number of Nodes

      1

      The number of compute nodes required for the job.

      Log Output

      hpl_test.log

      The output path for the job log file.

      Application Parameters

      Problem size (N)

      10000

      The size of the matrix (N). A larger N value increases the proportion of effective computations, resulting in higher measured floating-point performance. However, a larger matrix consumes more memory. If the problem size exceeds the available physical memory, performance decreases significantly because the system starts using swap space. For optimal results, the matrix should occupy about 80% of the total system memory. Use the following formula to estimate N: N × N × 8 = Total system memory (in bytes) × 0.80.

      Block size (NB)

      192 256

      The block size (NB) used during matrix processing. The optimal value for NB is typically determined through testing.

  4. Test the network bandwidth.

    1. Click the iperf application.

    2. In the panel, configure the parameters and click Submit.

      Section

      Parameter

      Example

      Description

      Basic Parameters

      Job Name

      iperftest

      A custom name for the job.

      Queue

      workq

      The queue where the job runs.

      Number of Cores

      2

      The number of CPU cores per node.

      Number of Nodes

      1

      The number of compute nodes required for the job.

      Log Output

      iperf_test.log

      The output path for the job log file.

      Application Parameters

      HostName

      login0

      The hostname of the node to test.

      Host NIC

      eth0

      The network interface controller (NIC) of the node to test.

  5. Test the I/O performance.

    1. Click the fio application.

    2. In the panel, configure the parameters and click Submit.

      Section

      Parameter

      Example

      Description

      Basic Parameters

      Job Name

      fiotest

      A custom name for the job.

      Queue

      workq

      The queue where the job runs.

      Number of Cores

      2

      The number of CPU cores per node.

      Number of Nodes

      1

      The number of compute nodes required for the job.

      Log Output

      fio_test.log

      The output path for the job log file.

      Application Parameters

      ioengine

      psync

      The I/O engine to use for the test. Options:

      • psync

      • libaio

      Read/Write Method

      rw

      The I/O pattern for the test. Options:

      • read: Sequential read

      • write: Sequential write

      • rw: Sequential read and write

      • randread: Random read

      • randwrite: Random write

      • randrw: Random read and write

      I/O Block Size

      4K

      The size of each I/O block, for example, 4K or 16K.

      Number of Threads

      1

      The number of threads to use for the test.

      Runtime

      100s

      The duration of the test.

      I/O Size

      1024M

      The total amount of data to read or write.

      Test File

      /home/username

      The path to the test file that the system generates.

View the results

  1. In the left navigation pane, click Job List.

  2. Find your HPL, iPerf, and FIO jobs, check their status, and view the results.

    When a job's status changes to FINISHED, click Details in the Actions column. On the Job Details page, click View next to Stdout Path. The following are sample outputs:

    • 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