Erhöhen der Priorität von Netzwerkschnittstellen-Interrupts unter Ubuntu 22 Low-Latency-Kernel 5.15

Erhöhen der Priorität von Netzwerkschnittstellen-Interrupts unter Ubuntu 22 Low-Latency-Kernel 5.15

Ich verwende Ubuntu 18 auf mehreren Servern mit dem Low-Latency-Kernel.

Bisher habe ich chrtdie Priorität von Interrupt-Threads für die Interrupts erhöht, die mit einer bestimmten Netzwerkschnittstelle in Zusammenhang stehen.

Jetzt, bei Neuinstallationen von Ubuntu 22 mit dem Kernel mit geringer Latenz, sehe ich die Interrupts für die Netzwerkkarten, die als Threads ausgeführt werden, nicht mehr und kann daher die Priorität dieser mit chrt nicht erhöhen.

Was hat sich geändert und gibt es eine Möglichkeit, die Interrupt-Priorität der Netzwerkkarte unter Ubuntu 22 mit Low-Latenct-Kernel zu erhöhen?

Der Grund dafür ist, dass ich mehrere Instanzen einer Anwendung habe, die kleine Datenmengen in einem 10-ms-Intervall mit anderen Computern synchronisiert und dabei keine Verzögerung auftreten darf.

Ich fandDasInformationen für UbuntuStudio (obwohl es schon etwas älter ist, von 2014) über dieAbonnierenKernel-Parameter, und ich habe bestätigt, dass der Kernel auf meinen neueren Servern mit erstellt wird CONFIG_IRQ_FORCED_THREADING=y, aber nicht mit CONFIG_IRQ_FORCED_THREADING_DEFAULT=yund nicht CONFIG_CMDLINE_BOOL=yund CONFIG_CMDLINE="threadirqs".

Ist es so einfach wie das Booten des Kernels mit demAbonnierenParameter, und wenn ja, wann und warum wurde der Kernel mit niedriger Latenz geändert, so dass er nicht mehr mitAbonnierenstandardmäßig?


Einzelheiten

Die Server, auf denen meinevorherige Lösung funktioniertFühren Sie Ubuntu 18.04.3 LTS mit Kernel 4.15.0-123-lowlatency aus.

Mit diesen Schritten erhöhe ich die Priorität der Netzwerkschnittstellen-Interrupts:

  1. Ich führe aus grep eno1 /proc/interrupts, um die Liste der Interrupts für die Netzwerkschnittstelle zu erhalteneno1

Ausgabe:

  46:      19627  486510106 1600726600  752055110 1667993661 1758831968 1471240837  895245906  658188895  458440425  918559817 1494584384 1650824561 1492836078 1214143068  920349210  IR-PCI-MSI 5767169-edge      i40e-eno1-TxRx-0
  47:  782983498 3867361290 1350470347 1488832628 1644524179 1306935370 2202471485  885906069  266079923  769050734  767000710 1199122348 1933889985 2475859304  880359145 1207562098  IR-PCI-MSI 5767170-edge      i40e-eno1-TxRx-1
  48:  487247958  557149515 2436993704 1327150410 2327637329 1692350382 1160439225 1234994234  425076063  640500055 1555726813 1469038634 2133556615 1260984085 1076406628 1141316582  IR-PCI-MSI 5767171-edge      i40e-eno1-TxRx-2
  49: 1143028283  802247216  842065588 1507113921 1450442442 1285188073 1414989498 1386700444  961900607  949612962 1176201048  996374473 1392801596 1501055021 1244839988 1568153886  IR-PCI-MSI 5767172-edge      i40e-eno1-TxRx-3
  50:  668676162  585775185  627035622  560691459  545566733  534335154  675644369  619390835  602253370  611090233  610683285  552978104  558929823  827257425  555723069  751315724  IR-PCI-MSI 5767173-edge      i40e-eno1-TxRx-4
  51:  293791983  293018539  290310300  284911609  302624294  171231086  295128963  277943781  299153596  305718023  306559090  265176440  265877422  330072276  275946899  322208126  IR-PCI-MSI 5767174-edge      i40e-eno1-TxRx-5
  52:  191406211  164689451  184092472  163124351  197416416  147238980  150711931  166047824  174857188  176597379  163302040  163989899  169136092  206831749  154774311  195388230  IR-PCI-MSI 5767175-edge      i40e-eno1-TxRx-6
  53:  154062755  152443945  151052334  133925954  161462702  130698860  164068832   88730046  146570114  152839498  140082079  134023798  139525722  178502808  136857972  164157076  IR-PCI-MSI 5767176-edge      i40e-eno1-TxRx-7
  54:  689819152  457848749 1706899545 1350792167 1009016882  750940295 1280794513 1964042727 4293839311  604650430 1394985726 1390827662 1403478542 1032557167 1258596213 1421573353  IR-PCI-MSI 5767177-edge      i40e-eno1-TxRx-8
  55:  561179546 1569329752 1142403865 1952025068 1831162021 1786111309 1819812537 1726432246  809350013 3510981566 1252176327 1188689474 2184195381 1689746731 1808756473 1998075218  IR-PCI-MSI 5767178-edge      i40e-eno1-TxRx-9
  60:  922953009  535440685 1433001681 1370014373 1542680223 1564958146 1905615201 2245129577  606607580  751437652  653813572 1648944839 1339662143 2748851364 1328493925 2197584768  IR-PCI-MSI 5767179-edge      i40e-eno1-TxRx-10
  61:  915173255  898646194  818454435  975220367 1436058787 1258590833 1222669978 1475644158  955884853 1048337605 1028501060 1229229809 1375764724 1619404100 1174614194 1626915747  IR-PCI-MSI 5767180-edge      i40e-eno1-TxRx-11
  62:  663129689  560699700  659990638  564915959  716701151  537167244  709668792  653540652  643175469  609563694  657141242  551578294  496276894  826134713  584425798  782807812  IR-PCI-MSI 5767181-edge      i40e-eno1-TxRx-12
  63:  301178832  272290237  297349011  271058986  300930906  219283819  308344403  269722445  297793600  300198211  271567742  257075242  257586638  275439840  258617424  331559250  IR-PCI-MSI 5767182-edge      i40e-eno1-TxRx-13
  64:  161271542  160600034  162911736  135003940  159159336  126317895  145054883  142236108  153342852  158784173  149385736  130987700  145150304  179008100  100121849  168255307  IR-PCI-MSI 5767183-edge      i40e-eno1-TxRx-14
  65:  174086138  162484310  163432318  142315712  164872478  136966716  168251078  137840006  150045153  156520410  143270315  134481889  152034193  184135755  140295604  167224365  IR-PCI-MSI 5767184-edge      i40e-eno1-TxRx-15
  1. Ich führe aus ps -el | grep irq, um die PID für jeden IRQ-Thread zu finden füreno1

