You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/microbenchmark-network-iperf3/basic-microbenchmarking.md
+16-12Lines changed: 16 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,17 +6,17 @@ weight: 3
6
6
layout: learningpathall
7
7
---
8
8
9
-
## Microbenchmark the TCP connection
9
+
With your systems configured and reachable, you can now use iPerf3 to microbenchmark TCP and UDP performance between your Arm-based systems
10
10
11
-
You can microbenchmark the bandwidth between the client and server.
11
+
## Microbenchmark the TCP connection
12
12
13
-
First, start `iperf` in server mode on the server system with the following command:
13
+
First, start by running `iperf` in server mode on the `SERVER` system with the following command:
14
14
15
15
```bash
16
16
iperf3 -s
17
17
```
18
18
19
-
You see the output, indicating the server is ready:
19
+
This starts the server on the default TCP port 5201. You should see:
@@ -28,17 +28,20 @@ Server listening on 5201 (test #1)
28
28
The default server port is 5201. Use the `-p` flag to specify another port if it is in use.
29
29
30
30
{{% notice Tip %}}
31
-
If you already have an `iperf3` server running, you can manually kill the process with the following command.
31
+
If you already have an `iperf3` server running, you can kill the process with the following command:
32
32
```bash
33
33
sudo kill$(pgrep iperf3)
34
34
```
35
35
{{% /notice %}}
36
36
37
-
Next, on the client node, run the following command to run a simple 10-second microbenchmark using the TCP protocol.
37
+
## Run a TCP test from the client
38
+
39
+
Next, on the client node, run the following command to run a simple 10-second microbenchmark using the TCP protocol:
38
40
39
41
```bash
40
42
iperf3 -c SERVER -V
41
43
```
44
+
Replace `SERVER` with your server’s IP address or hostname. The -V flag enables verbose output.
42
45
43
46
The output is similar to:
44
47
@@ -68,18 +71,19 @@ rcv_tcp_congestion cubic
68
71
69
72
iperf Done.
70
73
```
74
+
## TCP result highlights
71
75
72
-
- The`Cwnd` column prints the control window size and corresponds to the allowed number of TCP transactions in flight before receiving an acknowledgment `ACK` from the server. This adjusts dynamically to not overwhelm the receiver and adjust for variable link connection strengths.
76
+
- The`Cwnd` column prints the control window size and corresponds to the allowed number of TCP transactions in flight before receiving an acknowledgment `ACK` from the server. This value grows as the connection stabilizes and adapts to link quality.
73
77
74
-
- The `CPU Utilization` row shows both the usage on the sender and receiver. If you are migrating your workload to a different platform, such as from x86 to Arm, there may be variations.
78
+
- The `CPU Utilization` row shows both the usage on the sender and receiver. If you are migrating your workload to a different platform, such as from x86 to Arm, this is a useful metric.
75
79
76
-
- The `snd_tcp_congestion cubic`abd`rcv_tcp_congestion cubic` variables show the congestion control algorithm used.
80
+
- The `snd_tcp_congestion cubic`and`rcv_tcp_congestion cubic` variables show the congestion control algorithm used.
77
81
78
-
-This `bitrate` shows the throughput achieved under this microbenchmark. As you can see, the 5 Gbps bandwidth available to the `t4g.xlarge` AWS instance is saturated.
82
+
-`Bitrate` shows the throughput achieved. In this example, the the `t4g.xlarge` AWS instance saturates its 5 Gbps bandwidth available.
You can also microbenchmark the `UDP` protocol with the `-u` flag. As a reminder, UDP does not guarantee packet delivery with some packets being lost. As such you need to observe the statistics on the server side to see the percent of packets lost and the variation in packet arrival time (jitter). The UDP protocol is widely used in applications that need timely packet delivery, such as online gaming and video calls.
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/microbenchmark-network-iperf3/setup.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,5 @@
1
1
---
2
-
title: Set up Arm-Based Linux systems for network performance testing with iPerf3
2
+
title: Set up Arm-based Linux systems for network performance testing with iPerf3
3
3
weight: 2
4
4
5
5
### FIXED, DO NOT MODIFY
@@ -19,16 +19,16 @@ The setup instructions below use AWS EC2 instances connected within a Virtual Pr
19
19
20
20
To get started, create two Arm-based Linux instances, with each instance serving one role:
21
21
22
-
* One acts as a server
23
-
* One acts as a client
22
+
* One acting as a server
23
+
* One acting as a client
24
24
25
25
The instructions below use two `t4g.xlarge` instances running Ubuntu 24.04 LTS.
26
26
27
27
## Install software dependencies
28
28
29
29
Use the commands below to install iPerf3, which is a powerful open-source CLI tool for measuring maximum achievable network bandwidth.
30
30
31
-
Install `iperf3` on both the client and server systems:
31
+
Begin by installing iPerf3 on both the client and server systems:
32
32
33
33
```bash
34
34
sudo apt update
@@ -43,7 +43,7 @@ If you're prompted to run `iperf3` as a daemon, answer "no".
43
43
44
44
If you're working in a cloud environment like AWS, you must update the default security rules to enable specific inbound and outbound protocols.
45
45
46
-
From the AWS console:
46
+
Using the AWS console, follow these instructions:
47
47
48
48
* Navigate to the **Security** tab for each instance.
49
49
* Edit the **Inbound rules** to allow the following protocols:
@@ -77,7 +77,7 @@ ifconfig
77
77
78
78
### On the client
79
79
80
-
Add the server's IP address and assign it with name `SERVER`:
80
+
Add the server's IP address and assign it the name `SERVER`:
81
81
82
82
```output
83
83
127.0.0.1 localhost
@@ -103,15 +103,15 @@ Add the client's IP address and assign it the name `CLIENT`:
103
103
104
104
## Confirm server is reachable
105
105
106
-
Finally, confirm the client can reach the server with the ping command below. As a reference you can also ping the localhost.
106
+
Finally, confirm the client can reach the server by using the ping command below. As a reference, you can also ping the localhost.
107
107
108
108
```bash
109
109
ping SERVER -c 3 && ping 127.0.0.1 -c 3
110
110
```
111
111
112
112
The output below shows that both SERVER and localhost (127.0.0.1) are reachable.
113
113
114
-
Localhost response times are typically ~10× faster than remote systems. Actual values will vary based on system location and network conditions.
114
+
Localhost response times are typically ~10× faster than remote systems, though actual values will vary based on system location and network conditions.
115
115
116
116
```output
117
117
PING SERVER (10.248.213.104) 56(84) bytes of data.
0 commit comments