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
To further optmize your settings, you can set the NIC queue count and observe the performance uplift:
9
+
## Overview
11
10
12
-
Typically, the number of transmit/receive queues for network cards in bare-metal environments is relatively large, reaching 63 on Arm Neoverse. Each transmit/receive queue corresponds to one interrupt number. Before CPU cores are taken offline, there are sufficient cores to handle these interrupt numbers. However, when only 8 cores are retained, it results in a single core having to handle multiple interrupt numbers, thereby triggering more context switches.
11
+
After establishing a baseline, you can further improve throughput and latency by tuning your network interface controller (NIC) queue count. Many bare‑metal NICs expose a relatively large number of transmit/receive queues (multi‑queue). Each queue maps to an interrupt; when you limit the server to a small number of online CPUs (for example, 8 cores), too many interrupts can land on the same core and increase context switching. Reducing the number of queues to match available CPUs can stabilize performance on Arm Neoverse systems.
13
12
14
-
### Setting NIC queue count
13
+
##Set the NIC queue count
15
14
16
-
1.Use the following command to find the NIC name corresponding to he IP address.
15
+
Use the following command to find the NIC name corresponding to the IP address:
17
16
```bash
18
17
ip addr
19
18
```
20
-
From the output you can see that the NIC name `enp1s0f0np0` corresponds to the IP address `10.169.226.181`.
19
+
From the output you can see that the NIC name `enp1s0f0np0` corresponds to the IP address `10.169.226.181`:
21
20
```output
22
21
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
Queue settings applied with `ethtool -L` are not persistent across reboots. If needed, make the change persistent using a systemd unit or your distro’s NIC configuration mechanism.
86
+
{{% /notice %}}
95
87
96
-
Notice the performance uplift after tuning the NIC queue count:
97
-
```output
98
-
Thread Stats Avg Stdev Max +/- Stdev
99
-
Latency 8.35s 4.14s 16.33s 61.16%
100
-
Req/Sec 2.96k 73.02 3.24k 89.16%
101
-
22712999 requests in 1.00m, 11.78GB read
102
-
Requests/sec: 378782.37
103
-
Transfer/sec: 201.21MB
104
-
```
88
+
## Measure performance after tuning
89
+
90
+
Restart Tomcat on your Arm Neoverse bare‑metal instance:
If performance improves and latency stabilizes, keep the adjusted queue count for subsequent tuning steps (RSS/RPS/XPS, IRQ affinity, and NUMA locality).
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/tune-network-workloads-on-bare-metal/4_local-numa.md
+26-16Lines changed: 26 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,19 +6,20 @@ weight: 5
6
6
layout: learningpathall
7
7
---
8
8
9
-
## Tuning via local (Non-Uniform Memory Access) NUMA
10
-
In this section you will learn how to configure local NUMA and assess performance uplift acheieved through tuning.
9
+
## Tune with local NUMA (Non-Uniform Memory Access)
11
10
12
-
Typically, cross-NUMA data transfers within the CPU incur higher latency than intra-NUMA transfers. Therefore, Tomcat should be deployed on the NUMA node where the network interface resides.
11
+
In this section, you configure local NUMA and assess the performance uplift achieved through tuning. Cross‑NUMA data transfers generally incur higher latency than intra‑NUMA transfers, so Tomcat should be deployed on the NUMA node where the network interface resides to reduce cross‑node memory traffic and improve throughput and latency.
13
12
14
-
### Setting local NUMA
13
+
### Configure local NUMA
14
+
15
+
Check NUMA topology and relative latencies:
15
16
16
-
1. Use the following command to check that the latency for cross-NUMA transfers is greater than the latency for intra-NUMA transfers:
17
17
```bash
18
18
numactl -H
19
19
```
20
20
21
-
It can be observed that the cross-NUMA latency to intra-NUMA latency ratio is 10:100.
21
+
You should see that cross‑NUMA latency is higher than intra‑NUMA latency (for example, 10:100):
22
+
22
23
```output
23
24
available: 2 nodes (0-1)
24
25
node 0 cpus: 0 1 2 3 4 5 6 7
@@ -33,28 +34,34 @@ node 0 1
33
34
1: 100 10
34
35
```
35
36
36
-
2. Use the following command to check the NUMA node where the ${net} network interface resides.
37
+
Identify the NUMA node for your network interface (using the `${net}` variable defined earlier):
38
+
37
39
```bash
38
40
cat /sys/class/net/${net}/device/numa_node
39
41
```
40
-
You will notice that the NUMA node where the ${net} network interface resides is 1.
42
+
43
+
Example output (NIC on NUMA node 1):
44
+
41
45
```output
42
46
1
43
47
```
44
48
45
-
3. As a result, allocate the reserved 8 cores to NUMA node 1.
49
+
Allocate the eight reserved cores to the NIC’s NUMA node (the example below keeps CPUs 96–103 online on node 1 and offlines the rest):
0 commit comments