Test cluster performance with HPL, iPerf, and FIO
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
-
Log in to the E-HPC client.
-
In the left navigation pane, click Application Center.
-
Test the computing power.
-
Click the hpl application.
-
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.
-
-
Test the network bandwidth.
-
Click the iperf application.
-
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.
-
-
Test the I/O performance.
-
Click the fio application.
-
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
-
In the left navigation pane, click Job List.
-
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
-