Ausgabe: (Ich zeige nur die relevanten Zeilen, die den IRQs 46-65 entsprechen, es gibt noch viel mehr)

1 R     0  1255     2  1   9   - -     0 -      ?        6-01:09:56 irq/46-i40e-eno
1 S     0  1256     2  1   9   - -     0 -      ?        5-13:32:39 irq/47-i40e-eno
1 S     0  1257     2  0   9   - -     0 -      ?        5-04:09:18 irq/48-i40e-eno
1 S     0  1259     2  0   9   - -     0 -      ?        3-12:50:35 irq/49-i40e-eno
1 S     0  1261     2  0   9   - -     0 -      ?        1-19:03:44 irq/50-i40e-eno
1 S     0  1262     2  0   9   - -     0 -      ?        19:55:05 irq/51-i40e-eno
1 S     0  1263     2  0   9   - -     0 -      ?        11:48:06 irq/52-i40e-eno
1 S     0  1264     2  0   9   - -     0 -      ?        09:59:36 irq/53-i40e-eno
1 S     0  1265     2  0   9   - -     0 -      ?        5-09:23:00 irq/54-i40e-eno
1 S     0  1266     2  0   9   - -     0 -      ?        4-19:20:49 irq/55-i40e-eno
1 S     0  1267     2  0   9   - -     0 -      ?        4-19:24:25 irq/60-i40e-eno
1 S     0  1268     2  0   9   - -     0 -      ?        3-10:21:49 irq/61-i40e-eno
1 S     0  1269     2  0   9   - -     0 -      ?        1-20:29:13 irq/62-i40e-eno
1 S     0  1270     2  0   9   - -     0 -      ?        19:24:51 irq/63-i40e-eno
1 S     0  1271     2  0   9   - -     0 -      ?        10:11:11 irq/64-i40e-eno
1 S     0  1273     2  0   9   - -     0 -      ?        10:31:14 irq/65-i40e-eno
  1. Für jeden der IRQ-Threads für diese Netzwerkschnittstelle führe ich aus, chrt -p 80 <thread-pid>z. B. chrt -p 80 1255für IRQ/46.

Ich verwende tatsächlich eine Kombination aus grep, awk und xargs, um diese drei Schritte in einem auszuführen:

grep $NIC /proc/interrupts \
    | awk '{print substr($1, 0, length($1) - 1);}' \
    | xargs -I% sh -c "ps -e | grep irq/%-" \
    | awk '{print $1;}' \
    | xargs -I% sh -c "echo irq PID %; chrt -p 80 %"
me@myserver:~$ grep CONFIG_IRQ_FORCED_THREADING /boot/config-4.15.0-123-lowlatency
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_IRQ_FORCED_THREADING_DEFAULT=y

me@myserver:~$ grep CONFIG_CMDLINE /boot/config-4.15.0-123-lowlatency
CONFIG_CMDLINE_PARTITION=y
# CONFIG_CMDLINE_BOOL is not set

Die neueren Serverwo diese Lösung nicht funktioniertFühren Sie Ubuntu 22.04.2 LTS mit Kernel 5.15.0-79-lowlatency aus.

Die Ergebnisse der ersten beiden Schritte:

  1. grep eno4 /proc/interrupts

