Skip to content

Commit 1c922f3

Browse files
First pass content dev
1 parent 935f905 commit 1c922f3

File tree

1 file changed

+17
-21
lines changed
  • content/learning-paths/servers-and-cloud-computing/irq-tuning-guide

1 file changed

+17
-21
lines changed

content/learning-paths/servers-and-cloud-computing/irq-tuning-guide/patterns.md

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,26 @@ Network interrupt requests (IRQs) can be distributed across CPU cores in various
1414

1515
The following patterns have been tested on various systems and can be implemented using the provided scripts. An optimal pattern is suggested at the conclusion of this Learning Path, but your specific workload may benefit from a different approach.
1616

17-
### Patterns
17+
## Common IRQ distribution patterns
1818

19-
1. Default: IRQ pattern provided at boot.
20-
2. Random: All IRQs are assigned a core and do not overlap with network IRQs.
21-
3. Housekeeping: All IRQs outside of network IRQs are assigned to specific core(s).
22-
4. NIC IRQs are assigned to single or multiple ranges of cores, including pairs.
19+
Four main distribution strategies offer different performance characteristics:
2320

24-
### Scripts to change IRQ
21+
Default: uses the IRQ pattern provided at boot time by the Linux kernel
22+
Random: assigns all IRQs to cores without overlap with network IRQs
23+
Housekeeping: assigns all non-network IRQs to specific dedicated cores
24+
NIC-focused: assigns network IRQs to single or multiple ranges of cores, including pairs
25+
26+
## Scripts to implement IRQ management patterns
2527

2628
The scripts below demonstrate how to implement different IRQ management patterns on your system. Each script targets a specific distribution strategy:
2729

2830
Before running these scripts, identify your network interface name using `ip link show` and determine your system's CPU topology with `lscpu`. Always test these changes in a non-production environment first, as improper IRQ assignment can impact system stability.
2931

30-
To change the NIC IRQs or IRQs in general you can use the following scripts.
31-
32-
### Housekeeping
32+
## Housekeeping pattern
3333

34-
The housekeeping pattern isolates non-network IRQs to dedicated cores.
34+
The housekeeping pattern isolates non-network IRQs to dedicated cores, reducing interference with your primary workloads.
3535

36-
You need to add more to account for other IRQs on your system.
36+
Replace `#core range here` with your desired CPU range (for example: "0,3"):
3737

3838
```bash
3939
HOUSEKEEP=#core range here (example: "0,3")
@@ -43,13 +43,11 @@ for irq in $(awk '/ACPI:Ged/ {sub(":","",$1); print $1}' /proc/interrupts); do
4343
done
4444
```
4545

46-
### Paired core
46+
### Paired core pattern
4747

48-
The paired core assignment pattern distributes network IRQs across CPU core pairs for better cache coherency.
48+
The paired core assignment pattern distributes network IRQs across CPU core pairs for better cache coherency.
4949

50-
This is for pairs on a 16 vCPU machine.
51-
52-
You need to add the interface name.
50+
This example works for a 16 vCPU machine. Replace `#interface name` with your network interface (for example: "ens5"):
5351

5452
```bash
5553
IFACE=#interface name (example: "ens5")
@@ -68,13 +66,11 @@ for irq in "${irqs[@]}"; do
6866
done
6967
```
7068

71-
### Range assignment
72-
73-
The range assignment pattern assigns network IRQs to a specific range of cores.
69+
### Range assignment pattern
7470

75-
This will assign a specific core(s) to NIC IRQs only.
71+
The range assignment pattern assigns network IRQs to a specific range of cores, providing dedicated network processing capacity.
7672

77-
You need to add the interface name.
73+
Replace `#interface name` with your network interface (for example: "ens5"):
7874

7975
```bash
8076
IFACE=#interface name (example: "ens5")

0 commit comments

Comments
 (0)