Ubuntu 22 低遅延カーネル 5.15 でネットワーク インターフェイス割り込みの優先度を上げる

Ubuntu 22 低遅延カーネル 5.15 でネットワーク インターフェイス割り込みの優先度を上げる

低遅延カーネルを使用して、複数のサーバーで Ubuntu 18 を実行しています。

chrt以前は、特定のネットワーク インターフェイスに関連する割り込みの割り込みスレッドの優先度を上げるために使用していました。

現在、低遅延カーネルを使用した Ubuntu 22 の新規インストールでは、スレッドとして実行されているネットワーク カードの割り込みが表示されなくなり、chrt を使用してそれらの優先度を上げることができなくなります。

何が変わったのでしょうか? また、lowlatenct カーネルを搭載した Ubuntu 22 でネットワーク カードの割り込み優先度を上げる方法はありますか?

これを実行する理由は、遅延してはならない 10 ミリ秒間隔で他のコンピューターと少量のデータを同期するアプリケーションのインスタンスが複数あるためです。

私は見つけたこれUbuntuStudioに関する情報(2014年のものですが、少し古いです)スレッドIRQカーネル パラメータを調べてみると、新しいサーバ上のカーネルは でビルドされているがCONFIG_IRQ_FORCED_THREADING=y、とCONFIG_IRQ_FORCED_THREADING_DEFAULT=yではビルドされていないことが確認されています。CONFIG_CMDLINE_BOOL=yCONFIG_CMDLINE="threadirqs"

カーネルを起動するだけでスレッドIRQパラメータもしそうなら、いつ、なぜ低レイテンシカーネルが起動しないように変更されたのか?スレッドIRQデフォルトですか?


詳細

私のサーバー以前のソリューションは機能するUbuntu 18.04.3 LTS、カーネル4.15.0-123-lowlatencyを実行

ネットワーク インターフェイス割り込みの優先度を上げるために使用する手順は次のとおりです。

  1. grep eno1 /proc/interruptsネットワークインターフェースの割り込みリストを取得するために実行しますえの1

出力:

  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. ps -el | grep irq各irqスレッドのpidを見つけるために実行しますえの1

出力: (IRQ 46-65 に一致する関連行のみを表示していますが、他にもたくさんあります)

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. このネットワーク インターフェイスの各 irq スレッドに対して、chrt -p 80 <thread-pid>たとえばchrt -p 80 1255irq/46 を実行します。

実際には、grep、awk、xargs を組み合わせて使用​​し、これら 3 つの手順を 1 つで実行します。

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

新しいサーバーこの解決策が機能しない場合カーネル5.15.0-79-lowlatencyでUbuntu 22.04.2 LTSを実行する

最初の 2 つのステップの結果:

  1. grep eno4 /proc/interrupts

出力:

 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

出力:

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

カーネルビルドパラメータ:

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

関連情報