Skip to content

Commit 9234b9e

Browse files
Updates
1 parent 58e7687 commit 9234b9e

File tree

2 files changed

+25
-21
lines changed

2 files changed

+25
-21
lines changed

content/learning-paths/servers-and-cloud-computing/microbenchmark-network-iperf3/basic-microbenchmarking.md

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@ weight: 3
66
layout: learningpathall
77
---
88

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
1010

11-
You can microbenchmark the bandwidth between the client and server.
11+
## Microbenchmark the TCP connection
1212

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:
1414

1515
```bash
1616
iperf3 -s
1717
```
1818

19-
You see the output, indicating the server is ready:
19+
This starts the server on the default TCP port 5201. You should see:
2020

2121
```output
2222
-----------------------------------------------------------
@@ -28,17 +28,20 @@ Server listening on 5201 (test #1)
2828
The default server port is 5201. Use the `-p` flag to specify another port if it is in use.
2929

3030
{{% 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:
3232
```bash
3333
sudo kill $(pgrep iperf3)
3434
```
3535
{{% /notice %}}
3636

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:
3840

3941
```bash
4042
iperf3 -c SERVER -V
4143
```
44+
Replace `SERVER` with your server’s IP address or hostname. The -V flag enables verbose output.
4245

4346
The output is similar to:
4447

@@ -68,18 +71,19 @@ rcv_tcp_congestion cubic
6871
6972
iperf Done.
7073
```
74+
## TCP result highlights
7175

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.
7377

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.
7579

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.
7781

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.
7983

80-
![instance-network-size](./instance-network-size.png)
84+
![instance-network-size#center](./instance-network-size.png "Instance network size")
8185

82-
### Microbenchmark UDP connection
86+
## UDP result highlights
8387

8488
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.
8589

content/learning-paths/servers-and-cloud-computing/microbenchmark-network-iperf3/setup.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
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
33
weight: 2
44

55
### FIXED, DO NOT MODIFY
@@ -19,16 +19,16 @@ The setup instructions below use AWS EC2 instances connected within a Virtual Pr
1919

2020
To get started, create two Arm-based Linux instances, with each instance serving one role:
2121

22-
* One acts as a server
23-
* One acts as a client
22+
* One acting as a server
23+
* One acting as a client
2424

2525
The instructions below use two `t4g.xlarge` instances running Ubuntu 24.04 LTS.
2626

2727
## Install software dependencies
2828

2929
Use the commands below to install iPerf3, which is a powerful open-source CLI tool for measuring maximum achievable network bandwidth.
3030

31-
Install `iperf3` on both the client and server systems:
31+
Begin by installing iPerf3 on both the client and server systems:
3232

3333
```bash
3434
sudo apt update
@@ -43,7 +43,7 @@ If you're prompted to run `iperf3` as a daemon, answer "no".
4343

4444
If you're working in a cloud environment like AWS, you must update the default security rules to enable specific inbound and outbound protocols.
4545

46-
From the AWS console:
46+
Using the AWS console, follow these instructions:
4747

4848
* Navigate to the **Security** tab for each instance.
4949
* Edit the **Inbound rules** to allow the following protocols:
@@ -77,7 +77,7 @@ ifconfig
7777

7878
### On the client
7979

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`:
8181

8282
```output
8383
127.0.0.1 localhost
@@ -103,15 +103,15 @@ Add the client's IP address and assign it the name `CLIENT`:
103103

104104
## Confirm server is reachable
105105

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.
107107

108108
```bash
109109
ping SERVER -c 3 && ping 127.0.0.1 -c 3
110110
```
111111

112112
The output below shows that both SERVER and localhost (127.0.0.1) are reachable.
113113

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.
115115

116116
```output
117117
PING SERVER (10.248.213.104) 56(84) bytes of data.
@@ -132,4 +132,4 @@ PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
132132
rtt min/avg/max/mdev = 0.022/0.027/0.032/0.004 ms
133133
```
134134

135-
Continue to the next section to learn how to measure the network bandwidth between the systems.
135+
Now that your systems are configured, you can move on to the next section to learn how to measure the network bandwidth between the systems.

0 commit comments

Comments
 (0)