Skip to content

Commit cabe28b

Browse files
authored
Update virtual-network-optimize-network-bandwidth.md
Improving scorecard
1 parent ea99d9a commit cabe28b

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

articles/virtual-network/virtual-network-optimize-network-bandwidth.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Azure virtual machines (VMs) have default network settings that can be further o
1919

2020
If your Windows VM supports *accelerated networking*, enable that feature for optimal throughput. For more information, see [Create a Windows VM with accelerated networking](create-vm-accelerated-networking-powershell.md).
2121

22-
For all other Windows VMs, using Receive Side Scaling (RSS) can reach higher maximal throughput than a VM without RSS. RSS might be disabled by default in a Windows VM. To determine whether RSS is enabled, and enable it if it's currently disabled, follow these steps:
22+
For all other Windows VMs, using Receive Side Scaling (RSS) can reach higher maximal throughput than a VM without RSS. RSS might be disabled by default in a Windows VM. To check if RSS is enabled and enable it, follow these steps:
2323

2424
1. See if RSS is enabled for a network adapter with the [Get-NetAdapterRss](/powershell/module/netadapter/get-netadapterrss) PowerShell command. In the following example, output returned from the `Get-NetAdapterRss` RSS isn't enabled.
2525

@@ -53,7 +53,7 @@ RSS is always enabled by default in an Azure Linux VM. Linux kernels released si
5353

5454
The Ubuntu on Azure kernel is heavily optimized for excellent network performance on Azure. Currently, all Ubuntu images by Canonical come by default with the optimized Azure kernel installed.
5555

56-
Use the following command to make sure that you're using the Azure kernel, which is identified by `-azure` at the end of the version.
56+
Use the following command to make sure that you're using the Azure kernel, which has `-azure` at the end of the version.
5757

5858
```bash
5959
uname -r
@@ -91,9 +91,9 @@ Most modern distributions should have significant improvements with kernels newe
9191

9292
## Optimizing cross-region transfer speeds in Azure Linux VMs
9393

94-
Azure Linux VMs often experience network performance issues, particularly when transferring large files (1GB to 50GB) between regions, such as West Europe and West US. These issues are caused by generic kernel configurations, network buffer settings, and default congestion control algorithms, which result in delayed packets, limited throughput, and inefficient resource usage.
94+
Azure Linux VMs often experience network performance issues, particularly when transferring large files (1 GB to 50 GB) between regions, such as West Europe and West US. These issues are caused by generic kernel configurations, network buffer settings, and default congestion control algorithms, which result in delayed packets, limited throughput, and inefficient resource usage.
9595

96-
To enhance network performance, consider implementing the following optimizations that have been proven effective in a number of situations on Azure:
96+
To enhance network performance, consider implementing the following optimizations that are proven effective in many situations on Azure:
9797

9898
- **Network buffer settings**: Adjust kernel parameters to maximize read and write memory buffers. Add these configurations to `/etc/sysctl.d/99-azure-network-buffers.conf`:
9999

@@ -112,7 +112,7 @@ net.core.busy_poll = 50
112112
net.core.busy_read = 50
113113
```
114114

115-
- **Congestion control for kernels 4.19+**: Enabling BBR congestion control can often result in better throughput. Add this configuration to `/etc/sysctl.d/99-azure-congestion-control.conf`:
115+
- **Congestion control for kernels 4.19+**: Enabling Bottleneck Bandwidth and Round-trip propagation time (BBR) congestion control can often result in better throughput. Add this configuration to `/etc/sysctl.d/99-azure-congestion-control.conf`:
116116

117117
```plaintext
118118
net.ipv4.tcp_congestion_control = bbr
@@ -145,13 +145,13 @@ net.core.netdev_max_backlog = 32768
145145
net.core.dev_weight = 64
146146
````
147147

148-
- **Queue discipline (qdisc)**: Packet processing in Azure is generally improved by setting the default qdisc to `fq`. Add this configuration to `/etc/sysctl.d/99-azure-qdisc.conf`:
148+
- **Queue discipline (qdisc)**: Packet processing in Azure is improved by setting the default qdisc to `fq`. Add this configuration to `/etc/sysctl.d/99-azure-qdisc.conf`:
149149

150150
```plaintext
151151
net.core.default_qdisc = fq
152152
```
153153

154-
- **Optimize NIC ring buffers for TX/RX**: Create a udev rule in `/etc/udev/rules.d/99-azure-ring-buffer.rules` to ensure they are applied to network interfaces:
154+
- **Optimize NIC ring buffers for TX/RX**: Create an udev rule in `/etc/udev/rules.d/99-azure-ring-buffer.rules` to ensure they're applied to network interfaces:
155155

156156
````plaintext
157157
# Setup Accelerated Interface ring buffers (Mellanox / Mana)
@@ -161,20 +161,20 @@ SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION=="add", RUN+="/usr/sbin/ethtool -G
161161
SUBSYSTEM=="net", DRIVERS=="hv_netvsc*", ACTION=="add", RUN+="/usr/sbin/ethtool -G $env{INTERFACE} rx 1024 tx 1024"
162162
````
163163

164-
- Create a udev rule in `/etc/udev/rules.d/99-azure-qdisc.rules` to ensure the qdisc is applied to network interfaces:
164+
- Create an udev rule in `/etc/udev/rules.d/99-azure-qdisc.rules` to ensure the qdisc is applied to network interfaces:
165165

166166
```plaintext
167167
ACTION=="add|change", SUBSYSTEM=="net", KERNEL=="enP*", PROGRAM="/sbin/tc qdisc replace dev \$env{INTERFACE} root noqueue"
168168
ACTION=="add|change", SUBSYSTEM=="net", KERNEL=="eth*", PROGRAM="/sbin/tc qdisc replace dev \$env{INTERFACE} root fq“
169169
```
170170

171-
- **IRQ scheduling**: Depending on your workload, you may wish to restrict the irqbalance service from scheduling IRQs on certain nodes. Update `/etc/default/irqbalance` to specify which CPUs should not have IRQs scheduled:
171+
- **Interrupt Request (IRQ) scheduling**: Depending on your workload, you may wish to restrict the irqbalance service from scheduling IRQs on certain nodes. Update `/etc/default/irqbalance` to specify which CPUs shouldn't have IRQs scheduled:
172172

173173
```bash
174174
IRQBALANCE_BANNED_CPULIST=0-2
175175
```
176176

177-
- **udev rules**: Add rules to optimize queue length and manage device flags efficiently. Create the following rule in `/etc/udev/rules.d/99-azure-txqueue-len.rules`:
177+
- **UDEV rules**: Add rules to optimize queue length and manage device flags efficiently. Create the following rule in `/etc/udev/rules.d/99-azure-txqueue-len.rules`:
178178

179179
```plaintext
180180
SUBSYSTEM=="net", ACTION=="add|change", KERNEL=="eth*", ATTR{tx_queue_len}="10000“
@@ -189,7 +189,7 @@ When it comes to Linux performance networking we use SR-IOV with Mellanox driver
189189

190190
System administrators can implement these solutions by editing configuration files such as `/etc/sysctl.d/`, `/etc/modules-load.d/`, and `/etc/udev/rules.d/`. Ensure that kernel driver updates and systemd configurations are reviewed for potential regressions.
191191

192-
For further details on specific configurations and troubleshooting, refer to Azure documentation on networking performance.
192+
For more information on specific configurations and troubleshooting, refer to Azure documentation on networking performance.
193193

194194
## Related content
195195

0 commit comments

Comments
 (0)