Ausgabe:

 240:          1          0          0          0          0          0          0          0          0          0          0          0          0          0 1030184410          0  IR-PCI-MSI 5249025-edge      i40e-eno4-TxRx-0
 241:          0          0          0          0          0          0          0          0          0          0          0          0 1342657199          0          0          0  IR-PCI-MSI 5249026-edge      i40e-eno4-TxRx-1
 242:          0          0          1 1007985709          0          0          0          0          0          0          0          0          0          0          0          0  IR-PCI-MSI 5249027-edge      i40e-eno4-TxRx-2
 243:          0  995307412          0         21          0          0          0          0          0          0          0          0          0          0          0          0  IR-PCI-MSI 5249028-edge      i40e-eno4-TxRx-3
 244:          0          0          0          0         16          0 1231037185          0          0          0          0          0          0          0          0          0  IR-PCI-MSI 5249029-edge      i40e-eno4-TxRx-4
 245:          0          0          0          0  782521466          0          0          0          0          0          0          0          0          0          0          0  IR-PCI-MSI 5249030-edge      i40e-eno4-TxRx-5
 246: 1035173010          0          0          0          0          0          2          0          0          0          0          0          0          0          0          0  IR-PCI-MSI 5249031-edge      i40e-eno4-TxRx-6
 247:          0          0          0          0          0          0          0          0          0          0          0  930082293          0          0          0          0  IR-PCI-MSI 5249032-edge      i40e-eno4-TxRx-7
 248:          0          0          0          0          0          0          0  762559502          1          0          0          0          0          0          0          0  IR-PCI-MSI 5249033-edge      i40e-eno4-TxRx-8
 249:          0          0          0          0          0          0          0          0          0          0          0          0          0          0  793943748          0  IR-PCI-MSI 5249034-edge      i40e-eno4-TxRx-9
 250:          0          0          0          0          0          0          0          0          0          0         12          0  998551326          0          0          0  IR-PCI-MSI 5249035-edge      i40e-eno4-TxRx-10
 251:          0          0          0          0          0          0          0          0          0          0  975747642          1          0          0          0          0  IR-PCI-MSI 5249036-edge      i40e-eno4-TxRx-11
 252:          0 1342889081          0          0          0          0          0          0          0          0          0          0        216          0          0          0  IR-PCI-MSI 5249037-edge      i40e-eno4-TxRx-12
 253:          0          0          0          0          0          0          0          0          0          0          0          0          0         14          0  818489097  IR-PCI-MSI 5249038-edge      i40e-eno4-TxRx-13
 254:          0          0          0          0 1177974058          0          0          0          0          0          0          0          0          0          0          0  IR-PCI-MSI 5249039-edge      i40e-eno4-TxRx-14
 255:          0          0  942945250          0          0          0          0          0          0          0          0          0          0          0          0         27  IR-PCI-MSI 5249040-edge      i40e-eno4-TxRx-15
  1. ps -el | grep irq

Ausgabe:

1 S     0      14       2  0  70 -10 -     0 -      ?        00:06:33 ksoftirqd/0
1 S     0      23       2  0  70 -10 -     0 -      ?        00:14:18 ksoftirqd/1
1 S     0      29       2  0  70 -10 -     0 -      ?        00:30:44 ksoftirqd/2
1 S     0      35       2  0  70 -10 -     0 -      ?        00:03:54 ksoftirqd/3
1 S     0      41       2  0  70 -10 -     0 -      ?        00:09:49 ksoftirqd/4
1 S     0      47       2  0  70 -10 -     0 -      ?        00:02:08 ksoftirqd/5
1 S     0      53       2  0  70 -10 -     0 -      ?        00:06:32 ksoftirqd/6
1 S     0      59       2  0  70 -10 -     0 -      ?        00:05:31 ksoftirqd/7
1 S     0      65       2  0  70 -10 -     0 -      ?        00:03:34 ksoftirqd/8
1 S     0      71       2  0  70 -10 -     0 -      ?        00:00:29 ksoftirqd/9
1 S     0      77       2  0  70 -10 -     0 -      ?        00:04:11 ksoftirqd/10
1 S     0      83       2  0  70 -10 -     0 -      ?        00:02:47 ksoftirqd/11
1 S     0      89       2  0  70 -10 -     0 -      ?        00:13:01 ksoftirqd/12
1 S     0      95       2  0  70 -10 -     0 -      ?        00:01:02 ksoftirqd/13
1 S     0     101       2  0  70 -10 -     0 -      ?        00:06:02 ksoftirqd/14
1 S     0     107       2  0  70 -10 -     0 -      ?        00:06:08 ksoftirqd/15
1 I     0     197       2  0  60 -20 -     0 -      ?        00:00:00 vfio-irqfd-clea
4 S     0     924       1  0  80   0 - 20764 -      ?        00:10:46 irqbalance

Parameter zum Erstellen des Kernels:

me@myserver:~$ grep CONFIG_IRQ_FORCED_THREADING /boot/config-5.15.0-79-lowlatency
CONFIG_IRQ_FORCED_THREADING=y

me@myserver:~$ grep CONFIG_CMDLINE_ /boot/config-5.15.0-79-lowlatency
# CONFIG_CMDLINE_BOOL is not set
CONFIG_CMDLINE_PARTITION=y

verwandte Informationen